@datagrok/bio 1.5.8 → 1.5.9
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/detectors.js +7 -7
- package/dist/package-test.js +37 -8
- package/dist/package.js +2 -4
- package/files/samples/testDemog.csv +5851 -0
- package/files/samples/testHelm.csv +6 -0
- package/files/samples/{id.csv → testId.csv} +0 -0
- package/files/samples/{sar-small.csv → testSmiles.csv} +0 -0
- package/package.json +1 -1
- package/src/tests/detectors-test.ts +42 -6
- package/src/utils/cell-renderer.ts +9 -12
- package/{test-Bio-34f75e5127b8-c4c5a3dc.html → test-Bio-34f75e5127b8-b47d4664.html} +4 -3
package/dist/package.js
CHANGED
|
@@ -4031,9 +4031,6 @@ function renderSequense(g, x, y, w, h, gridCell, cellStyle) {
|
|
|
4031
4031
|
g.restore();
|
|
4032
4032
|
}
|
|
4033
4033
|
class MacromoleculeSequenceCellRenderer extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_2__.GridCellRenderer {
|
|
4034
|
-
constructor() {
|
|
4035
|
-
super();
|
|
4036
|
-
}
|
|
4037
4034
|
get name() { return 'macromoleculeSequence'; }
|
|
4038
4035
|
get cellType() { return _constants__WEBPACK_IMPORTED_MODULE_0__.SEM_TYPES.Macro_Molecule; }
|
|
4039
4036
|
get defaultHeight() { return 30; }
|
|
@@ -4059,6 +4056,7 @@ class MacromoleculeSequenceCellRenderer extends datagrok_api_dg__WEBPACK_IMPORTE
|
|
|
4059
4056
|
let host = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_7__.div([], { style: { width: `${w}px`, height: `${h}px` } });
|
|
4060
4057
|
host.setAttribute('dataformat', 'helm');
|
|
4061
4058
|
host.setAttribute('data', gridCell.cell.value);
|
|
4059
|
+
gridCell.element = host;
|
|
4062
4060
|
//@ts-ignore
|
|
4063
4061
|
var canvas = new JSDraw2.Editor(host, { width: w, height: h, skin: "w8", viewonly: true });
|
|
4064
4062
|
var formula = canvas.getFormula(true);
|
|
@@ -10964,4 +10962,4 @@ function convertPanel(col) {
|
|
|
10964
10962
|
bio = __webpack_exports__;
|
|
10965
10963
|
/******/ })()
|
|
10966
10964
|
;
|
|
10967
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLEtBQUssRUFBRSxFQUdWOztBQUVWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRFQUE0RSxlQUFlO0FBQzNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJGQUEyRixlQUFlO0FBQzFHO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsK0RBQXFCO0FBQ3RELHdCQUF3QiwrREFBcUI7QUFDN0M7QUFDQSxrQkFBa0IsMEZBQWdCLGlCQUFpQixpR0FBdUI7QUFDMUU7QUFDQTtBQUNBLG1DQUFtQyxzRkFBaUI7QUFDcEQsbUNBQW1DLG9GQUFnQjtBQUNuRDtBQUNBO0FBQ0EsZ0VBQWdFLHVHQUE2QjtBQUM3RjtBQUNBO0FBQ0EsMEJBQTBCLGtFQUF3QjtBQUNsRCwyQkFBMkIsUUFBUSxHQUFHLFNBQVM7QUFDL0MsdUJBQXVCLHVEQUFhO0FBQ3BDLFlBQVksa0VBQXdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ2Q7QUFDUCxJQUFJLHVEQUFPO0FBQ1giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGJpb3dhc20vYWlvbGkvZGlzdC9haW9saS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL2FtaW5vYWNpZHMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcS1wYWxldHRlcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXIuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmQtcmVnaW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3NlcXVlbmNlLXNwYWNlLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy92aWV3ZXJzL2FjdGl2aXR5LWNsaWZmcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvd29ya2Vycy9kaW1lbnNpb25hbGl0eS1yZWR1Y2luZy13b3JrZXItY3JlYXRvci5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvZmFzdGVzdC1sZXZlbnNodGVpbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvamFyby13aW5rbGVyLXR5cGVzY3JpcHQvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jpby8uL3NyYy9zZXFfYWxpZ24udHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2F0b21pYy13b3Jrcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY2VsbC1yZW5kZXJlci50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY2hlbS1wYWxldHRlLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnZlcnQudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL211bHRpcGxlLXNlcXVlbmNlLWFsaWdubWVudC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9zZXF1ZW5jZS1hY3Rpdml0eS1jbGlmZnMudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLXNwYWNlLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy91dGlscy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlci50cyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvd3UvZGlzdC93dS5qcyIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiREdcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiZ3Jva1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJyeGpzXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInVpXCIiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gIChnbG9iYWwgPSBnbG9iYWwgfHwgc2VsZiwgZ2xvYmFsLkFpb2xpID0gZmFjdG9yeSgpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBuYW1lID0gXCJAYmlvd2FzbS9haW9saVwiO1xuICB2YXIgdmVyc2lvbiA9IFwiMi40LjAtcmMyXCI7XG4gIHZhciBkZXNjcmlwdGlvbiA9IFwiQSBmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIFdlYkFzc2VtYmx5LWJhc2VkIGdlbm9taWNzIHRvb2xzXCI7XG4gIHZhciBicm93c2VyID0gXCJkaXN0L2Fpb2xpLmpzXCI7XG4gIHZhciB3b3JrZXIgPSBcImRpc3QvYWlvbGkud29ya2VyLmpzXCI7XG4gIHZhciBtYWluID0gXCJhaW9saS5qc1wiO1xuICB2YXIgcmVwb3NpdG9yeSA9IHtcbiAgXHR0eXBlOiBcImdpdFwiLFxuICBcdHVybDogXCJnaXQraHR0cHM6Ly9naXRodWIuY29tL2Jpb3dhc20vYWlvbGkuZ2l0XCJcbiAgfTtcbiAgdmFyIGF1dGhvciA9IFwiUm9iZXJ0IEFib3VraGFsaWxcIjtcbiAgdmFyIGxpY2Vuc2UgPSBcIk1JVFwiO1xuICB2YXIgZGVwZW5kZW5jaWVzID0ge1xuICBcdGNvbWxpbms6IFwiXjQuMy4xXCIsXG4gIFx0XCJ3YXNtLWZlYXR1cmUtZGV0ZWN0XCI6IFwiXjEuMi4xMVwiXG4gIH07XG4gIHZhciBkZXZEZXBlbmRlbmNpZXMgPSB7XG4gIFx0XCJAcm9sbHVwL3BsdWdpbi1jb21tb25qc1wiOiBcIl4xMS4wLjFcIixcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWpzb25cIjogXCJeNC4xLjBcIixcbiAgXHRcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiOiBcIl43LjAuMFwiLFxuICBcdGN5cHJlc3M6IFwiXjguMC4wXCIsXG4gIFx0cm9sbHVwOiBcIl4xLjI5LjBcIixcbiAgXHRcInJvbGx1cC1wbHVnaW4tdGVyc2VyXCI6IFwiXjcuMC4yXCJcbiAgfTtcbiAgdmFyIHNjcmlwdHMgPSB7XG4gIFx0YnVpbGQ6IFwicm9sbHVwIC1jXCIsXG4gIFx0ZGV2OiBcInJvbGx1cCAtYyAtd1wiLFxuICBcdHRlc3Q6IFwiY3lwcmVzcyBydW5cIixcbiAgXHRcInRlc3Qtb3BlblwiOiBcImN5cHJlc3Mgb3BlblwiXG4gIH07XG4gIHZhciBmaWxlcyA9IFtcbiAgXHRcImRpc3RcIlxuICBdO1xuICB2YXIgcGtnID0ge1xuICBcdG5hbWU6IG5hbWUsXG4gIFx0dmVyc2lvbjogdmVyc2lvbixcbiAgXHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gIFx0YnJvd3NlcjogYnJvd3NlcixcbiAgXHR3b3JrZXI6IHdvcmtlcixcbiAgXHRtYWluOiBtYWluLFxuICBcdHJlcG9zaXRvcnk6IHJlcG9zaXRvcnksXG4gIFx0YXV0aG9yOiBhdXRob3IsXG4gIFx0bGljZW5zZTogbGljZW5zZSxcbiAgXHRkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llcyxcbiAgXHRkZXZEZXBlbmRlbmNpZXM6IGRldkRlcGVuZGVuY2llcyxcbiAgXHRzY3JpcHRzOiBzY3JpcHRzLFxuICBcdGZpbGVzOiBmaWxlc1xuICB9O1xuXG4gIC8qKlxyXG4gICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gICAqL1xyXG4gIGNvbnN0IHByb3h5TWFya2VyID0gU3ltYm9sKFwiQ29tbGluay5wcm94eVwiKTtcclxuICBjb25zdCBjcmVhdGVFbmRwb2ludCA9IFN5bWJvbChcIkNvbWxpbmsuZW5kcG9pbnRcIik7XHJcbiAgY29uc3QgcmVsZWFzZVByb3h5ID0gU3ltYm9sKFwiQ29tbGluay5yZWxlYXNlUHJveHlcIik7XHJcbiAgY29uc3QgdGhyb3dNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnRocm93blwiKTtcclxuICBjb25zdCBpc09iamVjdCA9ICh2YWwpID0+ICh0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmIHZhbCAhPT0gbnVsbCkgfHwgdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiO1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZSB0byBoYW5kbGUgb2JqZWN0cyBtYXJrZWQgdG8gcHJveHkuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlUcmFuc2ZlckhhbmRsZXIgPSB7XHJcbiAgICAgIGNhbkhhbmRsZTogKHZhbCkgPT4gaXNPYmplY3QodmFsKSAmJiB2YWxbcHJveHlNYXJrZXJdLFxyXG4gICAgICBzZXJpYWxpemUob2JqKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHBvcnQxLCBwb3J0MiB9ID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XHJcbiAgICAgICAgICBleHBvc2Uob2JqLCBwb3J0MSk7XHJcbiAgICAgICAgICByZXR1cm4gW3BvcnQyLCBbcG9ydDJdXTtcclxuICAgICAgfSxcclxuICAgICAgZGVzZXJpYWxpemUocG9ydCkge1xyXG4gICAgICAgICAgcG9ydC5zdGFydCgpO1xyXG4gICAgICAgICAgcmV0dXJuIHdyYXAocG9ydCk7XHJcbiAgICAgIH0sXHJcbiAgfTtcclxuICAvKipcclxuICAgKiBJbnRlcm5hbCB0cmFuc2ZlciBoYW5kbGVyIHRvIGhhbmRsZSB0aHJvd24gZXhjZXB0aW9ucy5cclxuICAgKi9cclxuICBjb25zdCB0aHJvd1RyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSAmJiB0aHJvd01hcmtlciBpbiB2YWx1ZSxcclxuICAgICAgc2VyaWFsaXplKHsgdmFsdWUgfSkge1xyXG4gICAgICAgICAgbGV0IHNlcmlhbGl6ZWQ7XHJcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSB7XHJcbiAgICAgICAgICAgICAgICAgIGlzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB2YWx1ZS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjayxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHsgaXNFcnJvcjogZmFsc2UsIHZhbHVlIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gW3NlcmlhbGl6ZWQsIFtdXTtcclxuICAgICAgfSxcclxuICAgICAgZGVzZXJpYWxpemUoc2VyaWFsaXplZCkge1xyXG4gICAgICAgICAgaWYgKHNlcmlhbGl6ZWQuaXNFcnJvcikge1xyXG4gICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHNlcmlhbGl6ZWQudmFsdWUubWVzc2FnZSksIHNlcmlhbGl6ZWQudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhyb3cgc2VyaWFsaXplZC52YWx1ZTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEFsbG93cyBjdXN0b21pemluZyB0aGUgc2VyaWFsaXphdGlvbiBvZiBjZXJ0YWluIHZhbHVlcy5cclxuICAgKi9cclxuICBjb25zdCB0cmFuc2ZlckhhbmRsZXJzID0gbmV3IE1hcChbXHJcbiAgICAgIFtcInByb3h5XCIsIHByb3h5VHJhbnNmZXJIYW5kbGVyXSxcclxuICAgICAgW1widGhyb3dcIiwgdGhyb3dUcmFuc2ZlckhhbmRsZXJdLFxyXG4gIF0pO1xyXG4gIGZ1bmN0aW9uIGV4cG9zZShvYmosIGVwID0gc2VsZikge1xyXG4gICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBjYWxsYmFjayhldikge1xyXG4gICAgICAgICAgaWYgKCFldiB8fCAhZXYuZGF0YSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHsgaWQsIHR5cGUsIHBhdGggfSA9IE9iamVjdC5hc3NpZ24oeyBwYXRoOiBbXSB9LCBldi5kYXRhKTtcclxuICAgICAgICAgIGNvbnN0IGFyZ3VtZW50TGlzdCA9IChldi5kYXRhLmFyZ3VtZW50TGlzdCB8fCBbXSkubWFwKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgbGV0IHJldHVyblZhbHVlO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLnNsaWNlKDAsIC0xKS5yZWR1Y2UoKG9iaiwgcHJvcCkgPT4gb2JqW3Byb3BdLCBvYmopO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcGF0aC5yZWR1Y2UoKG9iaiwgcHJvcCkgPT4gb2JqW3Byb3BdLCBvYmopO1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiR0VUXCIgLyogR0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmF3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIlNFVFwiIC8qIFNFVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRbcGF0aC5zbGljZSgtMSlbMF1dID0gZnJvbVdpcmVWYWx1ZShldi5kYXRhLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkFQUExZXCIgLyogQVBQTFkgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZS5hcHBseShwYXJlbnQsIGFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyByYXdWYWx1ZSguLi5hcmd1bWVudExpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcHJveHkodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvc2Uob2JqLCBwb3J0Mik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cmFuc2Zlcihwb3J0MSwgW3BvcnQxXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIlJFTEVBU0VcIiAvKiBSRUxFQVNFICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB7IHZhbHVlLCBbdGhyb3dNYXJrZXJdOiAwIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUocmV0dXJuVmFsdWUpXHJcbiAgICAgICAgICAgICAgLmNhdGNoKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBbdGhyb3dNYXJrZXJdOiAwIH07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC50aGVuKChyZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFt3aXJlVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gdG9XaXJlVmFsdWUocmV0dXJuVmFsdWUpO1xyXG4gICAgICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgd2lyZVZhbHVlKSwgeyBpZCB9KSwgdHJhbnNmZXJhYmxlcyk7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgLy8gZGV0YWNoIGFuZCBkZWFjdGl2ZSBhZnRlciBzZW5kaW5nIHJlbGVhc2UgcmVzcG9uc2UgYWJvdmUuXHJcbiAgICAgICAgICAgICAgICAgIGVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgY2xvc2VFbmRQb2ludChlcCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZXAuc3RhcnQpIHtcclxuICAgICAgICAgIGVwLnN0YXJ0KCk7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlbmRwb2ludCkge1xyXG4gICAgICByZXR1cm4gZW5kcG9pbnQuY29uc3RydWN0b3IubmFtZSA9PT0gXCJNZXNzYWdlUG9ydFwiO1xyXG4gIH1cclxuICBmdW5jdGlvbiBjbG9zZUVuZFBvaW50KGVuZHBvaW50KSB7XHJcbiAgICAgIGlmIChpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSlcclxuICAgICAgICAgIGVuZHBvaW50LmNsb3NlKCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHdyYXAoZXAsIHRhcmdldCkge1xyXG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoZXAsIFtdLCB0YXJnZXQpO1xyXG4gIH1cclxuICBmdW5jdGlvbiB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1JlbGVhc2VkKSB7XHJcbiAgICAgIGlmIChpc1JlbGVhc2VkKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGVcIik7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gY3JlYXRlUHJveHkoZXAsIHBhdGggPSBbXSwgdGFyZ2V0ID0gZnVuY3Rpb24gKCkgeyB9KSB7XHJcbiAgICAgIGxldCBpc1Byb3h5UmVsZWFzZWQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCB7XHJcbiAgICAgICAgICBnZXQoX3RhcmdldCwgcHJvcCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHByb3AgPT09IHJlbGVhc2VQcm94eSkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJFTEVBU0VcIiAvKiBSRUxFQVNFICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VFbmRQb2ludChlcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcm94eVJlbGVhc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCJ0aGVuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0aGVuOiAoKSA9PiBwcm94eSB9O1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkdFVFwiIC8qIEdFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gci50aGVuLmJpbmQocik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgWy4uLnBhdGgsIHByb3BdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQoX3RhcmdldCwgcHJvcCwgcmF3VmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1Byb3h5UmVsZWFzZWQpO1xyXG4gICAgICAgICAgICAgIC8vIEZJWE1FOiBFUzYgUHJveHkgSGFuZGxlciBgc2V0YCBtZXRob2RzIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYVxyXG4gICAgICAgICAgICAgIC8vIGJvb2xlYW4uIFRvIHNob3cgZ29vZCB3aWxsLCB3ZSByZXR1cm4gdHJ1ZSBhc3luY2hyb25vdXNseSDCr1xcXyjjg4QpXy/Cr1xyXG4gICAgICAgICAgICAgIGNvbnN0IFt2YWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJTRVRcIiAvKiBTRVQgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXRoLCBwcm9wXS5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICAgIH0sIHRyYW5zZmVyYWJsZXMpLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYXBwbHkoX3RhcmdldCwgX3RoaXNBcmcsIHJhd0FyZ3VtZW50TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICBpZiAobGFzdCA9PT0gY3JlYXRlRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRU5EUE9JTlRcIiAvKiBFTkRQT0lOVCAqLyxcclxuICAgICAgICAgICAgICAgICAgfSkudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gV2UganVzdCBwcmV0ZW5kIHRoYXQgYGJpbmQoKWAgZGlkbuKAmXQgaGFwcGVuLlxyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBcImJpbmRcIikge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUHJveHkoZXAsIHBhdGguc2xpY2UoMCwgLTEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgW2FyZ3VtZW50TGlzdCwgdHJhbnNmZXJhYmxlc10gPSBwcm9jZXNzQXJndW1lbnRzKHJhd0FyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJBUFBMWVwiIC8qIEFQUExZICovLFxyXG4gICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LFxyXG4gICAgICAgICAgICAgIH0sIHRyYW5zZmVyYWJsZXMpLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29uc3RydWN0KF90YXJnZXQsIHJhd0FyZ3VtZW50TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgW2FyZ3VtZW50TGlzdCwgdHJhbnNmZXJhYmxlc10gPSBwcm9jZXNzQXJndW1lbnRzKHJhd0FyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJDT05TVFJVQ1RcIiAvKiBDT05TVFJVQ1QgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcHJveHk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIG15RmxhdChhcnIpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGFycik7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb2Nlc3NBcmd1bWVudHMoYXJndW1lbnRMaXN0KSB7XHJcbiAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IGFyZ3VtZW50TGlzdC5tYXAodG9XaXJlVmFsdWUpO1xyXG4gICAgICByZXR1cm4gW3Byb2Nlc3NlZC5tYXAoKHYpID0+IHZbMF0pLCBteUZsYXQocHJvY2Vzc2VkLm1hcCgodikgPT4gdlsxXSkpXTtcclxuICB9XHJcbiAgY29uc3QgdHJhbnNmZXJDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XHJcbiAgZnVuY3Rpb24gdHJhbnNmZXIob2JqLCB0cmFuc2ZlcnMpIHtcclxuICAgICAgdHJhbnNmZXJDYWNoZS5zZXQob2JqLCB0cmFuc2ZlcnMpO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICBmdW5jdGlvbiBwcm94eShvYmopIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob2JqLCB7IFtwcm94eU1hcmtlcl06IHRydWUgfSk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRvV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGhhbmRsZXJdIG9mIHRyYW5zZmVySGFuZGxlcnMpIHtcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmNhbkhhbmRsZSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBbc2VyaWFsaXplZFZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IGhhbmRsZXIuc2VyaWFsaXplKHZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zZmVyYWJsZXMsXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFwiUkFXXCIgLyogUkFXICovLFxyXG4gICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRyYW5zZmVyQ2FjaGUuZ2V0KHZhbHVlKSB8fCBbXSxcclxuICAgICAgXTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJIQU5ETEVSXCIgLyogSEFORExFUiAqLzpcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJIYW5kbGVycy5nZXQodmFsdWUubmFtZSkuZGVzZXJpYWxpemUodmFsdWUudmFsdWUpO1xyXG4gICAgICAgICAgY2FzZSBcIlJBV1wiIC8qIFJBVyAqLzpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwgbXNnLCB0cmFuc2ZlcnMpIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZCA9IGdlbmVyYXRlVVVJRCgpO1xyXG4gICAgICAgICAgZXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgZnVuY3Rpb24gbChldikge1xyXG4gICAgICAgICAgICAgIGlmICghZXYuZGF0YSB8fCAhZXYuZGF0YS5pZCB8fCBldi5kYXRhLmlkICE9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGwpO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoZXYuZGF0YSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgICAgIGVwLnN0YXJ0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlcC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHsgaWQgfSwgbXNnKSwgdHJhbnNmZXJzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheSg0KVxyXG4gICAgICAgICAgLmZpbGwoMClcclxuICAgICAgICAgIC5tYXAoKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSlcclxuICAgICAgICAgIC5qb2luKFwiLVwiKTtcclxuICB9XG4gIC8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbWxpbmsubWpzLm1hcFxuXG4gIC8vIENvbnN0YW50c1xuICBjb25zdCBVUkxfQ0ROX1JPT1QgPSBcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyXCI7XG4gIGNvbnN0IENPTkZJR19ERUZBVUxUUyA9IHtcbiAgXHQvLyBCaW93YXNtIENETiBVUkxzXG4gIFx0dXJsQ0ROOiBVUkxfQ0ROX1JPT1QsXG4gIFx0Ly8gR2V0IHRoZSBXb3JrZXIgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IEFpb2xpIHZlcnNpb25cbiAgXHR1cmxBaW9saTogYCR7VVJMX0NETl9ST09UfS9haW9saS8ke3BrZy52ZXJzaW9ufS9haW9saS53b3JrZXIuanNgLFxuICBcdC8vIFdoZXJlIHdlIGNhbiBmaW5kIHRoZSBiYXNlIGJpb3dhc20gbW9kdWxlIChvbmx5IG1vZGlmeSB0aGlzIGZvciBsb2NhbCBkZXZlbG9wbWVudClcbiAgXHR1cmxCYXNlTW9kdWxlOiBudWxsLFxuXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3IgbW91bnRpbmcgdGhlIHNoYXJlZCBmaWxlc3lzdGVtXG4gIFx0ZGlyU2hhcmVkOiBcIi9zaGFyZWRcIixcbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyBGaWxlL0Jsb2Igb2JqZWN0cyB0byB0aGUgdmlydHVhbCBmaWxlIHN5c3RlbVxuICBcdGRpck1vdW50ZWQ6IFwiL21udFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIHN5bWxpbmtzIChiYXNpY2FsbHksIHdlIG1ha2UgYSBzeW1saW5rIHRvIGVhY2ggZmlsZSBtb3VudGVkIG9uIFdPUktFUkZTXG4gIFx0Ly8gc28gdGhhdCBvcGVyYXRpb25zIGxpa2UgXCJzYW10b29scyBpbmRleFwiIGRvbid0IGNyYXNoIGR1ZSB0byB0aGUgcmVhZC1vbmx5IG5hdHVyZSBvZiBXT1JLRVJTKS5cbiAgXHQvLyBBbHNvIG1vdW50IFVSTHMgbGF6aWx5IGluIHRoYXQgZm9sZGVyLlxuICBcdGRpckRhdGE6IFwiL2RhdGFcIixcbiAgXHQvLyBJbnRlcmxlYXZlIHN0ZG91dC9zdGRlcnIuIElmIHNldCB0byBmYWxzZSwgYC5leGVjKClgIHJldHVybnMgYW4gb2JqZWN0IHsgXCJzdGRvdXRcIjogPHRleHQ+LCBcInN0ZGVyclwiOiA8dGV4dD4gfVxuICBcdHByaW50SW50ZXJsZWF2ZWQ6IHRydWUsXG5cbiAgXHQvLyBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gd2hlbmV2ZXIgd2UgcmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgV2ViV29ya2VyIHdpdGggcGF5bG9hZCB7IHR5cGU6IFwiYmlvd2FzbVwiLCB2YWx1ZTogLi4uIH0uXG4gIFx0Ly8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9iaW93YXNtL3RyZWUvbWFpbi90b29scy9iaHRzbmU+IGZvciBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIGNhbiBiZSB1c2VkIHRvIHNlbmQgcmVndWxhciB1cGRhdGVzXG4gIFx0Ly8gYmFjayB0byB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGNhbGxNYWluKCkgaXMgZG9uZSBydW5uaW5nLlxuICBcdGNhbGxiYWNrOiBudWxsLFxuXG4gIFx0Ly8gRGVidWdnaW5nXG4gIFx0ZGVidWc6IGZhbHNlLFxuICBcdGVudjogXCJwcmRcIlxuICB9O1xuXG4gIC8vIENsYXNzOiAxIG9iamVjdCA9IDEgd29ya2VyOyB1c2VyIGNhbiBkZWNpZGUgaWYgdGhleSB3YW50IHRvb2xzIHJ1bm5pbmcgaW4gc2VwYXJhdGUgdGhyZWFkcyBvciBhbGwgb2YgdGhlbSBpbiBvbmVcbiAgY2xhc3MgQWlvbGlcbiAge1xuICBcdGNvbnN0cnVjdG9yKHRvb2xzLCBjb25maWc9e30pXG4gIFx0e1xuICBcdFx0aWYodG9vbHMgPT0gbnVsbClcbiAgXHRcdFx0dGhyb3cgXCJFeHBlY3RpbmcgYXJyYXkgb2YgdG9vbHMgYXMgaW5wdXQgdG8gQWlvbGkgY29uc3RydWN0b3IuXCI7XG5cbiAgXHRcdC8vIFBhcnNlIHVzZXIgaW5wdXRcbiAgXHRcdGlmKCFBcnJheS5pc0FycmF5KHRvb2xzKSlcbiAgXHRcdFx0dG9vbHMgPSBbIHRvb2xzIF07XG4gIFx0XHQvLyBPdmVyd3JpdGUgZGVmYXVsdCBjb25maWcgaWYgc3BlY2lmaWVkXG4gIFx0XHRjb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBDT05GSUdfREVGQVVMVFMsIGNvbmZpZyk7XG4gIFx0XHQvLyBGb3IgY29udmVuaWVuY2UsIHN1cHBvcnQgXCI8dG9vbD4vPHZlcnNpb24+XCIgb3IgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiIGluc3RlYWQgb2Ygb2JqZWN0IGNvbmZpZ1xuICBcdFx0dG9vbHMgPSB0b29scy5tYXAodGhpcy5fcGFyc2VUb29sKTtcbiAgXHRcdC8vIElmIHRlc3Rpbmcgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnQgZS5nLiBjZG4tc3RnLmJpb3dhc20uY29tXG4gIFx0XHRpZihjb25maWcuZW52ICE9IFwicHJkXCIpIHtcbiAgXHRcdFx0Y29uZmlnLnVybENETiA9IGNvbmZpZy51cmxDRE4ucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdFx0Y29uZmlnLnVybEFpb2xpID0gY29uZmlnLnVybEFpb2xpLnJlcGxhY2UoXCJjZG5cIiwgYGNkbi0ke2NvbmZpZy5lbnZ9YCk7XG4gIFx0XHR9XG5cbiAgXHRcdC8vIEFkZCBiaW93YXNtIGJhc2UgbW9kdWxlIHRvIGxpc3Qgb2YgdG9vbHMgdG8gaW5pdGlhbGl6ZSAobmVlZCB0aGlzIGZvciB0aGUgc2hhcmVkIHZpcnR1YWwgZmlsZXN5c3RlbSlcbiAgXHRcdHRvb2xzID0gW3tcbiAgXHRcdFx0dG9vbDogXCJiYXNlXCIsXG4gIFx0XHRcdHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICBcdFx0XHR1cmxQcmVmaXg6IGNvbmZpZy51cmxCYXNlTW9kdWxlXG4gIFx0XHR9LCAuLi50b29sc107XG5cbiAgXHRcdC8vIFNldCBzdGF0ZVxuICBcdFx0dGhpcy50b29scyA9IHRvb2xzO1xuICBcdFx0dGhpcy5jb25maWcgPSBjb25maWc7XG5cbiAgXHRcdC8vIEhhbmRsZSBjYWxsYmFjayAoZGVsZXRlIGl0IGJlY2F1c2Ugd2UgY2FuJ3Qgc2VuZCBhIGZ1bmN0aW9uIHRvIHRoZSBXZWJXb3JrZXIpXG4gIFx0XHRpZih0aGlzLmNvbmZpZy5jYWxsYmFjayAhPSBudWxsKVxuICBcdFx0XHR0aGlzLmNhbGxiYWNrID0gdGhpcy5jb25maWcuY2FsbGJhY2s7XG4gIFx0XHRkZWxldGUgdGhpcy5jb25maWcuY2FsbGJhY2s7XG5cbiAgXHRcdHJldHVybiB0aGlzLmluaXQoKTtcbiAgXHR9XG5cbiAgXHQvLyBJbml0aWFsaXplIHRoZSBXZWJXb3JrZXIgYW5kIHRoZSBXZWJBc3NlbWJseSBtb2R1bGVzIHdpdGhpbiBpdFxuICBcdGFzeW5jIGluaXQoKSB7XG4gIFx0XHQvLyBOb3RlOiBXZSBjYW4gb25seSBjcmVhdGUgYSBXZWJXb3JrZXIgdXNpbmcgYSBVUkwgdGhhdCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBhcHAgcnVubmluZyBpdCwgaS5lLiB3ZVxuICBcdFx0Ly8gY2FuJ3QgZG8gYG5ldyBXb3JrZXIoXCJodHRwczovL2Nkbi5iaW93YXNtLmNvbS92Mi8uLi5cIilgLCBzbyBpbnN0ZWFkIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGNvbnRlbnRzIG9mIHRoYXRcbiAgXHRcdC8vIFVSTCBmaXJzdCwgYW5kIHRoZW4gY3JlYXRlIHRoZSBXZWJXb3JrZXIuIFNlZSA8aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzYwMDE1ODk4Pi5cbiAgXHRcdGNvbnN0IG1vZHVsZUpTID0gYXdhaXQgKGF3YWl0IGZldGNoKHRoaXMuY29uZmlnLnVybEFpb2xpKSkudGV4dCgpO1xuICBcdFx0Y29uc3QgbW9kdWxlQmxvYiA9IG5ldyBCbG9iKFttb2R1bGVKU10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSk7XG5cbiAgXHRcdC8vIENyZWF0ZSB0aGUgV2ViV29ya2VyXG4gIFx0XHRjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwobW9kdWxlQmxvYikpO1xuICBcdFx0Ly8gTGlzdGVuIGZvciBcImJpb3dhc21cIiBtZXNzYWdlcyBmcm9tIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGlmKHRoaXMuY2FsbGJhY2spXG4gIFx0XHRcdHdvcmtlci5vbm1lc3NhZ2UgPSBlID0+IHtcbiAgXHRcdFx0XHRpZihlLmRhdGEudHlwZSA9PSBcImJpb3dhc21cIilcbiAgXHRcdFx0XHRcdHRoaXMuY2FsbGJhY2soZS5kYXRhLnZhbHVlKTtcbiAgXHRcdFx0fTtcblxuICBcdFx0Y29uc3QgYWlvbGkgPSB3cmFwKHdvcmtlcik7XG4gIFx0XHRhaW9saS50b29scyA9IHRoaXMudG9vbHM7XG4gIFx0XHRhaW9saS5jb25maWcgPSB0aGlzLmNvbmZpZztcblxuICBcdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgdG9vbHMgaW5zaWRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGF3YWl0IGFpb2xpLmluaXQoKTtcblxuICBcdFx0cmV0dXJuIGFpb2xpO1xuICBcdH1cblxuICBcdC8vIFBhcnNlIFwiPHRvb2w+Lzx2ZXJzaW9uPlwiIGFuZCBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW50byB7IFwidG9vbFwiOiA8dG9vbD4sIFwicHJvZ3JhbVwiOiA8cHJvZ3JhbT4sIFwidmVyc2lvblwiOiA8dmVyc2lvbj4gfVxuICBcdF9wYXJzZVRvb2wodG9vbClcbiAgXHR7XG4gIFx0XHQvLyBJZiBub3QgYSBzdHJpbmcsIGxlYXZlIGl0IGFzIGlzXG4gIFx0XHRpZih0eXBlb2YgdG9vbCAhPT0gXCJzdHJpbmdcIilcbiAgXHRcdFx0cmV0dXJuIHRvb2w7XG5cbiAgXHRcdC8vIFN1cHBvcnQgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIlxuICBcdFx0Y29uc3QgdG9vbFNwbGl0ID0gdG9vbC5zcGxpdChcIi9cIik7XG4gIFx0XHRpZih0b29sU3BsaXQubGVuZ3RoICE9IDIgJiYgdG9vbFNwbGl0Lmxlbmd0aCAhPSAzKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyAnPHRvb2w+Lzx2ZXJzaW9uPicgb3IgJzx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+J1wiO1xuXG4gIFx0XHRyZXR1cm4ge1xuICBcdFx0XHR0b29sOiB0b29sU3BsaXRbMF0sXG4gIFx0XHRcdHByb2dyYW06IHRvb2xTcGxpdC5sZW5ndGggPT0gMyA/IHRvb2xTcGxpdFsxXSA6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0dmVyc2lvbjogdG9vbFNwbGl0W3Rvb2xTcGxpdC5sZW5ndGggLSAxXVxuICBcdFx0fTtcbiAgXHR9XG4gIH1cblxuICByZXR1cm4gQWlvbGk7XG5cbn0pKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1haW9saS5qcy5tYXBcbiIsImltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IExlc2soKSB7XG4gICAgICAgIGlmICh0aGlzLmxlc2sgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5sZXNrID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snRycsICdBJywgJ1MnLCAnVCddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICAgICAgW1snQycsICdWJywgJ0knLCAnTCcsICdQJywgJ0YnLCAnWScsICdNJywgJ1cnXSwgJ2FsbF9ncmVlbiddLFxuICAgICAgICAgICAgICAgIFtbJ04nLCAnUScsICdIJ10sICdtYWdlbnRhJ10sXG4gICAgICAgICAgICAgICAgW1snRCcsICdFJ10sICdyZWQnXSxcbiAgICAgICAgICAgICAgICBbWydLJywgJ1InXSwgJ2FsbF9ibHVlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sZXNrO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IEdyb2tHcm91cHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmdyb2tHcm91cHMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5ncm9rR3JvdXBzID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snQycsICdVJ10sICd5ZWxsb3cnXSxcbiAgICAgICAgICAgICAgICBbWydHJywgJ1AnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snUicsICdIJywgJ0snXSwgJ2xpZ2h0X2JsdWUnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ2RhcmtfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ1MnLCAnVCcsICdOJywgJ1EnXSwgJ29yYW5nZSddLFxuICAgICAgICAgICAgXSwgZmFsc2UsIEFtaW5vYWNpZHNQYWxldHRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Jva0dyb3VwcztcbiAgICB9XG4gICAgc3RhdGljIGdldCBSYXNNb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnJhc01vbCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLnJhc01vbCA9IG5ldyBBbWlub2FjaWRzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9hY2Nlcy5lbnMtbHlvbi5mci9iaW90aWMvcmFzdG9wL2hlbHAvY29sb3VyLmh0bVxuICAgICAgICAgICAgICAgICdEJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdFJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdDJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdNJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdLJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdSJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdTJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdUJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdGJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdZJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdOJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdRJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdHJzogJyNFQkVCRUInLFxuICAgICAgICAgICAgICAgICdMJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdWJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdJJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdBJzogJyNDOEM4QzgnLFxuICAgICAgICAgICAgICAgICdXJzogJyNCNDVBQjQnLFxuICAgICAgICAgICAgICAgICdIJzogJyM4MjgyRDInLFxuICAgICAgICAgICAgICAgICdQJzogJyNEQzk2ODInLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnI0JFQTA2RScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yYXNNb2w7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgICAgICAgY2FzZSAnZ3Jvayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgY2FzZSAnbGVzayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBkaXZpZGVkIGFtaW5vIGFjaWQgd2l0aCBpdHMgY29udGVudCBpbiB0aGUgYnJhY2tldCwgaWYgdGhlIGNvbnRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgLy9jb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gQUFQYWxldHRlcy5Hcm9rR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSB0aGlzLmdldElubmVyT3V0ZXIobW9ub21lcik7XG4gICAgICAgIG91dGVyTW9ub21lciA9IChvdXRlck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke291dGVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogb3V0ZXJNb25vbWVyKTtcbiAgICAgICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMSB8fCBtb25vbWVyWzFdID09ICcoJykge1xuICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2EgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDAsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAzIHx8IG1vbm9tZXJbM10gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDNdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSA0IHx8IG1vbm9tZXJbNF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygxLCAzKV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1JVRkJSU3hMUVVGTExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRUUVVNdlFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlNVMHNUVUZCVFN4TFFVRkxMRlZCUVZVN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRemxDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dG5Ra0ZEYWtNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETzJkQ1FVTnVRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZGtRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1dVRkJXU3hEUVVGRE8yZENRVU12UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZGQlFWRXNRMEZCUXp0aFFVTnFReXhGUVVGRkxFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xTkJReTlDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wbEJRM3BDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RFFVRkRPMmRDUVVOdVF5eDVSRUZCZVVRN1owSkJRM3BFTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRkZCUVZFc1JVRkJSU3hUUVVGVE8yRkJRM0JDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRUxFMUJRVTBzVDBGQlR5eFZRVUZWTzBsQmNVZGtMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQmFVSXNUVUZCVFR0UlFVTTVReXhSUVVGUkxFMUJRVTBzUlVGQlJUdFpRVU5vUWl4TFFVRkxMRTFCUVUwN1owSkJRMVFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRGRrTXNTMEZCU3l4TlFVRk5PMmRDUVVOVUxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRMnBETzJkQ1FVTkZMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZVVKQlFYbENMRTFCUVUwc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0VFFVTnlSVHRKUVVOSUxFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJVenRSUVVOdVF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJZc1NVRkJTU3hMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJXWXNTMEZCU3l4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGNFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1IwRkJSenRuUWtGRFlpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITzJkQ1FVTnNRaXhQUVVGUExFVkJRVVVzUTBGQlF6dHBRa0ZEVUN4SlFVRkpMRTlCUVU4N1owSkJRMlFzUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXpzN1owSkJSV1FzUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXp0VFFVTnFRanRSUVVWRUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVOb1JTeERRVUZETzBsQlJVMHNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhWUVVGclFpeEZRVUZGTEVWQlFVVXNVMEZCYVVJc1RVRkJUVHM3VVVGRGVrVXNjMFJCUVhORU8xRkJRM1JFTEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRmxCUVZrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRMMFFzV1VGQldTeEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRE0wWXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZGTTBZc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dFpRVU42UXl4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaEVPMUZCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVVVzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRaUVVNelJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVN1owSkJRelZETEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5d3dRMEZCUlN4WFFVRlhMRVZCUVVjc1EwRkJRenRuUWtGRGVrTXNUMEZCVHl4TFFVRkxMRWxCUVVrc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0dlFrRkRia01zUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTXhSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNXVUZCV1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU40UkR0VFFVTkdPMUZCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTzFsQlF5OURMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVONFJDeFBRVUZQTEV0QlFVc3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF5eERRVUZETzI5Q1FVTnVReXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlF6RkVMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRM2hFTzFOQlEwWTdVVUZGUkN4SlFVRkpMRU5CUVVFc1RVRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETERCRFFVRkZMRmRCUVZjc1JVRkJSU3hMUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0WlFVTXpReXhKUVVGSkxFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVTdaMEpCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0dlFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPM2RDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdkMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTjRSRHRoUVVOR08xTkJRMFk3VVVGRlJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFTkJRVU03TzBGQmNFeGxMR3RDUVVGUExFZEJRVmNzV1VGQldTeERRVUZETzBGQlJTOUNMRzFEUVVGM1FpeEhRVUZYTERaQ1FVRTJRaXhEUVVGRE8wRkJSVEZGTEhsQ1FVRmpMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTTdRVUZGTjBJc1owSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEZGQlFWRTdTVUZEWWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNWMEZCVnp0SlFVTm9RaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzVTBGQlV6dEpRVU5rTEVkQlFVY3NSVUZCUlN4UlFVRlJPMGxCUTJJc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNWMEZCVnp0SlFVTm9RaXhIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4UlFVRlJPMGxCUTJJc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNWMEZCVnp0RFFVTnFRaXhEUVVGRE8wRkJSVmtzYlVKQlFWRXNSMEZCY1VJN1NVRkRla01zUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3d5UWtGQk1rSTdTVUZEYUVNc1IwRkJSeXhGUVVGRkxHTkJRV003U1VGRGJrSXNSMEZCUnl4RlFVRkZMSGxDUVVGNVFqdEpRVU01UWl4SFFVRkhMRVZCUVVVc2VVSkJRWGxDTzBsQlF6bENMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzZDBKQlFYZENPMGxCUXpkQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3hwUWtGQmFVSTdTVUZEZEVJc1IwRkJSeXhGUVVGRkxHOURRVUZ2UXp0SlFVTjZReXhIUVVGSExFVkJRVVVzTUVKQlFUQkNPMGxCUXk5Q0xFZEJRVWNzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRja0lzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanREUVVOMlFpeERRVUZETzBGQlJWa3NORUpCUVdsQ0xFZEJRWEZDTzBsQlEyeEVMRWRCUVVjc1JVRkJSU3hMUVVGTE8wbEJRMVlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNjMEpCUVhOQ08wbEJRek5DTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxHOUNRVUZ2UWp0SlFVTjZRaXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeHRRa0ZCYlVJN1NVRkRlRUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGpRVUZqTzBsQlEyNUNMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzWjBKQlFXZENPMGxCUTNKQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hoUVVGaE8wbEJRMnhDTEVkQlFVY3NSVUZCUlN3clFrRkJLMEk3U1VGRGNFTXNSMEZCUnl4RlFVRkZMSEZDUVVGeFFqdEpRVU14UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNXVUZCV1R0RFFVTnNRaXhEUVVGRE8wRkJSVVk3UjBGRFJ6dEJRVU5YTEhOQ1FVRlhMRWRCUVhGQ08wbEJRelZETEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3UTBGRFdDeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dWFXMXdiM0owSUh0VGRISnBibWRFYVdOMGFXOXVZWEo1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR3hsYzJzNklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1RHVnpheWdwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCcFppQW9kR2hwY3k1c1pYTnJJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViR1Z6YXlBOUlIUm9hWE11YldGclpWQmhiR1YwZEdVb1cxeHVJQ0FnSUNBZ0lDQmJXeWRISnl3Z0owRW5MQ0FuVXljc0lDZFVKMTBzSUNkdmNtRnVaMlVuWFN4Y2JpQWdJQ0FnSUNBZ1cxc25ReWNzSUNkV0p5d2dKMGtuTENBblRDY3NJQ2RRSnl3Z0owWW5MQ0FuV1Njc0lDZE5KeXdnSjFjblhTd2dKMkZzYkY5bmNtVmxiaWRkTEZ4dUlDQWdJQ0FnSUNCYld5ZE9KeXdnSjFFbkxDQW5TQ2RkTENBbmJXRm5aVzUwWVNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRFSnl3Z0owVW5YU3dnSjNKbFpDZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkTEp5d2dKMUluWFN3Z0oyRnNiRjlpYkhWbEoxMHNYRzRnSUNBZ0lDQmRMQ0JtWVd4elpTd2dRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXViR1Z6YXp0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdkeWIydEhjbTkxY0hNNklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1IzSnZhMGR5YjNWd2N5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVuY205clIzSnZkWEJ6SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WjNKdmEwZHliM1Z3Y3lBOUlIUm9hWE11YldGclpWQmhiR1YwZEdVb1cxeHVJQ0FnSUNBZ0lDQmJXeWRESnl3Z0oxVW5YU3dnSjNsbGJHeHZkeWRkTEZ4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjFBblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRCSnl3Z0oxWW5MQ0FuU1Njc0lDZE1KeXdnSjAwbkxDQW5SaWNzSUNkWkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkU0p5d2dKMGduTENBblN5ZGRMQ0FuYkdsbmFIUmZZbXgxWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRFSnl3Z0owVW5YU3dnSjJSaGNtdGZZbXgxWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRUSnl3Z0oxUW5MQ0FuVGljc0lDZFJKMTBzSUNkdmNtRnVaMlVuWFN4Y2JpQWdJQ0FnSUYwc0lHWmhiSE5sTENCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bmNtOXJSM0p2ZFhCek8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2NtRnpUVzlzT2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUZKaGMwMXZiQ2dwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVlYTk5iMndnUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV5WVhOTmIyd2dQU0J1WlhjZ1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektIdGNiaUFnSUNBZ0lDQWdMeThnYUhSMGNEb3ZMMkZqWTJWekxtVnVjeTFzZVc5dUxtWnlMMkpwYjNScFl5OXlZWE4wYjNBdmFHVnNjQzlqYjJ4dmRYSXVhSFJ0WEc0Z0lDQWdJQ0FnSUNkRUp6b2dKeU5GTmpCQk1FRW5MQ0F2THlCaGMzQXNJR0Z6Y0dGeWRHbGpJR0ZqYVdRc0lHRnpjRnh1SUNBZ0lDQWdJQ0FuUlNjNklDY2pSVFl3UVRCQkp5d2dMeThnWjJ4MUxDQm5iSFYwWVcxcFl5QmhZMmxrWEc0Z0lDQWdJQ0FnSUNkREp6b2dKeU5GTmtVMk1EQW5MQ0F2THlCamVYTXNJR041YzNSbGFXNWxYRzRnSUNBZ0lDQWdJQ2ROSnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJ0WlhRc0lHMWxkR2hwYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMHNuT2lBbkl6RTBOVUZHUmljc0lDOHZJR3g1Y3l3Z2JIbHphVzVsWEc0Z0lDQWdJQ0FnSUNkU0p6b2dKeU14TkRWQlJrWW5MQ0F2THlCaGNtY3NJR0Z5WjJsdWFXNWxYRzRnSUNBZ0lDQWdJQ2RUSnpvZ0p5TkdRVGsyTURBbkxDQXZMeUJ6WlhJc0lITmxjbWx1WlZ4dUlDQWdJQ0FnSUNBblZDYzZJQ2NqUmtFNU5qQXdKeXdnTHk4Z2RHaHlMQ0IwYUhKbGIyNXBibVZjYmlBZ0lDQWdJQ0FnSjBZbk9pQW5Jek15TXpKQlFTY3NJQzh2SUhCb1pTd2djR2hsYm5sc1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBbldTYzZJQ2NqTXpJek1rRkJKeXdnTHk4Z2RIbHlMQ0IwZVhKdmMybHVaVnh1SUNBZ0lDQWdJQ0FuVGljNklDY2pNREJFUTBSREp5d2dMeThnWVhOdUxDQmhjM0JoY21GbmFXNWxYRzRnSUNBZ0lDQWdJQ2RSSnpvZ0p5TXdNRVJEUkVNbkxDQXZMeUJuYkc0c0lHZHNkWFJoYldsdVpWeHVJQ0FnSUNBZ0lDQW5SeWM2SUNjalJVSkZRa1ZDSnl3Z0x5OGdaMng1TENCbmJIbGphVzVsWEc0Z0lDQWdJQ0FnSUNkTUp6b2dKeU13UmpneU1FWW5MQ0F2THlCc1pYVXNJR3hsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMVluT2lBbkl6QkdPREl3Umljc0lDOHZJSFpoYkN3Z2RtRnNhVzVsWEc0Z0lDQWdJQ0FnSUNkSkp6b2dKeU13UmpneU1FWW5MQ0F2THlCcGJHVXNJR2x6YjJ4bGRXTnBibVZjYmlBZ0lDQWdJQ0FnSjBFbk9pQW5JME00UXpoRE9DY3NJQzh2SUdGc1lTd2dZV3hoYm1sdVpWeHVJQ0FnSUNBZ0lDQW5WeWM2SUNjalFqUTFRVUkwSnl3Z0x5OGdkSEp3TENCMGNubHdkRzl3YUdGdVhHNGdJQ0FnSUNBZ0lDZElKem9nSnlNNE1qZ3lSREluTENBdkx5Qm9hWE1zSUdocGMzUnBaR2x1WlZ4dUlDQWdJQ0FnSUNBblVDYzZJQ2NqUkVNNU5qZ3lKeXdnTHk4Z2NISnZMQ0J3Y205c2FXNWxYRzRnSUNBZ0lDQWdJQ2R2ZEdobGNuTW5PaUFuSTBKRlFUQTJSU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11Y21GelRXOXNPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpJSHRjYmlBZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUZObGJWUjVjR1U2SUhOMGNtbHVaeUE5SUNkQmJXbHViMkZqYVdSekp6dGNibHh1SUNCemRHRjBhV01nY21WaFpHOXViSGtnVTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPaUJ6ZEhKcGJtY2dQU0FuUVcxcGJtOWhZMmxrYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J6ZEdGMGFXTWdkVzVrWldacGJtVmtRMjlzYjNJZ1BTQW5jbWRpS0RFd01Dd3hNREFzTVRBd0tTYzdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJPWVcxbGN6b2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVTQTlJSHRjYmlBZ0lDQW5SeWM2SUNkSGJIbGphVzVsSnl4Y2JpQWdJQ0FuVENjNklDZE1aWFZqYVc1bEp5eGNiaUFnSUNBbldTYzZJQ2RVZVhKdmMybHVaU2NzWEc0Z0lDQWdKMU1uT2lBblUyVnlhVzVsSnl4Y2JpQWdJQ0FuUlNjNklDZEhiSFYwWVcxcFl5QmhZMmxrSnl4Y2JpQWdJQ0FuVVNjNklDZEhiSFYwWVcxcGJtVW5MRnh1SUNBZ0lDZEVKem9nSjBGemNHRnlkR2xqSUdGamFXUW5MRnh1SUNBZ0lDZE9Kem9nSjBGemNHRnlZV2RwYm1VbkxGeHVJQ0FnSUNkR0p6b2dKMUJvWlc1NWJHRnNZVzVwYm1VbkxGeHVJQ0FnSUNkQkp6b2dKMEZzWVc1cGJtVW5MRnh1SUNBZ0lDZExKem9nSjB4NWMybHVaU2NzWEc0Z0lDQWdKMUluT2lBblFYSm5hVzVwYm1VbkxGeHVJQ0FnSUNkSUp6b2dKMGhwYzNScFpHbHVaU2NzWEc0Z0lDQWdKME1uT2lBblEzbHpkR1ZwYm1VbkxGeHVJQ0FnSUNkV0p6b2dKMVpoYkdsdVpTY3NYRzRnSUNBZ0oxQW5PaUFuVUhKdmJHbHVaU2NzWEc0Z0lDQWdKMWNuT2lBblZISjVjSFJ2Y0doaGJpY3NYRzRnSUNBZ0owa25PaUFuU1hOdmJHVjFZMmx1WlNjc1hHNGdJQ0FnSjAwbk9pQW5UV1YwYUdsdmJtbHVaU2NzWEc0Z0lDQWdKMVFuT2lBblZHaHlaVzl1YVc1bEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSjA1RFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVENjNklDZE9XME5BU0Ywb1EwTW9ReWxES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMWtuT2lBblRrTW9RME14UFVORFBVTW9UeWxEUFVNeEtVTW9QVThwVHljc1hHNGdJQ0FnSjFNbk9pQW5Ua01vUTA4cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuUlNjNklDZE9XME5BUUVoZEtFTkRReWhQS1QxUEtVTW9QVThwVHljc1hHNGdJQ0FnSjFFbk9pQW5UbHREUUVCSVhTaERRME1vVGlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkRUp6b2dKMDViUTBCQVNGMG9RME1vVHlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkT0p6b2dKMDViUTBCQVNGMG9RME1vVGlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkR0p6b2dKMDVES0VORE1UMURRejFEUXoxRE1TbERLRDFQS1U4bkxGeHVJQ0FnSUNkQkp6b2dKMDViUTBCSVhTaERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owc25PaUFuVGtNb1EwTkRRMDRwUXlnOVR5bFBKeXhjYmlBZ0lDQW5VaWM2SUNkT1cwTkFTRjBvUTBORFRrTW9QVTRwUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RJSnpvZ0owNURLRU5ETVQxRFRqMURXMDVkTVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RESnpvZ0owNWJRMEJBU0Ywb1ExTXBReWc5VHlsUEp5eGNiaUFnSUNBblZpYzZJQ2RPUXloREtFTXBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZFFKem9nSjA0b1EwTkRNU2xETVVNb1BVOHBUeWNzWEc0Z0lDQWdKMWNuT2lBblRsdERRRUJJWFNoRFl6RmpNbU5qWTJOak1tNG9XMGhkS1dNeEtVTW9QVThwVHljc1hHNGdJQ0FnSjBrbk9pQW5UbHREUUVoZEtGdERRRWhkS0VNcFEwTXBReWc5VHlsUEp5eGNiaUFnSUNBblRTYzZJQ2RPUXloRFExTkRLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxUW5PaUFuVGtNb1F5aFBLVU1wUXlnOVR5bFBKeXhjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRUZCVTIxcGJHVnpWSEoxYm1OaGRHVmtPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RISnpvZ0p5cERLaWNzWEc0Z0lDQWdKMHduT2lBblEwTW9ReWxEVzBOQVNGMG9LaWtxSnl4Y2JpQWdJQ0FuV1NjNklDZERNVDFEUXlnOVEwTTlRekZEUXlncUtTb3BUeWNzWEc0Z0lDQWdKMU1uT2lBblQwTkRLQ29wUXlvbkxGeHVJQ0FnSUNkRkp6b2dKeXBiUTBCQVNGMG9RME5ES0U4cFBVOHBLaWNzWEc0Z0lDQWdKMUVuT2lBbktrNWJRMEJBU0Ywb1EwTkRLRTRwUFU4cEtpY3NYRzRnSUNBZ0owUW5PaUFuS2x0RFFFQklYU2hEUXloUEtUMVBLU29uTEZ4dUlDQWdJQ2RPSnpvZ0p5cGJRMEJBU0Ywb1EwTW9UaWs5VHlrcUp5eGNiaUFnSUNBblJpYzZJQ2RETVQxRFF6MURLRU05UXpFcFEwTW9LaWtxSnl4Y2JpQWdJQ0FuUVNjNklDZERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5TeWM2SUNkREtFTkRUaWxEUXlncUtTb25MRnh1SUNBZ0lDZFNKem9nSnlwYlEwQklYU2hEUTBOT1F5ZzlUaWxES1NvbkxGeHVJQ0FnSUNkSUp6b2dKME14UFVNb1RrTTlUakVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5ReWM2SUNkREtGdERRRUJJWFNncUtTb3BVeWNzWEc0Z0lDQWdKMVluT2lBblEwTW9ReWxES0NvcEtpY3NYRzRnSUNBZ0oxQW5PaUFuUXpGRFEwNG9LaWxETVNvbkxGeHVJQ0FnSUNkWEp6b2dKeXBiUTBCQVNGMG9RMk14WXpKalkyTmpZekp1S0Z0SVhTbGpNU2txSnl4Y2JpQWdJQ0FuU1NjNklDZERRMXREUUVoZEtFTXBXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5UU2M2SUNkRFUwTkRReWdxS1NvbkxGeHVJQ0FnSUNkVUp6b2dKME5ES0U4cFF5Z3FLU29uTEZ4dUlDQjlPMXh1WEc0Z0lDOHFLaUJVVDBSUE9pQkdkV3hzUDF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJCUVVaMWJHeE9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblFXeGhKem9nSjBFbkxGeHVJQ0FnSUNkQmNtY25PaUFuVWljc1hHNGdJQ0FnSjBGemJpYzZJQ2RPSnl4Y2JpQWdJQ0FuUVhOd0p6b2dKMFFuTEZ4dUlDQWdJQ2REZVhNbk9pQW5ReWNzWEc0Z0lDQWdKMGRzYmljNklDZFJKeXhjYmlBZ0lDQW5SMngxSnpvZ0owVW5MRnh1SUNBZ0lDZEhiSGtuT2lBblJ5Y3NYRzRnSUNBZ0owaHBjeWM2SUNkSUp5eGNiaUFnSUNBblNXeGxKem9nSjBrbkxGeHVJQ0FnSUNkTVpYVW5PaUFuVENjc1hHNGdJQ0FnSjB4NWN5YzZJQ2RMSnl4Y2JpQWdJQ0FuVFdWMEp6b2dKMDBuTEZ4dUlDQWdJQ2RRYUdVbk9pQW5SaWNzWEc0Z0lDQWdKMUJ5YnljNklDZFFKeXhjYmlBZ0lDQW5VMlZ5SnpvZ0oxTW5MRnh1SUNBZ0lDZFVhSEluT2lBblZDY3NYRzRnSUNBZ0oxUnljQ2M2SUNkWEp5eGNiaUFnSUNBblZIbHlKem9nSjFrbkxGeHVJQ0FnSUNkV1lXd25PaUFuVmljc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUlFZV3hsZEhSbEtITmphR1Z0WlRvZ2MzUnlhVzVuSUQwZ0oyZHliMnNuS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2MzZHBkR05vSUNoelkyaGxiV1VwSUh0Y2JpQWdJQ0JqWVhObElDZG5jbTlySnpwY2JpQWdJQ0FnSUhKbGRIVnliaUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11UjNKdmEwZHliM1Z3Y3p0Y2JpQWdJQ0JqWVhObElDZHNaWE5ySnpwY2JpQWdJQ0FnSUhKbGRIVnliaUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11VEdWemF6dGNiaUFnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JEYUdWdFVHRnNaWFIwWlRvZ2MyTm9aVzFsSUZ4Y1lDUjdjMk5vWlcxbGZWeGNZQ0JrYjJWeklHNXZkQ0JsZUdsemRHQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR1JwZG1sa1pXUWdZVzFwYm04Z1lXTnBaQ0IzYVhSb0lHbDBjeUJqYjI1MFpXNTBJR2x1SUhSb1pTQmljbUZqYTJWMExDQnBaaUIwYUdVZ1kyOXVkR1Z1ZENCcGN5QnVkVzFpWlhJc0lIUm9aVzRnYVhSeklHOXRhWFIwWldSY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTWdjbUYzSUdGdGFXNXZYRzRnSUNBcUlFQnlaWFIxY200Z2UxdHpkSEpwYm1jc0lITjBjbWx1WjExOUlHOTFkR1Z5SUdGdVpDQnBibTVsY2lCamIyNTBaVzUwWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEVsdWJtVnlUM1YwWlhJb1l6b2djM1J5YVc1bktUb2dXM04wY21sdVp5d2djM1J5YVc1blhTQjdYRzRnSUNBZ2JHVjBJR2x6U1c1dVpYSWdQU0F3TzF4dUlDQWdJR3hsZENCcGJtNWxjaUE5SUNjbk8xeHVJQ0FnSUd4bGRDQnZkWFJsY2lBOUlDY25PMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JqYUdGeUlHOW1JR01wSUh0Y2JpQWdJQ0FnSUdsbUlDaGphR0Z5SUQwOUlDY29KeWxjYmlBZ0lDQWdJQ0FnYVhOSmJtNWxjaXNyTzF4dUlDQWdJQ0FnWld4elpTQnBaaUFvWTJoaGNpQTlQU0FuS1NjcFhHNGdJQ0FnSUNBZ0lHbHpTVzV1WlhJdExUdGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHbHpTVzV1WlhJcFhHNGdJQ0FnSUNBZ0lHbHVibVZ5SUNzOUlHTm9ZWEk3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lHOTFkR1Z5SUNzOUlHTm9ZWEk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlDRnBjMDVoVGlod1lYSnpaVWx1ZENocGJtNWxjaWtwSUQ4Z1cyOTFkR1Z5TENBbkoxMGdPaUJiYjNWMFpYSXNJR2x1Ym1WeVhUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRMjlzYjNKQlFWQnBkbTkwS0cxdmJtOXRaWEk2SUhOMGNtbHVaeUE5SUNjbkxDQnpZMmhsYldVNklDZG5jbTlySnlBOUlDZG5jbTlySnlrNklGdHpkSEpwYm1jc0lITjBjbWx1Wnl3Z2MzUnlhVzVuTENCdWRXMWlaWEpkSUh0Y2JpQWdJQ0F2TDJOdmJuTjBJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUFNCQlFWQmhiR1YwZEdWekxrZHliMnRIY205MWNITW9LVHRjYmlBZ0lDQmpiMjV6ZENCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEMGdkR2hwY3k1blpYUlFZV3hsZEhSbEtITmphR1Z0WlNrN1hHNGdJQ0FnYkdWMElGdHZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNsMGdQU0IwYUdsekxtZGxkRWx1Ym1WeVQzVjBaWElvYlc5dWIyMWxjaWs3WEc0Z0lDQWdiM1YwWlhKTmIyNXZiV1Z5SUQwZ0tHOTFkR1Z5VFc5dWIyMWxjaTVzWlc1bmRHZ2dQaUEySUQ4Z1lDUjdiM1YwWlhKTmIyNXZiV1Z5TG5Oc2FXTmxLREFzSURNcGZTNHVMbUFnT2lCdmRYUmxjazF2Ym05dFpYSXBPMXh1SUNBZ0lHbHVibVZ5VFc5dWIyMWxjaUE5SUNocGJtNWxjazF2Ym05dFpYSXViR1Z1WjNSb0lENGdOaUEvSUdBa2UybHVibVZ5VFc5dWIyMWxjaTV6YkdsalpTZ3dMQ0F6S1gwdUxpNWdJRG9nYVc1dVpYSk5iMjV2YldWeUtUdGNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbXhsYm1kMGFDQTlQU0F4SUh4OElHMXZibTl0WlhKYk1WMGdQVDBnSnlnbktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaGJXbHVieUE5SUcxdmJtOXRaWEpiTUYwL0xuUnZWWEJ3WlhKRFlYTmxLQ2toTzF4dUlDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeFhTQTZYRzRnSUNBZ0lDQWdJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01WMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzF2Ym05dFpYSmJNRjBnUFQwZ0oyUW5JQ1ltSUcxdmJtOXRaWEpiTVYwaElHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVwSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXlJSHg4SUcxdmJtOXRaWEpiTWwwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnYlc5dWIyMWxjbHN4WFQ4dWRHOVZjSEJsY2tOaGMyVW9LU0U3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYldsdWJ5QnBiaUJqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQ5Y2JpQWdJQ0FnSUNBZ0lDQmJZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaUzVuWlhRb1lXMXBibThwTENCaGJXbHVieXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYU0E2WEc0Z0lDQWdJQ0FnSUNBZ1czUm9hWE11ZFc1a1pXWnBibVZrUTI5c2IzSXNJRzkxZEdWeVRXOXViMjFsY2l3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F5WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JXOXViMjFsY2k1emRXSnpkSEpwYm1jb01Dd2dNeWtnYVc0Z2RHaHBjeTVCUVVaMWJHeE9ZVzFsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLRzF2Ym05dFpYSXViR1Z1WjNSb0lEMDlJRE1nZkh3Z2JXOXViMjFsY2xzelhTQTlQU0FuS0NjcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RBc0lETXBYVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNBZ0lGdGphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxMbWRsZENoaGJXbHVieWtzSUdGdGFXNXZMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRJRHBjYmlBZ0lDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJRE5kTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5V3pCZFB5NTBiMHh2ZDJWeVEyRnpaU2dwSUQwOUlHMXZibTl0WlhKYk1GMHBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG5OMVluTjBjbWx1WnlneExDQXpLU0JwYmlCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbXhsYm1kMGFDQTlQU0EwSUh4OElHMXZibTl0WlhKYk5GMGdQVDBnSnlnbktTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQjBhR2x6TGtGQlJuVnNiRTVoYldWelcyMXZibTl0WlhJdWMzVmljM1J5YVc1bktERXNJRE1wWFR0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXMXBibThnYVc0Z1kyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTQS9YRzRnSUNBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhTQTZYRzRnSUNBZ0lDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJRFJkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01GMDdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIE51Y2xlb3RpZGVzUGFsZXR0ZXMgZXh0ZW5kcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIGdldCBDaHJvbWF0b2dyYW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmNocm9tYXRvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmNocm9tYXRvZ3JhbSA9IG5ldyBOdWNsZW90aWRlc1BhbGV0dGVzKHtcbiAgICAgICAgICAgICAgICAnQSc6ICdncmVlbicsXG4gICAgICAgICAgICAgICAgJ0MnOiAnYmx1ZScsXG4gICAgICAgICAgICAgICAgJ0cnOiAnYmxhY2snLFxuICAgICAgICAgICAgICAgICdUJzogJ3JlZCcsICdVJzogJ3JlZCcsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICdncmF5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdOdWNsZW90aWRlcyc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dG5Ra0ZETVVNc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRTFCUVUwN1owSkJRMWdzUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVXNTMEZCU3p0blFrRkRkRUlzVVVGQlVTeEZRVUZGTEUxQlFVMDdZVUZEYWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1NVRkRNMElzUTBGQlF6dERRVU5HTzBGQlJVUXNUVUZCVFN4UFFVRlBMRmRCUVZjN08wRkJRMDRzYlVKQlFVOHNSMEZCVnl4aFFVRmhMRU5CUVVNN1FVRkZhRU1zYjBOQlFYZENMRWRCUVZjc09FSkJRVGhDTEVOQlFVTTdRVUZGY0VVc2FVSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1VVRkJVVHREUVVOa0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR05vY205dFlYUnZaM0poYlRvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCRGFISnZiV0YwYjJkeVlXMG9LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDBnYm1WM0lFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0FuUVNjNklDZG5jbVZsYmljc1hHNGdJQ0FnSUNBZ0lDZERKem9nSjJKc2RXVW5MRnh1SUNBZ0lDQWdJQ0FuUnljNklDZGliR0ZqYXljc0lDOHZJRzl5WVc1blpTQS9YRzRnSUNBZ0lDQWdJQ2RVSnpvZ0ozSmxaQ2NzSUNkVkp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5aM0poZVNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRuVmpiR1Z2ZEdsa1pYTW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkT2RXTnNaVzkwYVdSbGMwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJKem9nSjBGa1pXNXBibVVuTEZ4dUlDQWdJQ2RESnpvZ0owTjVkRzl6YVc1bEp5eGNiaUFnSUNBblJ5YzZJQ2RIZFdGdWFXNWxKeXhjYmlBZ0lDQW5WQ2M2SUNkVWFIbHRhVzVsSnl4Y2JpQWdJQ0FuVlNjNklDZFZjbUZqYVd3bkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwYWxldHRlKSB7XG4gICAgICAgIHRoaXMuX3BhbGV0dGUgPSBwYWxldHRlO1xuICAgIH1cbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGUgPSBTZXFQYWxldHRlQmFzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICAgICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgICAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW29ial0gPSB0aGlzLmNvbG91clBhbGV0dGVbY29sb3VyXVtzaW1wbGlmaWVkID8gMCA6IGluZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICAgIH1cbn1cbi8qKiBQYWxldHRlIHdpdGggc2hhZGVzIG9mIHByaW1hcnkgY29sb3JzXG4gKi9cblNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUgPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICAgJ3JnYigyNCwxMTAsNzkpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdhbGxfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTIyLCAxMDIsIDE4OSknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTQxLCAxMjQsIDIxNyknLFxuICAgICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4TFhCaGJHVjBkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMlZ4TFhCaGJHVjBkR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXbENRU3hOUVVGTkxFOUJRVThzWTBGQll6dEpRVEJEZWtJc1dVRkJXU3hQUVVGblF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dEpRVU14UWl4RFFVRkRPMGxCYkVKVExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCZDBJc1JVRkRia1FzVlVGQlZTeEhRVUZITEV0QlFVc3NSVUZCUlN4alFVRnhReXhqUVVGak8xRkJSWFpGTEUxQlFVMHNUMEZCVHl4SFFVRTRRaXhGUVVGRkxFTkJRVU03VVVGRE9VTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTzFsQlEyaENMRTFCUVUwc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjBRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja0lzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdG5Ra0ZETTBJc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyeEZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEyeERMRU5CUVVNN1NVRlJUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETVVJc1EwRkJRenM3UVVFdlEwUTdSMEZEUnp0QlFVTlhMRFJDUVVGaExFZEJRV2RETzBsQlEzcEVMRkZCUVZFc1JVRkJSU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRPMGxCUXpGR0xGZEJRVmNzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWp0UlFVTndSeXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3h2UWtGQmIwSXNRMEZCUXp0SlFVTnVSaXhWUVVGVkxFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hwUWtGQmFVSXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSTdVVUZETDBjc2JVSkJRVzFDTEVOQlFVTTdTVUZEZEVJc1UwRkJVeXhGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRGRrVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRE4wTXNVMEZCVXl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRja1VzVjBGQlZ5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYlVKQlFXMUNMRU5CUVVNN1NVRkRja1FzV1VGQldTeEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03U1VGRE9VWXNXVUZCV1N4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRNVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRGRFWXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRE4wTXNZVUZCWVN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYjBKQlFXOUNMRU5CUVVNN1NVRkRMMFVzVlVGQlZTeEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRGVFWXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTVUZETlVJc1QwRkJUeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETDBNc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRU5CUVVNN1NVRkRNVVlzVVVGQlVTeEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03U1VGRE4wSXNUMEZCVHl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdRMEZET1VJc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVTJWeFVHRnNaWFIwWlNCN1hHNGdJQzh2SUZSb1pYSmxJR0Z5WlNCMGIyOGdiWFZqYUNCd2NtOWliR1Z0SUhkcGRHZ2dhVzVrWlhobGNpQndjbTl3WlhKMGVTQnBiaUIwZVhCbGMyTnlhWEIwTGx4dUlDQXZMeUF2S2lwY2JpQWdMeThnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2lCamFHRnlZV04wWlhKY2JpQWdMeThnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCRGIyeHZjbHh1SUNBdkx5QWdLaTljYmlBZ0x5OGdXMjA2SUhOMGNtbHVaMTA2SUhOMGNtbHVaenRjYmlBZ0x5b3FJRTF2Ym05dFpYSWdZMjlzYjNKY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzBnVFc5dWIyMWxjbHh1SUNBZ0tpOWNiaUFnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRk5sY1ZCaGJHVjBkR1ZDWVhObElHbHRjR3hsYldWdWRITWdVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDOHFLaUJRWVd4bGRIUmxJSGRwZEdnZ2MyaGhaR1Z6SUc5bUlIQnlhVzFoY25rZ1kyOXNiM0p6WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCIvLyBEYXRhIHN0cnVjdHVyZXMgZm9yIFYtRG9tYWluIHJlZ2lvbnMgb2YgYW50aWJvZGllc1xuZXhwb3J0IHZhciBWZFJlZ2lvblR5cGU7XG4oZnVuY3Rpb24gKFZkUmVnaW9uVHlwZSkge1xuICAgIFZkUmVnaW9uVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbiAgICBWZFJlZ2lvblR5cGVbXCJGUlwiXSA9IFwiZnJhbWV3b3JrXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiQ0RSXCJdID0gXCJjZHJcIjtcbn0pKFZkUmVnaW9uVHlwZSB8fCAoVmRSZWdpb25UeXBlID0ge30pKTtcbi8qKiBEZXNjcmliZXMgVi1ET01BSU4gKElHIGFuZCBUUikgcmVnaW9uIChvZiBtdWx0aXBsZSBhbGlnbm1lbnQpXG4gKiBodHRwczovL3d3dy5pbWd0Lm9yZy9JTUdUU2NpZW50aWZpY0NoYXJ0L051bWJlcmluZy9JTUdUSUdWTHN1cGVyZmFtaWx5Lmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uIHtcbiAgICAvKipcbiAgICAgKiBzdGFydCBhbmQgcG9zaXRpb24gYXJlIHN0cmluZ3MgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gcG9zaXRpb24gbmFtZXMgYXMgY29sdW1uIG5hbWVzIGluIEFOQVJDSSBvdXRwdXRcbiAgICAgKiBAcGFyYW0ge1ZkUmVnaW9uVHlwZX0gdHlwZSAgVHlwZSBvZiB0aGUgcmVnaW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIE5hbWUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmRlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvblN0YXJ0TmFtZSAgUmVnaW9uIHN0YXJ0IHBvc2l0aW9uIChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uRW5kTmFtZSAgUmVnaW9uIGVuZCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIG5hbWUsIGNoYWluLCBvcmRlciwgcG9zaXRpb25TdGFydE5hbWUsIHBvc2l0aW9uRW5kTmFtZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5wb3NpdGlvblN0YXJ0TmFtZSA9IHBvc2l0aW9uU3RhcnROYW1lO1xuICAgICAgICB0aGlzLnBvc2l0aW9uRW5kTmFtZSA9IHBvc2l0aW9uRW5kTmFtZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVF0Y21WbmFXOXVjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluWmtMWEpsWjJsdmJuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc2NVUkJRWEZFTzBGQlJYSkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxGbEJTVmc3UVVGS1JDeFhRVUZaTEZsQlFWazdTVUZEZEVJc2JVTkJRVzFDTEVOQlFVRTdTVUZEYmtJc1owTkJRV2RDTEVOQlFVRTdTVUZEYUVJc01rSkJRVmNzUTBGQlFUdEJRVU5pTEVOQlFVTXNSVUZLVnl4WlFVRlpMRXRCUVZvc1dVRkJXU3hSUVVsMlFqdEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGRkJRVkU3U1VGUmJrSTdPenM3T3pzN08wOUJVVWM3U1VGRFNDeFpRVUZaTEVsQlFXdENMRVZCUVVVc1NVRkJXU3hGUVVGRkxFdEJRV0VzUlVGQlJTeExRVUZoTEVWQlEzaEZMR2xDUVVGNVFpeEZRVUZGTEdWQlFYVkNPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zWlVGQlpTeEhRVUZITEdWQlFXVXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkVZWFJoSUhOMGNuVmpkSFZ5WlhNZ1ptOXlJRll0Ukc5dFlXbHVJSEpsWjJsdmJuTWdiMllnWVc1MGFXSnZaR2xsYzF4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JXWkZKbFoybHZibFI1Y0dVZ2UxeHVJQ0JWYm10dWIzZHVJRDBnSjNWdWEyNXZkMjRuTEZ4dUlDQkdVaUE5SUNkbWNtRnRaWGR2Y21zbkxGeHVJQ0JEUkZJZ1BTQW5ZMlJ5Snl4Y2JuMWNibHh1THlvcUlFUmxjMk55YVdKbGN5QldMVVJQVFVGSlRpQW9TVWNnWVc1a0lGUlNLU0J5WldkcGIyNGdLRzltSUcxMWJIUnBjR3hsSUdGc2FXZHViV1Z1ZENsY2JpQXFJR2gwZEhCek9pOHZkM2QzTG1sdFozUXViM0puTDBsTlIxUlRZMmxsYm5ScFptbGpRMmhoY25RdlRuVnRZbVZ5YVc1bkwwbE5SMVJKUjFaTWMzVndaWEptWVcxcGJIa3VhSFJ0YkZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtUlNaV2RwYjI0Z2UxeHVJQ0IwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1U3WEc0Z0lHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1kyaGhhVzQ2SUhOMGNtbHVaenRjYmlBZ2IzSmtaWEk2SUc1MWJXSmxjanRjYmlBZ2NHOXphWFJwYjI1VGRHRnlkRTVoYldVNklITjBjbWx1Wnp0Y2JpQWdjRzl6YVhScGIyNUZibVJPWVcxbE9pQnpkSEpwYm1jN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUhOMFlYSjBJR0Z1WkNCd2IzTnBkR2x2YmlCaGNtVWdjM1J5YVc1bmN5QmlaV05oZFhObElIUm9aWGtnWTI5eWNtVnpjRzl1WkNCMGJ5QndiM05wZEdsdmJpQnVZVzFsY3lCaGN5QmpiMngxYlc0Z2JtRnRaWE1nYVc0Z1FVNUJVa05KSUc5MWRIQjFkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmtVbVZuYVc5dVZIbHdaWDBnZEhsd1pTQWdWSGx3WlNCdlppQjBhR1VnY21WbmFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJQ0JPWVcxbElHOW1JSFJvWlNCeVpXZHBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTm9ZV2x1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjbVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdJRkpsWjJsdmJpQnpkR0Z5ZENCd2IzTnBkR2x2YmlBb2FXNWpiSFZ6YVhabEtWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVGYm1ST1lXMWxJQ0JTWldkcGIyNGdaVzVrSUhCdmMybDBhVzl1SUNocGJtTnNkWE5wZG1VcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWgwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1VzSUc1aGJXVTZJSE4wY21sdVp5d2dZMmhoYVc0NklITjBjbWx1Wnl3Z2IzSmtaWEk2SUc1MWJXSmxjaXhjYmlBZ0lDQndiM05wZEdsdmJsTjBZWEowVG1GdFpUb2djM1J5YVc1bkxDQndiM05wZEdsdmJrVnVaRTVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXVkSGx3WlNBOUlIUjVjR1U3WEc0Z0lDQWdkR2hwY3k1dVlXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbU5vWVdsdUlEMGdZMmhoYVc0N1hHNGdJQ0FnZEdocGN5NXZjbVJsY2lBOUlHOXlaR1Z5TzF4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1VGRHRnlkRTVoYldVZ1BTQndiM05wZEdsdmJsTjBZWEowVG1GdFpUdGNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVSVzVrVG1GdFpTQTlJSEJ2YzJsMGFXOXVSVzVrVG1GdFpUdGNiaUFnZlZ4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tICcuLi91bmtub3duJztcbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBuZXcgREcuUG9pbnQoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCwgZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wKTtcbn07XG5ERy5SZWN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdCA8PSB4ICYmIHggPD0gdGhpcy5yaWdodCAmJiB0aGlzLnRvcCA8PSB5ICYmIHkgPD0gdGhpcy5ib3R0b207XG59O1xuZXhwb3J0IGNsYXNzIFBvc2l0aW9uTW9ub21lckluZm8ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBuZXcgREcuUmVjdCgwLCAwLCAwLCAwKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9zaXRpb25JbmZvIHtcbiAgICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHBvc2l0aW9uICgnMTExQScsICcxMTEuMScsIGV0YylcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgICAgICB0aGlzLnJvd0NvdW50ID0gMDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgV2ViTG9nbyBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IC0xO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lID0gQ29sb3JTY2hlbWVzW051Y2xlb3RpZGVzV2ViTG9nby5yZXNpZHVlc1NldF07XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICB0aGlzLmF4aXNIZWlnaHQgPSAxMjtcbiAgICAgICAgdGhpcy5zZXFDb2wgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIG1heExlbmd0aDogbnVtYmVyID0gMTAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSAwO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMudmlld1N1YnMgPSBbXTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IFdlYkxvZ28udmlld2VyQ291bnQ7XG4gICAgICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCA9IHRoaXMuZmxvYXQoJ3Bvc2l0aW9uV2lkdGgnLCAxNiAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5taW5IZWlnaHQgPSB0aGlzLmZsb2F0KCdtaW5IZWlnaHQnLCA1MCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZmxvYXQoJ21heEhlaWdodCcsIDEwMCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcyA9IHRoaXMuYm9vbCgnY29uc2lkZXJOdWxsU2VxdWVuY2VzJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdzdGFydFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5maXhXaWR0aCA9IHRoaXMuYm9vbCgnZml4V2lkdGgnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudmVydGljYWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygndmVydGljYWxBbGlnbm1lbnQnLCAnbWlkZGxlJywgeyBjaG9pY2VzOiBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ10gfSk7XG4gICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsIHsgY2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddIH0pO1xuICAgICAgICB0aGlzLmZpdEFyZWEgPSB0aGlzLmJvb2woJ2ZpdEFyZWEnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNraXBFbXB0eVBvc2l0aW9ucyA9IHRoaXMuYm9vbCgnc2tpcEVtcHR5UG9zaXRpb25zJywgZmFsc2UpO1xuICAgIH1cbiAgICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gICAgZ2V0IExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQb3NpdGlvbiA8PSB0aGlzLmVuZFBvc2l0aW9uID8gdGhpcy5lbmRQb3NpdGlvbiAtIHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgOiAwO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXZWJMb2dvIHNlY29uZCBpbml0aWFsaXphdGlvbiEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGVscFVybCA9ICcvaGVscC92aXN1YWxpemUvdmlld2Vycy93ZWItbG9nby5tZCc7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1aS5kaXYoJ05vIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1aS5jYW52YXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFt0aGlzLm1zZ0hvc3QsIHRoaXMuY2FudmFzXSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLmhlaWdodCA9ICcxMnB4JztcbiAgICAgICAgICAgIGNvbnN0IGdldE1vbm9tZXIgPSAocCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpQb3MgPSBNYXRoLmZsb29yKHAueCAvIHRoaXMuX3Bvc2l0aW9uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IE9iamVjdC5rZXlzKHBvc2l0aW9uLmZyZXEpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKChtKSA9PiBwb3NpdGlvbi5mcmVxW21dLmJvdW5kcy5jb250YWlucyhwLngsIHAueSkpO1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBtb25vbWVyLCBwb3NpdGlvbi5mcmVxW21vbm9tZXJdXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB0aGlzLnN1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlb3ZlcicpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgYXJncy54ICsgMTYsIGFyZ3MueSArIDE2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudCh0aGlzLmNhbnZhcywgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgZS5idXR0b24gIT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnRzIGRlc2VsZWN0IGFsbCByb3dzIGlmIHdlIG1pc3MgbW9ub21lciBib3VuZHNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5zbGlkZXIucm9vdCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Sb290U2l6ZUNoYW5nZWQoKSBgICtcbiAgICAgICAgLy8gICBgcm9vdC53aWR0aD0ke3RoaXMucm9vdC5jbGllbnRXaWR0aH0sIHJvb3QuaGVpZ2h0PSR7dGhpcy5yb290LmNsaWVudEhlaWdodH0sIGAgK1xuICAgICAgICAvLyAgIGBjYW52YXMud2lkdGg9JHt0aGlzLmNhbnZhcy53aWR0aH0sIGNhbnZhcy5oZWlnaHQ9JHt0aGlzLmNhbnZhcy5oZWlnaHR9IC5gKTtcbiAgICB9XG4gICAgLyoqIEFzc2lnbnMge0BsaW5rIHNlcUNvbH0gYW5kIHtAbGluayBjcH0gYmFzZWQgb24ge0BsaW5rIHNlcXVlbmNlQ29sdW1uTmFtZX0gYW5kIGNhbGxzIHtAbGluayByZW5kZXJ9KCkuXG4gICAgICovXG4gICAgdXBkYXRlU2VxQ29sKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPyB0aGlzLmRhdGFGcmFtZS5jb2wodGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnBpY2tVcFNlcUNvbCh0aGlzLmRhdGFGcmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnNlcUNvbCA/IHRoaXMuc2VxQ29sLm5hbWUgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKHRoaXMuc2VxQ29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICB1cGRhdGVQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXFDb2wpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBjYXRlZ29yaWVzO1xuICAgICAgICBpZiAodGhpcy5zaHJpbmtFbXB0eVRhaWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KEFycmF5LmZyb20oQXJyYXkoaW5kaWNlcy5sZW5ndGgpLmtleXMoKSkubWFwKChpKSA9PiB0aGlzLnNlcUNvbC5nZXQoaW5kaWNlc1tpXSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gdGhpcy5zZXFDb2wuY2F0ZWdvcmllcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi5jYXRlZ29yaWVzLm1hcCgocykgPT4gcyAhPT0gbnVsbCA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHMpLmxlbmd0aCA6IDApKSA6IDA7XG4gICAgICAgIC8vIEdldCBwb3NpdGlvbiBuYW1lcyBmcm9tIGRhdGEgY29sdW1uIHRhZyAncG9zaXRpb25OYW1lcydcbiAgICAgICAgY29uc3QgcG9zaXRpb25OYW1lc1R4dCA9IHRoaXMuc2VxQ29sLmdldFRhZygncG9zaXRpb25OYW1lcycpO1xuICAgICAgICAvLyBGYWxsYmFjayBpZiAncG9zaXRpb25OYW1lcycgdGFnIGlzIG5vdCBwcm92aWRlZFxuICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBwb3NpdGlvbk5hbWVzVHh0ID8gcG9zaXRpb25OYW1lc1R4dC5zcGxpdCgnLCAnKS5tYXAoKG4pID0+IG4udHJpbSgpKSA6XG4gICAgICAgICAgICBbLi4uQXJyYXkobWF4TGVuZ3RoKS5rZXlzKCldLm1hcCgoalBvcykgPT4gYCR7alBvcyArIDF9YCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9ICh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSA6IDA7XG4gICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAodGhpcy5lbmRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5lbmRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLmVuZFBvc2l0aW9uTmFtZSkgOiAobWF4TGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Qcm9wZXJ0eUNoYW5nZWQoICR7cHJvcGVydHkubmFtZX0gPSAnJyB9KWApO1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSk7XG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnY29uc2lkZXJOdWxsU2VxdWVuY2VzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlcXVlbmNlQ29sdW1uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0UG9zaXRpb25OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5kUG9zaXRpb25OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncG9zaXRpb25XaWR0aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbkhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtYXhIZWlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml4V2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmVydGljYWxBbGlnbm1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbEFsaWdubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXRBcmVhJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nocmlua0VtcHR5VGFpbCc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgICAgIGNvbnN0IF9zdXBlciA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgICAgICAgb25UYWJsZUF0dGFjaGVkOiB7IGdldDogKCkgPT4gc3VwZXIub25UYWJsZUF0dGFjaGVkIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhRnJhbWVUeHQgPSB0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJztcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgICAgICAgICBfc3VwZXIub25UYWJsZUF0dGFjaGVkLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24ub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4gdGhpcy5yZW5kZXIoKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdGhpcy5pbml0KCk7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXRhY2goKSB7XG4gICAgICAgIGNvbnN0IF9zdXBlciA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgICAgICAgZGV0YWNoOiB7IGdldDogKCkgPT4gc3VwZXIuZGV0YWNoIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhRnJhbWVUeHQgPSBgJHt0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJ31gO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICAgICAgICAgIF9zdXBlci5kZXRhY2guY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB0aGlzLmhvc3QucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9udWxsU2VxdWVuY2UoZmlsbGVyUmVzaWR1ZSA9ICdYJykge1xuICAgICAgICBpZiAodGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMpXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKS5maWxsKGZpbGxlclJlc2lkdWUpLmpvaW4oJycpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIF9jYWxjdWxhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuaG9zdCB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBjb25zdCBwb3NOYW1lID0gdGhpcy5wb3NpdGlvbk5hbWVzW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10gPSBuZXcgUG9zaXRpb25JbmZvKHBvc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDIwMjItMDUtMDUgYXNrYWxraW4gaW5zdHJ1Y3RlZCB0byBzaG93IFdlYkxvZ28gYmFzZWQgb24gZmlsdGVyIChub3Qgc2VsZWN0aW9uKVxuICAgICAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICAvLyBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgPyB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkgOlxuICAgICAgICAvLyAgIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gaW5kaWNlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucm93c051bGwgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5kaWNlcykge1xuICAgICAgICAgICAgbGV0IHMgPSAodGhpcy5zZXFDb2wuZ2V0KGkpKTtcbiAgICAgICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgICAgIHMgPSB0aGlzLl9udWxsU2VxdWVuY2UoKTtcbiAgICAgICAgICAgICAgICArK3RoaXMucm93c051bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZXFNID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEocyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBzZXFNW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIHx8ICctJztcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgICAgICAgICAgIHBtSW5mb1ttXSA9IG5ldyBQb3NpdGlvbk1vbm9tZXJJbmZvKCk7XG4gICAgICAgICAgICAgICAgcG1JbmZvW21dLmNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gaW4gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodCAqIHI7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG4gICAgICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgZnJlcSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuICAgICAgICAgICAgbGV0IHkgPSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcbiAgICAgICAgICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIHksIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIGgpO1xuICAgICAgICAgICAgICAgIHkgKz0gaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICB9XG4gICAgLy8gcmVmbGVjdCBjaGFuZ2VzIG1hZGUgdG8gZmlsdGVyL3NlbGVjdGlvblxuICAgIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LmlubmVyVGV4dCA9IGBVbmtub3duIHBhbGV0dGUgKGNvbHVtbiBzZW1UeXBlOiAnJHt0aGlzLnNlcUNvbC5zZW1UeXBlfScpLmA7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCAhdGhpcy5jcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmICghZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHJlY2FsYylcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZSgpO1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICAgICAgZy5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSB0aGlzLnRleHRCYXNlbGluZTtcbiAgICAgICAgLy8gUHJldmVudHMgZGl2aXNpb24gYnkgemVybyBvbiBMZW5ndGggPSAwXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyNyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgICAgICBnLnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgICAgICBjb25zdCBoU2NhbGUgPSBwb3NOYW1lTWF4V2lkdGggPCAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpID8gMSA6ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgLyBwb3NOYW1lTWF4V2lkdGg7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBnLnNldFRyYW5zZm9ybShoU2NhbGUsIDAsIDAsIDEsIGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoICsgdGhpcy5fcG9zaXRpb25XaWR0aCAvIDIsIDApO1xuICAgICAgICAgICAgZy5maWxsVGV4dChwb3MubmFtZSwgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21vbm9tZXIsIHBtSW5mb10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciAhPT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBwbUluZm8uYm91bmRzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb250U3R5bGUgPSAnMTZweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhY2tzIHRvIHNjYWxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRvIHRhcmdldCByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVyQXNjZW50ID0gMC4yNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVySGVpZ2h0ID0gMTIuMjtcbiAgICAgICAgICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ2xpZ2h0Z3JheSc7XG4gICAgICAgICAgICAgICAgICAgIGcubGluZVdpZHRoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgZy5yZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAoX2EgPSB0aGlzLmNwLmdldChtb25vbWVyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcC5nZXQoJ290aGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIC8vZy5maWxsUmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1UbSA9IGcubWVhc3VyZVRleHQobW9ub21lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoYG06ICR7bX0sIG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50OiAke21NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50fWApO1xuICAgICAgICAgICAgICAgICAgICBnLnNldFRyYW5zZm9ybShiLndpZHRoIC8gbVRtLndpZHRoLCAwLCAwLCBiLmhlaWdodCAvIHVwcGVyY2FzZUxldHRlckhlaWdodCwgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQobW9ub21lciwgMCwgLXVwcGVyY2FzZUxldHRlckFzY2VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0KSk7XG4gICAgICAgIGlmICh0aGlzLmZpdEFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB5U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oeFNjYWxlLCB5U2NhbGUpKTtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCAqIHNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB3aWR0aCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAvLyBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHdpZHRoID4gdGhpcy5yb290LmNsaWVudFdpZHRoID8gaGVpZ2h0IC0gOCA6IGhlaWdodDtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gdGhpcy5ob3N0LmNsaWVudEhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICogcjtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2NhbnZhc0hlaWdodH1weGApO1xuICAgICAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgICAgICBpZiAodGhpcy5maXhXaWR0aCkge1xuICAgICAgICAgICAgLy8gZnVsbCB3aWR0aCBmb3IgY2FudmFzIGhvc3QgYW5kIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBhbGxvdyBzY3JvbGwgY2FudmFzIGluIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCd0ZXh0LWFsaWduJywgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KTtcbiAgICAgICAgICAgIC8vIHZlcnRpY2FsIGFsaWdubWVudFxuICAgICAgICAgICAgbGV0IGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGAke2hvc3RUb3BNYXJnaW59cHhgLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yb290LmNsaWVudEhlaWdodCA8IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7dGhpcy5yb290LmNsaWVudEhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFxuICAgICAgICAvLyAgIGB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLmhvc3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgICdcXG4nICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuaGVpZ2h0ICAgICAgID0gJHt0aGlzLmNhbnZhcy5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICR7dGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0fWApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAgICAgKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICAgICAqL1xuICAgIHN0YXRpYyBwaWNrVXBQYWxldHRlKHNlcUNvbCwgbWluTGVuZ3RoID0gNSkge1xuICAgICAgICBsZXQgcmVzID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChzZXFDb2wuc2VtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpLCBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbV0sXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlc1xuICAgICAgICAgICAgLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1swXSkpO1xuICAgICAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgICAgICBpZiAobWF4Q29zID4gMC42NSlcbiAgICAgICAgICAgIHJlcyA9IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzID0gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAgICAgKiBAcmV0dXJuIHsgU2VxQ29sU3RhdHMgfSwgc2FtZUxlbmd0aDogYm9vbGVhbiB9IHN0YXRzIG9mIGNvbHVtbiBzZXF1ZW5jZXNcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgICAgIGNvbnN0IGZyZXEgPSB7fTtcbiAgICAgICAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICAgICAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG4gICAgICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgICAgICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtU2VxLmxlbmd0aCA+IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtU2VxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG0gaW4gZnJlcSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBmcmVxOiBmcmVxLCBzYW1lTGVuZ3RoOiBzYW1lTGVuZ3RoIH07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAgICAgIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG4gICAgICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgICAgIGNvbnN0IGFscGhhYmV0QSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2Yga2V5cykge1xuICAgICAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgICAgIGNvbnN0IGZyZXFWID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ViA9IG5ldyBWZWN0b3IoYWxwaGFiZXRBKTtcbiAgICAgICAgY29uc3QgY29zID0gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xuICAgICAgICByZXR1cm4gY29zO1xuICAgIH1cbiAgICAvKiogRmlyc3QgdHJ5IHRvIGZpbmQgY29sdW1uIHdpdGggc2VtVHlwZSAnYWxpZ25lZFNlcXVlbmNlJy5cbiAgICAgKiBOZXh0IGxvb2sgZm9yIGNvbHVtbiB3aXRoIGRhdGEgYWxwaGFiZXQgY29ycmVzcG9uZGluZyB0byBhbnkgb2YgdGhlIGtub3duIHBhbGV0dGVzLlxuICAgICAqIEBwYXJhbSB7REcuRGF0YUZyYW1lfSBkYXRhRnJhbWVcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IFRoZSBjb2x1bW4gd2Ugd2VyZSBsb29raW5nIGZvciBvciBudWxsXG4gICAgICovXG4gICAgcGlja1VwU2VxQ29sKGRhdGFGcmFtZSkge1xuICAgICAgICBsZXQgcmVzID0gZGF0YUZyYW1lLmNvbHVtbnMuYnlTZW1UeXBlKCdhbGlnbmVkU2VxdWVuY2UnKTtcbiAgICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkYXRhRnJhbWUuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKGNvbCwgNSk7XG4gICAgICAgICAgICAgICAgaWYgKGNwICE9PSBudWxsICYmICEoY3AgaW5zdGFuY2VvZiBVbmtub3duU2VxUGFsZXR0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gY29sO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAgICAgKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICovXG4gICAgc3RhdGljIHNwbGl0dGVyQXNGYXN0YShzZXEpIHtcbiAgICAgICAgY29uc3QgcmVzID0gd3Uoc2VxLnRvU3RyaW5nKCkubWF0Y2hBbGwoV2ViTG9nby5tb25vbWVyUmUpKVxuICAgICAgICAgICAgLm1hcCgobWEpID0+IHtcbiAgICAgICAgICAgIGxldCBtUmVzO1xuICAgICAgICAgICAgY29uc3QgbSA9IG1hWzBdO1xuICAgICAgICAgICAgaWYgKG0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChtIGluIFdlYkxvZ28uYWFTeW5vbnltcykge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gV2ViTG9nby5hYVN5bm9ueW1zW21dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbVJlcyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb25nIG1vbm9tZXIgJyR7bX0nIGhhcyBub3QgYSBzaG9ydCBzeW5vbnltLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1SZXM7XG4gICAgICAgIH0pLnRvQXJyYXkoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIEdldHMgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlIGJ5IHNlcGFyYXRvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gICAgICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIChzZXEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnZmFzdGEnKSlcbiAgICAgICAgICAgIHJldHVybiBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YTtcbiAgICAgICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSlcbiAgICAgICAgICAgIHJldHVybiBXZWJMb2dvLmdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuICAgICAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxuICAgIH1cbn1cbldlYkxvZ28ucmVzaWR1ZXNTZXQgPSAnbnVjbGVvdGlkZXMnO1xuV2ViTG9nby52aWV3ZXJDb3VudCA9IC0xO1xuV2ViTG9nby5tb25vbWVyUmUgPSAvXFxbKFxcdyspXFxdfChcXHcpfCgtKS9nO1xuLyoqIE9ubHkgc29tZSBvZiB0aGUgc3lub255bXMuIFRoZXNlIHdlcmUgb2J0YWluZWQgZnJvbSB0aGUgY2x1c3RlcmVkIG9saWdvcGVwdGlkZSBkYXRhc2V0LiAqL1xuV2ViTG9nby5hYVN5bm9ueW1zID0ge1xuICAgICdbTWVObGVdJzogJ0wnLFxuICAgICdbTWVBXSc6ICdBJyxcbiAgICAnW01lR10nOiAnRycsXG4gICAgJ1tNZUZdJzogJ0YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWQyVmlMV3h2WjI4dWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUozWldJdGJHOW5ieTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3UVVGRFFTeFBRVUZQTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlEzUkRMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZkRU1zVDBGQlR5eEZRVUZGTEUxQlFVMHNTVUZCU1N4RFFVRkRPMEZCUTNCQ0xFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNUVUZCVFN4RFFVRkRPMEZCUlRkQ0xFOUJRVThzUlVGQlF5eE5RVUZOTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVU4yUlN4UFFVRlBMRVZCUVVNc1dVRkJXU3hGUVVGRkxHZENRVUZuUWl4RlFVRkRMRTFCUVUwc2FVUkJRV2xFTEVOQlFVTTdRVUZETDBZc1QwRkJUeXhGUVVGRExGVkJRVlVzUlVGQlJTeHJRa0ZCYTBJc1JVRkJReXhOUVVGTkxHVkJRV1VzUTBGQlF6dEJRVU0zUkN4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYUVVc1QwRkJUeXhGUVVGRExHbENRVUZwUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNXVUZCV1N4RFFVRkRPMEZCYjBKcVJTeHBRa0ZCYVVJc1EwRkJReXhUUVVGVExFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1ZVRkJVeXhMUVVGcFFqdEpRVU40UlN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc1EwRkJRenRKUVVNeFF5eFBRVUZQTEVsQlFVa3NSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRNMFVzUTBGQlF5eERRVUZETzBGQlJVWXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1NVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOb1JpeERRVUZETEVOQlFVTTdRVUZGUml4TlFVRk5MRTlCUVU4c2JVSkJRVzFDTzBsQlV6bENPMUZCUTBVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wTkJRMFk3UVVGRlJDeE5RVUZOTEU5QlFVOHNXVUZCV1R0SlFVdDJRanM3VDBGRlJ6dEpRVU5JTEZsQlFWa3NTVUZCV1R0UlFVTjBRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSanRCUVVWRUxFMUJRVTBzVDBGQlR5eFBRVUZSTEZOQlFWRXNSVUZCUlN4RFFVRkRMRkZCUVZFN1NVRnpSSFJETzFGQlEwVXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRnVSRVlzWVVGQlVTeEhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNSQ0xHZENRVUZYTEVkQlFWa3NTMEZCU3l4RFFVRkRPMUZCUlhKRExEUkdRVUUwUmp0UlFVTnNSaXhQUVVGRkxFZEJRWE5DTEVsQlFVa3NRMEZCUXp0UlFWRXZRaXhsUVVGVkxFZEJRVmNzUlVGQlJTeERRVUZETzFGQlJYaENMRmRCUVUwc1IwRkJOa0lzU1VGQlNTeERRVUZETzFGQlEyaEVMRzFEUVVGdFF6dFJRVU16UWl4alFVRlRMRWRCUVcxQ0xFVkJRVVVzUTBGQlF6dFJRVVV2UWl4bFFVRlZMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM1pDTEdGQlFWRXNSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRnJRbkpDTEd0Q1FVRmhMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJSVGRDTEd0Q1FVRmhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wSXNaMEpCUVZjc1IwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVTk2UWl4aFFVRlJMRWRCUVcxQ0xFVkJRVVVzUTBGQlF6dFJRVXR3UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEY0VNc1QwRkJUeXhEUVVGRExGZEJRVmNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGZWtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZGTVVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeEZRVUZGTEVWQlFVVXNRMEZCUVRzNFJFRkRia0lzUTBGQlF5eERRVUZETzFGQlEzaEVMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGQk8yZEZRVU5oTEVOQlFVTXNRMEZCUXp0UlFVTXhSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFZEJRVWNzUTBGQlFUdG5SVUZEV1N4RFFVRkRMRU5CUVVNN1VVRkZNVVFzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEZGtVc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYjBKQlFXOUNMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmJFVXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRhRVVzU1VGQlNTeERRVUZETEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSVFZFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZOME1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzVVVGQlVTeEZRVU5vUlN4RlFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeFJRVUZSTEVWQlFVVXNVVUZCVVN4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEZGQlFWRXNSVUZEY0VVc1JVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU14UkN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVOdVJTeERRVUZETzBsQmNrTkVMREJFUVVFd1JEdEpRVU14UkN4SlFVRlpMRTFCUVUwN1VVRkRhRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOb1J5eERRVUZETzBsQmIwTmhMRWxCUVVrN08xbEJRMmhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhuUTBGQlowTXNRMEZCUXl4RFFVRkRPMmRDUVVOb1JDeFBRVUZQTzJGQlExSTdXVUZGUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU40UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExIRkRRVUZ4UXl4RFFVRkRPMWxCUlhKRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU53UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUlhCRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRekZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZGYWtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWb1JDdzJRMEZCTmtNN1dVRkROME1zZVVOQlFYbERPMWxCUTNwRExEQkRRVUV3UXp0WlFVVXhReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFWY3NSVUZCZFVRc1JVRkJSVHRuUWtGRGRFWXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRmRFTXNTVUZCU1N4UlFVRlJMRXRCUVVzc1MwRkJTeXhEUVVGRE8yOUNRVU55UWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzVFVGQlRTeFBRVUZQTEVkQlFYVkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXp0eFFrRkRNMFFzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1NVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV6dHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSVFZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJDeERRVUZETEVOQlFVTTdXVUZIUml4eFIwRkJjVWM3V1VGRGNrY3NUMEZCVHp0WlFVVlFMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTzI5Q1FVTmtMRTlCUVU4N1owSkJSVlFzVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCWlN4RFFVRkRPMmRDUVVNM1FpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSWGhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZPM2RDUVVNdlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0M1FrRkRia01zVFVGQlRTeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGJFWXNUMEZCVHl4SlFVRkpMRXRCUVVzc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHZRa0ZETjBRc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdhVUpCUXpsQ08zRkNRVUZOTzI5Q1FVTk1MRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdhVUpCUTI1Q08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRE8yOUNRVU12UWl4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeDFSRUZCZFVRN1owSkJRM1pFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVTdkMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzNkQ1FVTnVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPM2RDUVVOc1JpeFBRVUZQTEVsQlFVa3NTMEZCU3l4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU0zUkN4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRFNqdFpRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZTaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGTjBZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRelZDTERKRFFVRXlRenRaUVVVelF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVOQlFVTTdTMEZCUVR0SlFVVlBMR2xDUVVGcFFpeERRVUZETEVsQlFWTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhwUkVGQmFVUTdVVUZEYWtRc2NVWkJRWEZHTzFGQlEzSkdMR2xHUVVGcFJqdEpRVU51Uml4RFFVRkRPMGxCUlVRN1QwRkRSenRKUVVOTExGbEJRVms3VVVGRGJFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRek5HTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzWkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlEyaEVMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzJGQlEycEZPMWxCUTBRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTm1MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1lVRkRhRUk3VTBGRFJqdFJRVU5FTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVOHNaVUZCWlR0UlFVTnlRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMDdXVUZEWkN4UFFVRlBPMUZCUlZRc1NVRkJTU3hWUVVFNFFpeERRVUZETzFGQlEyNURMRWxCUVVrc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJUdFpRVU40UWl4TlFVRk5MRTlCUVU4c1IwRkJaU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETzFsQlEzWkZMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVTTNRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJReTlHTzJGQlFVMDdXVUZEVEN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEY2tNN1VVRkRSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRMnhGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RkxEQkVRVUV3UkR0UlFVTXhSQ3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxHdEVRVUZyUkR0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BHTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRk5VUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllUdFpRVU5vUlN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVR0WlFVTTFSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkVMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRka1VzUTBGQlF6dEpRVVZsTEdsQ1FVRnBRaXhEUVVGRExGRkJRWEZDTzFGQlEzSkVMSGRGUVVGM1JUdFJRVU40UlN4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkZiRU1zVVVGQlVTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFdEJRVXNzZFVKQlFYVkNPMmRDUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh2UWtGQmIwSTdaMEpCUTNaQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0blFrRkRjRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NiVUpCUVcxQ08yZENRVU4wUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03WjBKQlEzQkNMRTFCUVUwN1dVRkRVaXhMUVVGTExHbENRVUZwUWp0blFrRkRjRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4bFFVRmxPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU03WjBKQlEzcERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEZkQlFWYzdaMEpCUTJRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NWMEZCVnp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4VlFVRlZPMmRDUVVOaUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NjVUpCUVhGQ08yZENRVU40UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eFRRVUZUTzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEdsQ1FVRnBRanRuUWtGRGNFSXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xTkJRMUE3U1VGRFNDeERRVUZETzBsQlJYRkNMR1ZCUVdVN096czdPMWxCUTI1RExFMUJRVTBzV1VGQldTeEhRVUZYTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUXpsRUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEd0RFFVRnJReXhaUVVGWkxGVkJRVlVzUTBGQlF5eERRVUZETzFsQlEzSkhMRTlCUVUwc1pVRkJaU3haUVVGSE8xbEJSWGhDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRaUVVWd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlF6ZENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMjVHTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkROMFFzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRPMjlDUVVOMlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRURHRaUVVWRUxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUTJ4Q0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlhGQ0xFMUJRVTA3T3pzN08xbEJRekZDTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFpRVU16UkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hyUTBGQmEwTXNXVUZCV1N4VlFVRlZMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eFBRVUZOTEUxQlFVMHNXVUZCUnp0WlFVVm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hKUVVGSkxFTkJRVU1zU1VGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNoQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUlhSQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNwQ0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlZNc1lVRkJZU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEhRVUZITzFGQlEzcERMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWp0WlFVTTFRaXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSVGRFTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTFvc1EwRkJRenRKUVVWVExGVkJRVlU3VVVGRGJFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRPMWxCUXk5RUxFOUJRVTg3VVVGRlZDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkZhRUlzU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVTdXVUZETjBNc1RVRkJUU3hQUVVGUExFZEJRVmNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRGJFUTdVVUZGUkN4cFJrRkJhVVk3VVVGRGFrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF6dFJRVU16UkN3eVIwRkJNa2M3VVVGRE0wY3NaMFJCUVdkRU8xRkJSV2hFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZzUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRU5CUVVNc1IwRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUZERMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3WjBKQlEwNHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVVzUTBGQlF6dG5Ra0ZEZWtJc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzJGQlEycENPMWxCUlVRc1RVRkJUU3hKUVVGSkxFZEJRV0VzVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1JDeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRE4wTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1owSkJRM3BETEUxQlFVMHNRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF6dHZRa0ZEYUVJc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NiVUpCUVcxQ0xFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMkZCUTI1Q08xTkJRMFk3VVVGRlJDdzBRa0ZCTkVJN1VVRkROVUlzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zZVVOQlFYbERPMWxCUlhwRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5zUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTVHRuUWtGRGRrTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8xTkJRM1pGTzFGQlEwUXNXVUZCV1R0UlFVVmFMRTFCUVUwc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOc1F5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNelJDeHRSa0ZCYlVZN1VVRkZia1lzTUVKQlFUQkNPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzU1VGQlNTeEhRVUY1UXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTTNSU3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF6dFpRVVV2UXl4SlFVRkpMRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzFsQlJXaERMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOcVJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjN2IwSkJRemxDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8zRkNRVU0xUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3YjBKQlEyNURMRTlCUVU4c1EwRkJReXhEUVVGRE8zRkNRVU5PTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3YjBKQlEyNUNMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlExQXNiMEpCUVc5Q08yOUNRVU4yUWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMlFzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEU0N4TFFVRkxMRTFCUVUwc1MwRkJTeXhKUVVGSkxFOUJRVThzUlVGQlJUdG5Ra0ZETTBJc1RVRkJUU3hOUVVGTkxFZEJRWGRDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE4wTXNPRUpCUVRoQ08yZENRVU01UWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNN1owSkJSWFJFTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRMUk3VTBGRFJqdFJRVU5FTEZsQlFWazdTVUZEWkN4RFFVRkRPMGxCUlVRc01rTkJRVEpETzBsQlF6TkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNUczdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4UFFVRlJMRU5CUVVNc1UwRkJVeXhIUVVGSExIRkRRVUZ4UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUzBGQlN5eERRVUZETzJkQ1FVTjRSaXhKUVVGSkxFTkJRVU1zVDBGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8yRkJRMnhETzJsQ1FVRk5PMmRDUVVOTUxFbEJRVWtzUTBGQlF5eFBRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU03WVVGRGRFTTdVMEZEUmp0UlFVVkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVNM1JDeFBRVUZQTzFGQlJWUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRka01zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZCUlN4UFFVRlBPMUZCUldZc1NVRkJTU3hOUVVGTk8xbEJRMUlzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUlhCQ0xFTkJRVU1zUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEU5QlFVOHNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU40UkN4RFFVRkRMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZGYmtNc01FTkJRVEJETzFGQlF6RkRMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU4wUkN4UFFVRlBPMUZCUlZRc05FSkJRVFJDTzFGQlF6VkNMRU5CUVVNc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dFJRVU51UWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFOUJRVThzUTBGQlF6dFJRVU4wUWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU4yUWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExIVkRRVUYxUXl4RFFVRkRPMUZCUTJwRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxFMUJRVTBzUjBGQlJ5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRk4wY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRE4wTXNUVUZCVFN4SFFVRkhMRWRCUVdsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRMME1zUTBGQlF5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMWxCUTI1Q0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVU5tTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRek5FTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkROVUk3VVVGRFJDd3JRa0ZCSzBJN1VVRkZMMElzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zUzBGQlN5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0blFrRkRla1VzU1VGQlNTeFBRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8yOUNRVVY0UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXgxUTBGQmRVTXNRMEZCUXp0dlFrRkRNVVFzTUVSQlFUQkVPMjlDUVVNeFJDeE5RVUZOTEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF6dHZRa0ZEYmtNc1RVRkJUU3h4UWtGQmNVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJSVzVETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1IwRkJSeXhYUVVGWExFTkJRVU03YjBKQlF6VkNMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTm9RaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dHZRa0ZEZWtNc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eE5RVUZCTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eHRRMEZCU1N4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRNMFFzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNN2IwSkJRM0pDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRE8yOUNRVU51UWl3clEwRkJLME03YjBKQlF5OURMRTFCUVUwc1IwRkJSeXhIUVVGblFpeERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yOUNRVVZvUkN4MVEwRkJkVU03YjBKQlEzWkRMSGxHUVVGNVJqdHZRa0ZGZWtZc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGRFdpeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExIRkNRVUZ4UWl4RlFVTXpSQ3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGFrSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF6dHBRa0ZEYUVRN1lVRkRSanRUUVVOR08wbEJRMGdzUTBGQlF6dEpRVVZQTEZGQlFWRTdVVUZEWkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUXpWQ0xFOUJRVTg3VVVGRlZDeEpRVUZKTEV0QlFVc3NSMEZCVnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZlRVlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVFVGQlRTeEhRVUZYTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFMUJRVTBzUTBGQlF6dFpRVU4yUkN4TlFVRk5MRTFCUVUwc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkRja1FzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UkN4TFFVRkxMRWRCUVVjc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFpRVU4wUWl4TlFVRk5MRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dFpRVU40UWl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTMEZCU3l4RFFVRkRPMU5CUTJ4RU8xRkJSVVFzVFVGQlRTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZGZGtNc2IwWkJRVzlHTzFGQlEzQkdMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzSkVMRTFCUVUwc1dVRkJXU3hIUVVGWExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTNCRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRmxCUVZrc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRk4wUXNOa0pCUVRaQ08xRkJRemRDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRaUVVOcVFpeHpRMEZCYzBNN1dVRkRkRU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFdEJRVXNzU1VGQlNTeERRVUZETzFsQlF6ZEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRE8xbEJRM1pETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8xTkJRMmhGTzJGQlFVMDdXVUZEVEN3NFFrRkJPRUk3V1VGRE9VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZEZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4SFFVRkhMR2RDUVVGblFpeERRVUZETzFsQlF6ZERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRk9VTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZsQlFWa3NSVUZCUlN4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0WlFVVndSU3h4UWtGQmNVSTdXVUZEY2tJc1NVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzUkNMRkZCUVZFc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RlFVRkZPMmRDUVVOb1F5eExRVUZMTEV0QlFVczdiMEpCUTFJc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUVHRuUWtGRFVpeExRVUZMTEZGQlFWRTdiMEpCUTFnc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyNUZMRTFCUVUwN1owSkJRMUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzVFVGQlRUdGhRVU5RTzFsQlEwUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMR0ZCUVdFc1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFsQlJUZEZMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RlFVRkZPMmRDUVVOdVF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnlSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEycEVPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8yRkJRMnhGTzFOQlEwWTdVVUZGUkN4cFFrRkJhVUk3VVVGRGFrSXNOa1JCUVRaRU8xRkJRemRFTERaRVFVRTJSRHRSUVVNM1JDdzJSRUZCTmtRN1VVRkROMFFzTmtSQlFUWkVPMUZCUXpkRUxGZEJRVmM3VVVGRFdDd3lSRUZCTWtRN1VVRkRNMFFzSzBSQlFTdEVPMGxCUTJwRkxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRnBRaXhGUVVGRkxGbEJRVzlDTEVOQlFVTTdVVUZEYkVVc1NVRkJTU3hIUVVGSExFZEJRWE5DTEVsQlFVa3NRMEZCUXp0UlFVTnNReXhSUVVGUkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEZUVJc1MwRkJTeXhWUVVGVkxFTkJRVU1zZDBKQlFYZENPMmRDUVVOMFF5eEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETzJkQ1FVTndReXhOUVVGTk8xbEJRMUlzUzBGQlN5eFhRVUZYTEVOQlFVTXNkMEpCUVhkQ08yZENRVU4yUXl4SFFVRkhMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMmRDUVVOMlF5eE5RVUZOTzFOQlExQTdVVUZEUkN4TlFVRk5MRXRCUVVzc1IwRkJaMElzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0UlFVVjRSaXhOUVVGTkxHdENRVUZyUWl4SFFVRm5RenRaUVVOMFJDeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMWxCUXpORkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEZUVVc1EwRkJRenRSUVVOR0xHZEVRVUZuUkR0UlFVTm9SQ3hOUVVGTkxIRkNRVUZ4UWl4SFFVRmhMR3RDUVVGclFqdGhRVU4yUkN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBRc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFpRVU5tTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3V1VGRmJrVXNSMEZCUnl4SFFVRkhMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXp0UlFVVnFReXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTklMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQmFVSXNSVUZCUlN4VFFVRnBRaXhGUVVGRkxGRkJRWE5DTzFGQlF6RkZMRTFCUVUwc1NVRkJTU3hIUVVFMFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1NVRkJTU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzUkNMRWxCUVVrc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYyUWl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUlROQ0xFbEJRVWtzVjBGQlZ5eEpRVUZKTEVsQlFVazdaMEpCUTNKQ0xGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMmxDUVVOMlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWenRuUWtGRGJFTXNWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVWeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1UwRkJVeXhGUVVGRk8yZENRVU16UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdHZRa0ZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXp0M1FrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOa0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2FVSkJRMlE3WVVGRFJqdFRRVU5HTzFGQlEwUXNUMEZCVHl4RlFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVlVGQlZTeEZRVUZGTEZWQlFWVXNSVUZCUXl4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlRTeE5RVUZOTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQmEwSXNSVUZCUlN4UlFVRnhRaXhGUVVGRkxGbEJRVzlDTEVkQlFVYzdVVUZEY0Vjc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFWTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVVjJRaXhOUVVGTkxFdEJRVXNzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZETTBJc1RVRkJUU3hUUVVGVExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEzQkNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZWtNN1VVRkRSQ3d3UmtGQk1FWTdVVUZETVVZc1RVRkJUU3hMUVVGTExFZEJRVmNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVFVGQlRTeFRRVUZUTEVkQlFWY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGFFUXNUVUZCVFN4SFFVRkhMRWRCUVZjc1owSkJRV2RDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcEhMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFN5eFpRVUZaTEVOQlFVTXNVMEZCZFVJN1VVRkRNVU1zU1VGQlNTeEhRVUZITEVkQlFYRkNMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VVVGRE0wVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRk8xbEJRMllzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRk8yZENRVU51UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVkQlFXZENMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzUkVMRWxCUVVrc1JVRkJSU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4WlFVRlpMR2xDUVVGcFFpeERRVUZETEVWQlFVVTdiMEpCUTNKRUxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUTFZc1RVRkJUVHRwUWtGRFVEdGhRVU5HTzFOQlEwWTdVVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGSlJEczdPMDlCUjBjN1NVRkRTU3hOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFWRTdVVUZEY0VNc1RVRkJUU3hIUVVGSExFZEJRV0VzUlVGQlJTeERRVUZ0UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRoUVVOdVJpeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRnZRaXhGUVVGRkxFVkJRVVU3V1VGRE5VSXNTVUZCU1N4SlFVRlpMRU5CUVVNN1dVRkRha0lzVFVGQlRTeERRVUZETEVkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3WjBKQlEyaENMRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZWTEVWQlFVVTdiMEpCUXpOQ0xFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU01UWp0eFFrRkJUVHR2UWtGRFRDeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMjlDUVVOV0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1EwRkJRenRwUWtGREwwUTdZVUZEUmp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTFZN1dVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJSV1lzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZOQlFXbENPMUZCUTNSRUxFOUJRVThzUTBGQlF5eEhRVUZYTEVWQlFVVXNSVUZCUlR0WlFVTnlRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVMSGxFUVVGNVJEdEpRVU5zUkN4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hKUVVGSkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRM3BETEU5QlFVOHNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJRenRoUVVNMVFpeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyeEVMRTlCUVU4c1QwRkJUeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE96dFpRVVZ1UkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOUNRVUZ2UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3BFTERCQ1FVRXdRanRKUVVNMVFpeERRVUZET3p0QlFYSnlRbUVzYlVKQlFWY3NSMEZCUnl4aFFVRmhMRU5CUVVNN1FVRkRNMElzYlVKQlFWY3NSMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVhGdlFucENMR2xDUVVGVExFZEJRVWNzY1VKQlFYRkNMRU5CUVVNN1FVRnBSR3BFTERoR1FVRTRSanRCUVVNdlJTeHJRa0ZCVlN4SFFVRXJRanRKUVVOMFJDeFRRVUZUTEVWQlFVVXNSMEZCUnp0SlFVTmtMRTlCUVU4c1JVRkJSU3hIUVVGSE8wbEJRMW9zVDBGQlR5eEZRVUZGTEVkQlFVYzdTVUZEV2l4UFFVRlBMRVZCUVVVc1IwRkJSenREUVVOaUxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZDNVZ1puSnZiU0FuZDNVbk8xeHVhVzF3YjNKMElDb2dZWE1nY25ocWN5Qm1jbTl0SUNkeWVHcHpKenRjYmx4dWFXMXdiM0owSUh0V1pXTjBiM0o5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2RtVmpkRzl5VEdWdVozUm9MQ0IyWldOMGIzSkViM1JRY205a2RXTjBmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTBGdGFXNXZZV05wWkhNc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZZVzFwYm05aFkybGtjeWM3WEc1cGJYQnZjblFnZTA1MVkyeGxiM1JwWkdWekxDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTl1ZFdOc1pXOTBhV1JsY3ljN1hHNXBiWEJ2Y25RZ2UxVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbExDQlZibXR1YjNkdVUyVnhVR0ZzWlhSMFpYTjlJR1p5YjIwZ0p5NHVMM1Z1YTI1dmQyNG5PMXh1YVcxd2IzSjBJSHRUWlhGUVlXeGxkSFJsZlNCbWNtOXRJQ2N1TGk5elpYRXRjR0ZzWlhSMFpYTW5PMXh1YVcxd2IzSjBJSHRUZFdKelkzSnBjSFJwYjI1OUlHWnliMjBnSjNKNGFuTW5PMXh1WEc1a1pXTnNZWEpsSUcxdlpIVnNaU0FuWkdGMFlXZHliMnN0WVhCcEwzTnlZeTluY21sa0p5QjdYRzRnSUdsdWRHVnlabUZqWlNCU1pXTjBJSHRjYmlBZ0lDQmpiMjUwWVdsdWN5aDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWs2SUdKdmIyeGxZVzQ3WEc0Z0lIMWNibjFjYmx4dVpHVmpiR0Z5WlNCbmJHOWlZV3dnZTF4dUlDQnBiblJsY21aaFkyVWdTRlJOVEVOaGJuWmhjMFZzWlcxbGJuUWdlMXh1SUNBZ0lHZGxkRU4xY25OdmNsQnZjMmwwYVc5dUtHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtUb2dSRWN1VUc5cGJuUTdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1RXOXViMjFsY2taeVpYRnpJRDBnZXlCYmJUb2djM1J5YVc1blhUb2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdkSGx3WlNCVFpYRkRiMnhUZEdGMGN5QTlJSHNnWm5KbGNUb2dUVzl1YjIxbGNrWnlaWEZ6TENCellXMWxUR1Z1WjNSb09pQmliMjlzWldGdUlIMWNibVY0Y0c5eWRDQjBlWEJsSUZOd2JHbDBkR1Z5Um5WdVl5QTlJQ2h6WlhFNklITjBjbWx1WnlrZ1BUNGdjM1J5YVc1blcxMDdYRzVjYmtoVVRVeERZVzUyWVhORmJHVnRaVzUwTG5CeWIzUnZkSGx3WlM1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmlBOUlHWjFibU4wYVc5dUtHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtUb2dSRWN1VUc5cGJuUWdlMXh1SUNCamIyNXpkQ0J5WldOMElEMGdkR2hwY3k1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkVSeTVRYjJsdWRDaGxkbVZ1ZEM1amJHbGxiblJZSUMwZ2NtVmpkQzVzWldaMExDQmxkbVZ1ZEM1amJHbGxiblJaSUMwZ2NtVmpkQzUwYjNBcE8xeHVmVHRjYmx4dVJFY3VVbVZqZEM1d2NtOTBiM1I1Y0dVdVkyOXVkR0ZwYm5NZ1BTQm1kVzVqZEdsdmJpaDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWs2SUdKdmIyeGxZVzRnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTVzWldaMElEdzlJSGdnSmlZZ2VDQThQU0IwYUdsekxuSnBaMmgwSUNZbUlIUm9hWE11ZEc5d0lEdzlJSGtnSmlZZ2VTQThQU0IwYUdsekxtSnZkSFJ2YlR0Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZJSHRjYmlBZ0x5b3FJRk5sY1hWbGJtTmxjeUJqYjNWdWRDQjNhWFJvSUcxdmJtOXRaWElnYVc0Z2NHOXphWFJwYjI1Y2JpQWdJQ292WEc0Z0lHTnZkVzUwT2lCdWRXMWlaWEk3WEc1Y2JpQWdMeW9xSUZKbGJXVnRZbVZ5SUhOamNtVmxiaUJqYjI5eVpITWdjbVZqZEZ4dUlDQWdLaTljYmlBZ1ltOTFibVJ6T2lCRVJ5NVNaV04wTzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0NrZ2UxeHVJQ0FnSUhSb2FYTXVZMjkxYm5RZ1BTQXdPMXh1SUNBZ0lIUm9hWE11WW05MWJtUnpJRDBnYm1WM0lFUkhMbEpsWTNRb01Dd2dNQ3dnTUN3Z01DazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGQnZjMmwwYVc5dVNXNW1ieUI3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCdVlXMWxPaUJ6ZEhKcGJtYzdYRzRnSUdaeVpYRTZJSHNnVzIwNklITjBjbWx1WjEwNklGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOGdmVHRjYmlBZ2NtOTNRMjkxYm5RNklHNTFiV0psY2p0Y2JseHVJQ0F2S2lvZ1puSmxjU0E5SUh0OUxDQnliM2REYjNWdWRDQTlJREJjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWhiV1VnVG1GdFpTQnZaaUJ3YjNOcGRHbHZiaUFvSnpFeE1VRW5MQ0FuTVRFeExqRW5MQ0JsZEdNcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh1WVcxbE9pQnpkSEpwYm1jcElIdGNiaUFnSUNCMGFHbHpMbTVoYldVZ1BTQnVZVzFsTzF4dUlDQWdJSFJvYVhNdVpuSmxjU0E5SUh0OU8xeHVJQ0FnSUhSb2FYTXVjbTkzUTI5MWJuUWdQU0F3TzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJYWldKTWIyZHZJR1Y0ZEdWdVpITWdSRWN1U25OV2FXVjNaWElnZTF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbGMybGtkV1Z6VTJWMElEMGdKMjUxWTJ4bGIzUnBaR1Z6Snp0Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2RtbGxkMlZ5UTI5MWJuUTZJRzUxYldKbGNpQTlJQzB4TzF4dVhHNGdJSEJ5YVhaaGRHVWdkbWxsZDJWeVNXUTZJRzUxYldKbGNpQTlJQzB4TzF4dUlDQndjbWwyWVhSbElHbHVhWFJwWVd4cGVtVmtPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVTdYRzVjYmlBZ0x5OGdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmpiMnh2Y2xOamFHVnRaVG9nUTI5c2IzSlRZMmhsYldVZ1BTQkRiMnh2Y2xOamFHVnRaWE5iVG5WamJHVnZkR2xrWlhOWFpXSk1iMmR2TG5KbGMybGtkV1Z6VTJWMFhUdGNiaUFnY0hKdmRHVmpkR1ZrSUdOd09pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNWNiaUFnY0hKcGRtRjBaU0JvYjNOMFB6b2dTRlJOVEVScGRrVnNaVzFsYm5RN1hHNGdJSEJ5YVhaaGRHVWdiWE5uU0c5emREODZJRWhVVFV4RmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElHTmhiblpoY3o4NklFaFVUVXhEWVc1MllYTkZiR1Z0Wlc1ME8xeHVJQ0J3Y21sMllYUmxJSE5zYVdSbGNqODZJRVJITGxKaGJtZGxVMnhwWkdWeU8xeHVJQ0J3Y21sMllYUmxJSFJsZUhSQ1lYTmxiR2x1WlRvZ1EyRnVkbUZ6VkdWNGRFSmhjMlZzYVc1bE8xeHVYRzRnSUhCeWFYWmhkR1VnWVhocGMwaGxhV2RvZERvZ2JuVnRZbVZ5SUQwZ01USTdYRzVjYmlBZ2NISnBkbUYwWlNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Ymp4emRISnBibWMrSUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzRnSUM4dklIQnlhWFpoZEdVZ2JXRjRUR1Z1WjNSb09pQnVkVzFpWlhJZ1BTQXhNREE3WEc0Z0lIQnlhWFpoZEdVZ2NHOXphWFJwYjI1ek9pQlFiM05wZEdsdmJrbHVabTliWFNBOUlGdGRPMXh1WEc0Z0lIQnlhWFpoZEdVZ2NtOTNjMDFoYzJ0bFpEb2diblZ0WW1WeUlEMGdNRHRjYmlBZ2NISnBkbUYwWlNCeWIzZHpUblZzYkRvZ2JuVnRZbVZ5SUQwZ01EdGNibHh1SUNBdkx5QldhV1YzWlhJbmN5QndjbTl3WlhKMGFXVnpJQ2hzYVd0bGJIa2dkR2hsZVNCemFHOTFiR1FnWW1VZ2NIVmliR2xqSUhOdklIUm9ZWFFnZEdobGVTQmpZVzRnWW1VZ2MyVjBJRzkxZEhOcFpHVXBYRzRnSUhCeWFYWmhkR1VnWDNCdmMybDBhVzl1VjJsa2RHZzZJRzUxYldKbGNqdGNiaUFnY0hWaWJHbGpJSEJ2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklHMXBia2hsYVdkb2REb2diblZ0WW1WeU8xeHVJQ0J3ZFdKc2FXTWdiV0Y0U0dWcFoyaDBPaUJ1ZFcxaVpYSTdYRzRnSUhCMVlteHBZeUJqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNNklHSnZiMnhsWVc0N1hHNGdJSEIxWW14cFl5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVTZJSE4wY21sdVp5QjhJRzUxYkd3N1hHNGdJSEIxWW14cFl5QnpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpUb2djM1J5YVc1bklId2diblZzYkR0Y2JpQWdjSFZpYkdsaklHVnVaRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdacGVGZHBaSFJvT2lCaWIyOXNaV0Z1TzF4dUlDQndkV0pzYVdNZ2RtVnlkR2xqWVd4QmJHbG5ibTFsYm5RNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ2ZDQnVkV3hzTzF4dUlDQndkV0pzYVdNZ1ptbDBRWEpsWVRvZ1ltOXZiR1ZoYmp0Y2JpQWdjSFZpYkdsaklITm9jbWx1YTBWdGNIUjVWR0ZwYkRvZ1ltOXZiR1ZoYmp0Y2JpQWdjSFZpYkdsaklITnJhWEJGYlhCMGVWQnZjMmwwYVc5dWN6b2dZbTl2YkdWaGJqdGNibHh1SUNCd2NtbDJZWFJsSUhCdmMybDBhVzl1VG1GdFpYTTZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGeWRGQnZjMmwwYVc5dU9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQndjbWwyWVhSbElHVnVaRkJ2YzJsMGFXOXVPaUJ1ZFcxaVpYSWdQU0F0TVR0Y2JseHVJQ0F2S2lvZ1JtOXlJSE4wWVhKMFVHOXphWFJwYjI0Z1pYRjFZV3h6SUhSdklHVnVaRkJ2YzJsMGFXOXVJRXhsYm1kMGFDQnBjeUF4SUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwSUV4bGJtZDBhQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQRDBnZEdocGN5NWxibVJRYjNOcGRHbHZiaUEvSUhSb2FYTXVaVzVrVUc5emFYUnBiMjRnTFNCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z0t5QXhJRG9nTUR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2RtbGxkMU4xWW5NNklGTjFZbk5qY21sd2RHbHZibHRkSUQwZ1cxMDdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb0tUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQyVnlTV1FnUFNCWFpXSk1iMmR2TG5acFpYZGxja052ZFc1ME8xeHVJQ0FnSUZkbFlreHZaMjh1ZG1sbGQyVnlRMjkxYm5RZ0t6MGdNVHRjYmx4dUlDQWdJSFJvYVhNdWRHVjRkRUpoYzJWc2FXNWxJRDBnSjNSdmNDYzdYRzVjYmlBZ0lDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTVtYkc5aGRDZ25jRzl6YVhScGIyNVhhV1IwYUNjc0lERTJMeW9zWEc0Z0lDQWdJQ0I3WldScGRHOXlPaUFuYzJ4cFpHVnlKeXdnYldsdU9pQTBMQ0J0WVhnNklEWTBMQ0J3YjNOMFptbDRPaUFuY0hnbmZTb3ZLVHRjYmlBZ0lDQjBhR2x6TG0xcGJraGxhV2RvZENBOUlIUm9hWE11Wm14dllYUW9KMjFwYmtobGFXZG9kQ2NzSURVd0x5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBeU5Td2diV0Y0T2lBeU5UQXNJSEJ2YzNSbWFYZzZJQ2R3ZUNkOUtpOHBPMXh1SUNBZ0lIUm9hWE11YldGNFNHVnBaMmgwSUQwZ2RHaHBjeTVtYkc5aGRDZ25iV0Y0U0dWcFoyaDBKeXdnTVRBd0x5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBeU5Td2diV0Y0T2lBMU1EQXNJSEJ2YzNSbWFYZzZJQ2R3ZUNkOUtpOHBPMXh1WEc0Z0lDQWdkR2hwY3k1amIyNXphV1JsY2s1MWJHeFRaWEYxWlc1alpYTWdQU0IwYUdsekxtSnZiMndvSjJOdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5Y3NJR1poYkhObEtUdGNiaUFnSUNCMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU0E5SUhSb2FYTXVjM1J5YVc1bktDZHpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVW5MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJrNWhiV1VnUFNCMGFHbHpMbk4wY21sdVp5Z25jM1JoY25SUWIzTnBkR2x2Yms1aGJXVW5MQ0J1ZFd4c0tUdGNiaUFnSUNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTQTlJSFJvYVhNdWMzUnlhVzVuS0NkbGJtUlFiM05wZEdsdmJrNWhiV1VuTENCdWRXeHNLVHRjYmx4dUlDQWdJSFJvYVhNdVptbDRWMmxrZEdnZ1BTQjBhR2x6TG1KdmIyd29KMlpwZUZkcFpIUm9KeXdnWm1Gc2MyVXBPMXh1WEc0Z0lDQWdkR2hwY3k1MlpYSjBhV05oYkVGc2FXZHViV1Z1ZENBOUlIUm9hWE11YzNSeWFXNW5LQ2QyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ2NzSUNkdGFXUmtiR1VuTEZ4dUlDQWdJQ0FnZTJOb2IybGpaWE02SUZzbmRHOXdKeXdnSjIxcFpHUnNaU2NzSUNkaWIzUjBiMjBuWFgwcE8xeHVJQ0FnSUhSb2FYTXVhRzl5YVhwdmJuUmhiRUZzYVdkdWJXVnVkQ0E5SUhSb2FYTXVjM1J5YVc1bktDZG9iM0pwZW05dWRHRnNRV3hwWjI1dFpXNTBKeXdnSjJObGJuUmxjaWNzWEc0Z0lDQWdJQ0I3WTJodmFXTmxjem9nV3lkc1pXWjBKeXdnSjJObGJuUmxjaWNzSUNkeWFXZG9kQ2RkZlNrN1hHNGdJQ0FnZEdocGN5NW1hWFJCY21WaElEMGdkR2hwY3k1aWIyOXNLQ2RtYVhSQmNtVmhKeXdnZEhKMVpTazdYRzRnSUNBZ2RHaHBjeTV6YUhKcGJtdEZiWEIwZVZSaGFXd2dQU0IwYUdsekxtSnZiMndvSjNOb2NtbHVhMFZ0Y0hSNVZHRnBiQ2NzSUhSeWRXVXBPMXh1SUNBZ0lIUm9hWE11YzJ0cGNFVnRjSFI1VUc5emFYUnBiMjV6SUQwZ2RHaHBjeTVpYjI5c0tDZHphMmx3Ulcxd2RIbFFiM05wZEdsdmJuTW5MQ0JtWVd4elpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklHbHVhWFFvS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVhVzVwZEdsaGJHbDZaV1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9KMWRsWWt4dloyOGdjMlZqYjI1a0lHbHVhWFJwWVd4cGVtRjBhVzl1SVNjcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNXBkR2xoYkdsNlpXUWdQU0IwY25WbE8xeHVJQ0FnSUhSb2FYTXVhR1ZzY0ZWeWJDQTlJQ2N2YUdWc2NDOTJhWE4xWVd4cGVtVXZkbWxsZDJWeWN5OTNaV0l0Ykc5bmJ5NXRaQ2M3WEc1Y2JpQWdJQ0IwYUdsekxtMXpaMGh2YzNRZ1BTQjFhUzVrYVhZb0owNXZJRzFsYzNOaFoyVW5LVHRjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1F1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2R1YjI1bEp6dGNibHh1SUNBZ0lIUm9hWE11WTJGdWRtRnpJRDBnZFdrdVkyRnVkbUZ6S0NrN1hHNGdJQ0FnZEdocGN5NWpZVzUyWVhNdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzVjYmlBZ0lDQjBhR2x6TG1odmMzUWdQU0IxYVM1a2FYWW9XM1JvYVhNdWJYTm5TRzl6ZEN3Z2RHaHBjeTVqWVc1MllYTmRLVHRjYmx4dUlDQWdJQzh2SUhSb2FYTXVjMnhwWkdWeUlEMGdkV2t1Y21GdVoyVlRiR2xrWlhJb01Dd2dNakFzSURJc0lEVXBPMXh1SUNBZ0lDOHZJSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdMeThnZEdocGN5NXpiR2xrWlhJdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQW5NVEp3ZUNjN1hHNWNiaUFnSUNCamIyNXpkQ0JuWlhSTmIyNXZiV1Z5SUQwZ0tIQTZJRVJITGxCdmFXNTBLVG9nVzI1MWJXSmxjaXdnYzNSeWFXNW5JSHdnYm5Wc2JDd2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI4SUc1MWJHeGRJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR3BRYjNNZ1BTQk5ZWFJvTG1ac2IyOXlLSEF1ZUNBdklIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ3BPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NHOXphWFJwYjI0Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIQnZjMmwwYVc5dUlEMDlQU0IyYjJsa0lEQXBYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmJhbEJ2Y3l3Z2JuVnNiQ3dnYm5Wc2JGMDdYRzVjYmlBZ0lDQWdJR052Ym5OMElHMXZibTl0WlhJNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpDQTlJRTlpYW1WamRDNXJaWGx6S0hCdmMybDBhVzl1TG1aeVpYRXBYRzRnSUNBZ0lDQWdJQzVtYVc1a0tDaHRLU0E5UGlCd2IzTnBkR2x2Ymk1bWNtVnhXMjFkTG1KdmRXNWtjeTVqYjI1MFlXbHVjeWh3TG5nc0lIQXVlU2twTzF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJZ1BUMDlJSFZ1WkdWbWFXNWxaQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnVkV3hzTENCdWRXeHNYVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnRiMjV2YldWeUxDQndiM05wZEdsdmJpNW1jbVZ4VzIxdmJtOXRaWEpkWFR0Y2JpQWdJQ0I5TzF4dVhHNWNiaUFnSUNBdkx5QjBhR2x6TG5OMVluTXVjSFZ6YUNoeWVHcHpMbVp5YjIxRmRtVnVkRHhOYjNWelpVVjJaVzUwUGloMGFHbHpMbU5oYm5aaGN5d2dKMjF2ZFhObGIzWmxjaWNwTG5OMVluTmpjbWxpWlNnb1pUb2dUVzkxYzJWRmRtVnVkQ2tnUFQ0Z2UxeHVJQ0FnSUM4dklIMHBLVHRjYmx4dUlDQWdJSFJvYVhNdWRtbGxkMU4xWW5NdWNIVnphQ2h5ZUdwekxtWnliMjFGZG1WdWREeE5iM1Z6WlVWMlpXNTBQaWgwYUdsekxtTmhiblpoY3l3Z0oyMXZkWE5sYlc5MlpTY3BMbk4xWW5OamNtbGlaU2dvWlRvZ1RXOTFjMlZGZG1WdWRDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbWR6SUQwZ1pTQmhjeUJOYjNWelpVVjJaVzUwTzF4dUlDQWdJQ0FnWTI5dWMzUWdXMnBRYjNNc0lHMXZibTl0WlhKZElEMGdaMlYwVFc5dWIyMWxjaWgwYUdsekxtTmhiblpoY3k1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmloaGNtZHpLU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBbUppQjBhR2x6TG5ObGNVTnZiQ0FtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIVnBMblJ2YjJ4MGFYQXVjMmh2ZDFKdmQwZHliM1Z3S0hSb2FYTXVaR0YwWVVaeVlXMWxMQ0FvYVZKdmR5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhObGNTQTlJSFJvYVhNdWMyVnhRMjlzSVM1blpYUW9hVkp2ZHlrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MyVnhUU0E5SUhObGNTQS9JRmRsWWt4dloyOHVjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjU2xiZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUNzZ2FsQnZjMTBnT2lCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6WlhGTklEMDlQU0J0YjI1dmJXVnlJQ1ltSUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJSDBzSUdGeVozTXVlQ0FySURFMkxDQmhjbWR6TG5rZ0t5QXhOaWs3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IxYVM1MGIyOXNkR2x3TG1ocFpHVW9LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLU2s3WEc1Y2JpQWdJQ0IwYUdsekxuWnBaWGRUZFdKekxuQjFjMmdvY25ocWN5NW1jbTl0UlhabGJuUThUVzkxYzJWRmRtVnVkRDRvZEdocGN5NWpZVzUyWVhNc0lDZHRiM1Z6WldSdmQyNG5LUzV6ZFdKelkzSnBZbVVvS0dVNklFMXZkWE5sUlhabGJuUXBJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1allXNTJZWE1nZkh3Z1pTNWlkWFIwYjI0Z0lUMGdNQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbWR6SUQwZ1pTQmhjeUJOYjNWelpVVjJaVzUwTzF4dUlDQWdJQ0FnWTI5dWMzUWdXMnBRYjNNc0lHMXZibTl0WlhKZElEMGdaMlYwVFc5dWIyMWxjaWgwYUdsekxtTmhiblpoY3k1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmloaGNtZHpLU2s3WEc1Y2JpQWdJQ0FnSUM4dklIQnlaWFpsYm5SeklHUmxjMlZzWldOMElHRnNiQ0J5YjNkeklHbG1JSGRsSUcxcGMzTWdiVzl1YjIxbGNpQmliM1Z1WkhOY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBbUppQjBhR2x6TG5ObGNVTnZiQ0FtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1cGJtbDBLQ2hwVW05M0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWeElEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRk5JRDBnYzJWeElEOGdWMlZpVEc5bmJ5NXpjR3hwZEhSbGNrRnpSbUZ6ZEdFb2MyVnhLVnQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY1UwZ1BUMDlJRzF2Ym05dFpYSWdKaVlnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkQ2hwVW05M0tUdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hWcExtOXVVMmw2WlVOb1lXNW5aV1FvZEdocGN5NXliMjkwS1M1emRXSnpZM0pwWW1Vb2RHaHBjeTV5YjI5MFQyNVRhWHBsUTJoaGJtZGxaQzVpYVc1a0tIUm9hWE1wS1NrN1hHNWNiaUFnSUNCMGFHbHpMbkp2YjNRdVlYQndaVzVrS0hSb2FYTXVhRzl6ZENrN1hHNGdJQ0FnTHk4Z2RHaHBjeTV5YjI5MExtRndjR1Z1WkVOb2FXeGtLSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSEp2YjNSUGJsTnBlbVZEYUdGdVoyVmtLR0Z5WjNNNklHRnVlU2tnZTF4dUlDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ5NXZibEp2YjNSVGFYcGxRMmhoYm1kbFpDZ3BJR0FnSzF4dUlDQWdJQzh2SUNBZ1lISnZiM1F1ZDJsa2RHZzlKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBWMmxrZEdoOUxDQnliMjkwTG1obGFXZG9kRDBrZTNSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUjlMQ0JnSUN0Y2JpQWdJQ0F2THlBZ0lHQmpZVzUyWVhNdWQybGtkR2c5Skh0MGFHbHpMbU5oYm5aaGN5NTNhV1IwYUgwc0lHTmhiblpoY3k1b1pXbG5hSFE5Skh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOUlDNWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkJjM05wWjI1eklIdEFiR2x1YXlCelpYRkRiMng5SUdGdVpDQjdRR3hwYm1zZ1kzQjlJR0poYzJWa0lHOXVJSHRBYkdsdWF5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVjlJR0Z1WkNCallXeHNjeUI3UUd4cGJtc2djbVZ1WkdWeWZTZ3BMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0IxY0dSaGRHVlRaWEZEYjJ3b0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WkdGMFlVWnlZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbElEOGdkR2hwY3k1a1lYUmhSbkpoYldVdVkyOXNLSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbEtTQTZJRzUxYkd3N1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1elpYRkRiMndnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWNHbGphMVZ3VTJWeFEyOXNLSFJvYVhNdVpHRjBZVVp5WVcxbEtUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYRjFaVzVqWlVOdmJIVnRiazVoYldVZ1BTQjBhR2x6TG5ObGNVTnZiQ0EvSUhSb2FYTXVjMlZ4UTI5c0xtNWhiV1VnT2lCdWRXeHNPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlZ4UTI5c0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVUc5emFYUnBiMjV6S0NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTNBZ1BTQlhaV0pNYjJkdkxuQnBZMnRWY0ZCaGJHVjBkR1VvZEdocGN5NXpaWEZEYjJ3cE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZiazVoYldWeklEMGdXMTA3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBOUlDMHhPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVJRDBnTFRFN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTNBZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG5KbGJtUmxjaWdwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCMWNHUmhkR1ZRYjNOcGRHbHZibk1vS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbk5sY1VOdmJDbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUd4bGRDQmpZWFJsWjI5eWFXVnpPaUFvYzNSeWFXNW5JSHdnYm5Wc2JDa2dXMTA3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjMmh5YVc1clJXMXdkSGxVWVdsc0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGJtUnBZMlZ6T2lCSmJuUXpNa0Z5Y21GNUlEMGdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVJQ0FnSUNBZ1kyRjBaV2R2Y21sbGN5QTlJRUZ5Y21GNUxtWnliMjBvYm1WM0lGTmxkQ2hjYmlBZ0lDQWdJQ0FnUVhKeVlYa3Vabkp2YlNoQmNuSmhlU2hwYm1ScFkyVnpMbXhsYm1kMGFDa3VhMlY1Y3lncEtTNXRZWEFvS0drNklHNTFiV0psY2lrZ1BUNGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBibVJwWTJWelcybGRLU2twS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMkYwWldkdmNtbGxjeUE5SUhSb2FYTXVjMlZ4UTI5c0xtTmhkR1ZuYjNKcFpYTTdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJRzFoZUV4bGJtZDBhQ0E5SUdOaGRHVm5iM0pwWlhNdWJHVnVaM1JvSUQ0Z01DQS9JRTFoZEdndWJXRjRLQzR1TG1OaGRHVm5iM0pwWlhNdWJXRndLRnh1SUNBZ0lDQWdLSE1wSUQwK0lITWdJVDA5SUc1MWJHd2dQeUJYWldKTWIyZHZMbk53YkdsMGRHVnlRWE5HWVhOMFlTaHpLUzVzWlc1bmRHZ2dPaUF3S1NrZ09pQXdPMXh1WEc0Z0lDQWdMeThnUjJWMElIQnZjMmwwYVc5dUlHNWhiV1Z6SUdaeWIyMGdaR0YwWVNCamIyeDFiVzRnZEdGbklDZHdiM05wZEdsdmJrNWhiV1Z6SjF4dUlDQWdJR052Ym5OMElIQnZjMmwwYVc5dVRtRnRaWE5VZUhRZ1BTQjBhR2x6TG5ObGNVTnZiQzVuWlhSVVlXY29KM0J2YzJsMGFXOXVUbUZ0WlhNbktUdGNiaUFnSUNBdkx5QkdZV3hzWW1GamF5QnBaaUFuY0c5emFYUnBiMjVPWVcxbGN5Y2dkR0ZuSUdseklHNXZkQ0J3Y205MmFXUmxaRnh1SUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5QTlJSEJ2YzJsMGFXOXVUbUZ0WlhOVWVIUWdQeUJ3YjNOcGRHbHZiazVoYldWelZIaDBMbk53YkdsMEtDY3NJQ2NwTG0xaGNDZ29iaWtnUFQ0Z2JpNTBjbWx0S0NrcElEcGNiaUFnSUNBZ0lGc3VMaTVCY25KaGVTaHRZWGhNWlc1bmRHZ3BMbXRsZVhNb0tWMHViV0Z3S0NocVVHOXpLU0E5UGlCZ0pIdHFVRzl6SUNzZ01YMWdLVHRjYmx4dUlDQWdJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE5SUNoMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxJQ1ltSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBbUpseHVJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZiazVoYldWekxtbHVZMngxWkdWektIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJrNWhiV1VwS1NBL1hHNGdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNdWFXNWtaWGhQWmloMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxLU0E2SURBN1hHNGdJQ0FnZEdocGN5NWxibVJRYjNOcGRHbHZiaUE5SUNoMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTQW1KaUIwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE1nSmlaY2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtTnNkV1JsY3loMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTa3BJRDljYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeTVwYm1SbGVFOW1LSFJvYVhNdVpXNWtVRzl6YVhScGIyNU9ZVzFsS1NBNklDaHRZWGhNWlc1bmRHZ2dMU0F4S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCdmRtVnljbWxrWlNCdmJsQnliM0JsY25SNVEyaGhibWRsWkNod2NtOXdaWEowZVRvZ1JFY3VVSEp2Y0dWeWRIa3BPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QmpiMjV6YjJ4bExtUmxZblZuS0dCWFpXSk1iMmR2TG05dVVISnZjR1Z5ZEhsRGFHRnVaMlZrS0NBa2UzQnliM0JsY25SNUxtNWhiV1Y5SUQwZ0p5Y2dmU2xnS1R0Y2JpQWdJQ0J6ZFhCbGNpNXZibEJ5YjNCbGNuUjVRMmhoYm1kbFpDaHdjbTl3WlhKMGVTazdYRzVjYmlBZ0lDQnpkMmwwWTJnZ0tIQnliM0JsY25SNUxtNWhiV1VwSUh0Y2JpQWdJQ0JqWVhObElDZGpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1uT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R6WlhGMVpXNWpaVU52YkhWdGJrNWhiV1VuT2x4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNOMFlYSjBVRzl6YVhScGIyNU9ZVzFsSnpwY2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFUyVnhRMjlzS0NrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkbGJtUlFiM05wZEdsdmJrNWhiV1VuT2x4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNCdmMybDBhVzl1VjJsa2RHZ25PbHh1SUNBZ0lDQWdkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ0E5SUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYldsdVNHVnBaMmgwSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYldGNFNHVnBaMmgwSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuWm1sNFYybGtkR2duT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2QyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMmh2Y21sNmIyNTBZV3hCYkdsbmJtMWxiblFuT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2RtYVhSQmNtVmhKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5jMmh5YVc1clJXMXdkSGxVWVdsc0p6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s3WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCdmRtVnljbWxrWlNCaGMzbHVZeUJ2YmxSaFlteGxRWFIwWVdOb1pXUW9LU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHRjBZVVp5WVcxbFZIaDBPaUJ6ZEhKcGJtY2dQU0IwYUdsekxtUmhkR0ZHY21GdFpTQS9JQ2RrWVhSaEp5QTZJQ2R1ZFd4c0p6dGNiaUFnSUNCamIyNXpiMnhsTG1SbFluVm5LR0JpYVc4NklGZGxZa3h2WjI4OEpIdDBhR2x6TG5acFpYZGxja2xrZlQ0dWIyNVVZV0pzWlVGMGRHRmphR1ZrS0NCa1lYUmhSbkpoYldVZ1BTQWtlMlJoZEdGR2NtRnRaVlI0ZEgwZ0tTQnpkR0Z5ZEdBcE8xeHVJQ0FnSUhOMWNHVnlMbTl1VkdGaWJHVkJkSFJoWTJobFpDZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1MWNHUmhkR1ZUWlhGRGIyd29LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FoUFQwZ2RtOXBaQ0F3S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk4xWW5NdWNIVnphQ2gwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHViMjVEYUdGdVoyVmtMbk4xWW5OamNtbGlaU2dvWHlrZ1BUNGdkR2hwY3k1eVpXNWtaWElvS1NrcE8xeHVJQ0FnSUNBZ2RHaHBjeTV6ZFdKekxuQjFjMmdvZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtOXVRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LRjhwSUQwK0lIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZRYjNOcGRHbHZibk1vS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9LVHRjYmlBZ0lDQWdJSDBwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JoZDJGcGRDQjBhR2x6TG1sdWFYUW9LVHRjYmlBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0dCaWFXODZJRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHViMjVVWVdKc1pVRjBkR0ZqYUdWa0tDa2daVzVrWUNrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2IzWmxjbkpwWkdVZ1lYTjVibU1nWkdWMFlXTm9LQ2tnZTF4dUlDQWdJR052Ym5OMElHUmhkR0ZHY21GdFpWUjRkQ0E5SUdBa2UzUm9hWE11WkdGMFlVWnlZVzFsSUQ4Z0oyUmhkR0VuSURvZ0oyNTFiR3duZldBN1hHNGdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdZbWx2T2lCWFpXSk1iMmR2UENSN2RHaHBjeTUyYVdWM1pYSkpaSDArTG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dnWkdGMFlVWnlZVzFsSUQwZ0pIdGtZWFJoUm5KaGJXVlVlSFI5SUNrZ2MzUmhjblJnS1R0Y2JpQWdJQ0J6ZFhCbGNpNWtaWFJoWTJnb0tUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Wm05eVJXRmphQ2dvYzNWaUtTQTlQaUJ6ZFdJdWRXNXpkV0p6WTNKcFltVW9LU2s3WEc0Z0lDQWdkR2hwY3k1b2IzTjBJUzV5WlcxdmRtVW9LVHRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0IwYUdsekxtMXpaMGh2YzNRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RHaHBjeTVvYjNOMElEMGdkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtbDBhV0ZzYVhwbFpDQTlJR1poYkhObE8xeHVJQ0FnSUdOdmJuTnZiR1V1WkdWaWRXY29ZR0pwYnpvZ1YyVmlURzluYnp3a2UzUm9hWE11ZG1sbGQyVnlTV1I5UGk1dmJsUmhZbXhsUVhSMFlXTm9aV1FvS1NCbGJtUmdLVHRjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCZmJuVnNiRk5sY1hWbGJtTmxLR1pwYkd4bGNsSmxjMmxrZFdVZ1BTQW5XQ2NwT2lCemRISnBibWNnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ym5OcFpHVnlUblZzYkZObGNYVmxibU5sY3lsY2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1FYSnlZWGtvZEdocGN5NU1aVzVuZEdncExtWnBiR3dvWm1sc2JHVnlVbVZ6YVdSMVpTa3VhbTlwYmlnbkp5azdYRzVjYmlBZ0lDQnlaWFIxY200Z0p5YzdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWDJOaGJHTjFiR0YwWlNncElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElDRjBhR2x6TG1odmMzUWdmSHdnSVhSb2FYTXVjMlZ4UTI5c0lIeDhJQ0YwYUdsekxtUmhkR0ZHY21GdFpTbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUhSb2FYTXVZMkZzWTFOcGVtVW9LVHRjYmx4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1eklEMGdibVYzSUVGeWNtRjVLSFJvYVhNdVRHVnVaM1JvS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxVUc5eklEMGdNRHNnYWxCdmN5QThJSFJvYVhNdVRHVnVaM1JvT3lCcVVHOXpLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSEJ2YzA1aGJXVTZJSE4wY21sdVp5QTlJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjMXQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYVHRjYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kSUQwZ2JtVjNJRkJ2YzJsMGFXOXVTVzVtYnlod2IzTk9ZVzFsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlBeU1ESXlMVEExTFRBMUlHRnphMkZzYTJsdUlHbHVjM1J5ZFdOMFpXUWdkRzhnYzJodmR5QlhaV0pNYjJkdklHSmhjMlZrSUc5dUlHWnBiSFJsY2lBb2JtOTBJSE5sYkdWamRHbHZiaWxjYmlBZ0lDQmpiMjV6ZENCcGJtUnBZMlZ6SUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbWRsZEZObGJHVmpkR1ZrU1c1a1pYaGxjeWdwTzF4dUlDQWdJQzh2SUdOdmJuTjBJR2x1WkdsalpYTWdQU0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVkSEoxWlVOdmRXNTBJRDRnTUNBL0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1blpYUlRaV3hsWTNSbFpFbHVaR1Y0WlhNb0tTQTZYRzRnSUNBZ0x5OGdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNW1hV3gwWlhJdVoyVjBVMlZzWldOMFpXUkpibVJsZUdWektDazdYRzVjYmlBZ0lDQjBhR2x6TG5KdmQzTk5ZWE5yWldRZ1BTQnBibVJwWTJWekxteGxibWQwYUR0Y2JpQWdJQ0IwYUdsekxuSnZkM05PZFd4c0lEMGdNRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYVNCdlppQnBibVJwWTJWektTQjdYRzRnSUNBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ1BITjBjbWx1Wno0b2RHaHBjeTV6WlhGRGIyd3VaMlYwS0drcEtUdGNibHh1SUNBZ0lDQWdhV1lnS0NGektTQjdYRzRnSUNBZ0lDQWdJSE1nUFNCMGFHbHpMbDl1ZFd4c1UyVnhkV1Z1WTJVb0tUdGNiaUFnSUNBZ0lDQWdLeXQwYUdsekxuSnZkM05PZFd4c08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCelpYRk5PaUJ6ZEhKcGJtZGJYU0E5SUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBaaGMzUmhLSE1wTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYWxCdmN5QTlJREE3SUdwUWIzTWdQQ0IwYUdsekxreGxibWQwYURzZ2FsQnZjeXNyS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhCdFNXNW1ieUE5SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEU3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzA2SUhOMGNtbHVaeUE5SUhObGNVMWJkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJQ3NnYWxCdmMxMGdmSHdnSnkwbk8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJSEJ0U1c1bWJ5a3BYRzRnSUNBZ0lDQWdJQ0FnY0cxSmJtWnZXMjFkSUQwZ2JtVjNJRkJ2YzJsMGFXOXVUVzl1YjIxbGNrbHVabThvS1R0Y2JpQWdJQ0FnSUNBZ2NHMUpibVp2VzIxZExtTnZkVzUwS3lzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4amNtVm5hVzl1SUZCdmJHbHphQ0JtY21WeElHTnZkVzUwYzF4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnTHk4Z1pHVnNaWFJsSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEZiSnkwblhUdGNibHh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTB1Y205M1EyOTFiblFnUFNBd08xeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnRJR2x1SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEVwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExuSnZkME52ZFc1MElDczlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRmJiVjB1WTI5MWJuUTdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dkkyVnVaSEpsWjJsdmJseHVYRzRnSUNBZ1kyOXVjM1FnY2lBOUlIZHBibVJ2ZHk1a1pYWnBZMlZRYVhobGJGSmhkR2x2TzF4dUlDQWdJR052Ym5OMElHMWhlRWhsYVdkb2RDQTlJSFJvYVhNdVkyRnVkbUZ6TG1obGFXZG9kQ0F0SUhSb2FYTXVZWGhwYzBobGFXZG9kQ0FxSUhJN1hHNGdJQ0FnTHk4Z1kyOXVjMjlzWlM1a1pXSjFaeWhnVjJWaVRHOW5iendrZTNSb2FYTXVkbWxsZDJWeVNXUjlQaTVmWTJGc1kzVnNZWFJsS0NrZ2JXRjRTR1ZwWjJoMFBTUjdiV0Y0U0dWcFoyaDBmUzVnS1R0Y2JseHVJQ0FnSUM4dkkzSmxaMmx2YmlCRFlXeGpkV3hoZEdVZ2MyTnlaV1Z1WEc0Z0lDQWdabTl5SUNoc1pYUWdhbEJ2Y3lBOUlEQTdJR3BRYjNNZ1BDQjBhR2x6TGt4bGJtZDBhRHNnYWxCdmN5c3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm1jbVZ4T2lCN0lGdGpPaUJ6ZEhKcGJtZGRPaUJRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUgwZ1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY205M1EyOTFiblFnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNXliM2REYjNWdWREdGNibHh1SUNBZ0lDQWdiR1YwSUhrNklHNTFiV0psY2lBOUlIUm9hWE11WVhocGMwaGxhV2RvZER0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWlc1MGNtbGxjeUE5SUU5aWFtVmpkQzVsYm5SeWFXVnpLR1p5WlhFcExuTnZjblFvS0dFc0lHSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ZiTUYwZ0lUMDlJQ2N0SnlBbUppQmlXekJkSUNFOVBTQW5MU2NwWEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdKYk1WMHVZMjkxYm5RZ0xTQmhXekZkTG1OdmRXNTBPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hoV3pCZElEMDlQU0FuTFNjZ0ppWWdZbHN3WFNBOVBUMGdKeTBuS1Z4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGhXekJkSUQwOVBTQW5MU2NwWEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUMweE8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUM4cUlDaGlXekJkSUQwOVBTQW5MU2NwSUNvdlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDc3hPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdWdWRISjVJRzltSUdWdWRISnBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY0cxSmJtWnZPaUJRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUQwZ1pXNTBjbmxiTVYwN1hHNGdJQ0FnSUNBZ0lDOHZJR052Ym5OMElHMDZJSE4wY21sdVp5QTlJR1Z1ZEhKNVd6QmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm9PaUJ1ZFcxaVpYSWdQU0J0WVhoSVpXbG5hSFFnS2lCd2JVbHVabTh1WTI5MWJuUWdMeUJ5YjNkRGIzVnVkRHRjYmx4dUlDQWdJQ0FnSUNCd2JVbHVabTh1WW05MWJtUnpJRDBnYm1WM0lFUkhMbEpsWTNRb2FsQnZjeUFxSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnc0lIa3NJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dzSUdncE8xeHVJQ0FnSUNBZ0lDQjVJQ3M5SUdnN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2Ymx4dUlDQjlYRzVjYmlBZ0x5OGdjbVZtYkdWamRDQmphR0Z1WjJWeklHMWhaR1VnZEc4Z1ptbHNkR1Z5TDNObGJHVmpkR2x2Ymx4dUlDQnlaVzVrWlhJb2NtVmpZV3hqSUQwZ2RISjFaU2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTF6WjBodmMzUXBJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbk5sY1VOdmJDQW1KaUFoZEdocGN5NWpjQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbTF6WjBodmMzUWhMbWx1Ym1WeVZHVjRkQ0E5SUdCVmJtdHViM2R1SUhCaGJHVjBkR1VnS0dOdmJIVnRiaUJ6WlcxVWVYQmxPaUFuSkh0MGFHbHpMbk5sY1VOdmJDNXpaVzFVZVhCbGZTY3BMbUE3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViWE5uU0c5emRDRXVjM1I1YkdVdVpHbHpjR3hoZVNBOUlDY25PMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dGMyZEliM04wSVM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSjI1dmJtVW5PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NWpZVzUyWVhNZ2ZId2dJWFJvYVhNdWMyVnhRMjlzSUh4OElDRjBhR2x6TG1SaGRHRkdjbUZ0WlNCOGZDQWhkR2hwY3k1amNDbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUdOdmJuTjBJR2NnUFNCMGFHbHpMbU5oYm5aaGN5NW5aWFJEYjI1MFpYaDBLQ2N5WkNjcE8xeHVJQ0FnSUdsbUlDZ2haeWtnY21WMGRYSnVPMXh1WEc0Z0lDQWdhV1lnS0hKbFkyRnNZeWxjYmlBZ0lDQWdJSFJvYVhNdVgyTmhiR04xYkdGMFpTZ3BPMXh1WEc0Z0lDQWdaeTV5WlhObGRGUnlZVzV6Wm05eWJTZ3BPMXh1SUNBZ0lHY3VabWxzYkZOMGVXeGxJRDBnSjNkb2FYUmxKenRjYmlBZ0lDQm5MbVpwYkd4U1pXTjBLREFzSURBc0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0xDQjBhR2x6TG1OaGJuWmhjeTVvWldsbmFIUXBPMXh1SUNBZ0lHY3VkR1Y0ZEVKaGMyVnNhVzVsSUQwZ2RHaHBjeTUwWlhoMFFtRnpaV3hwYm1VN1hHNWNiaUFnSUNBdkx5QlFjbVYyWlc1MGN5QmthWFpwYzJsdmJpQmllU0I2WlhKdklHOXVJRXhsYm1kMGFDQTlJREJjYmlBZ0lDQnBaaUFvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUQwOVBTQXRNU0I4ZkNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQwOVBTQXRNU2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lDOHZJM0psWjJsdmJpQlFiRzkwSUhCdmMybDBhVzl1VG1GdFpYTmNiaUFnSUNCbkxuSmxjMlYwVkhKaGJuTm1iM0p0S0NrN1hHNGdJQ0FnWnk1bWFXeHNVM1I1YkdVZ1BTQW5ZbXhoWTJzbk8xeHVJQ0FnSUdjdWRHVjRkRUZzYVdkdUlEMGdKMk5sYm5SbGNpYzdYRzRnSUNBZ1p5NW1iMjUwSUQwZ0p6RXdjSGdnVW05aWIzUnZMQ0JTYjJKdmRHOGdURzlqWVd3c0lITmhibk10YzJWeWFXWW5PMXh1SUNBZ0lHTnZibk4wSUhCdmMwNWhiV1ZOWVhoWGFXUjBhQ0E5SUUxaGRHZ3ViV0Y0S0M0dUxuUm9hWE11Y0c5emFYUnBiMjV6TG0xaGNDZ29jRzl6S1NBOVBpQm5MbTFsWVhOMWNtVlVaWGgwS0hCdmN5NXVZVzFsS1M1M2FXUjBhQ2twTzF4dUlDQWdJR052Ym5OMElHaFRZMkZzWlNBOUlIQnZjMDVoYldWTllYaFhhV1IwYUNBOElDaDBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JQzBnTWlrZ1B5QXhJRG9nS0hSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ0xTQXlLU0F2SUhCdmMwNWhiV1ZOWVhoWGFXUjBhRHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjRzl6T2lCUWIzTnBkR2x2YmtsdVptOGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFR0Y2JpQWdJQ0FnSUdjdWNtVnpaWFJVY21GdWMyWnZjbTBvS1R0Y2JpQWdJQ0FnSUdjdWMyVjBWSEpoYm5ObWIzSnRLRnh1SUNBZ0lDQWdJQ0JvVTJOaGJHVXNJREFzSURBc0lERXNYRzRnSUNBZ0lDQWdJR3BRYjNNZ0tpQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JQ3NnZEdocGN5NWZjRzl6YVhScGIyNVhhV1IwYUNBdklESXNJREFwTzF4dUlDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENod2IzTXVibUZ0WlN3Z01Dd2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJMlZ1WkhKbFoybHZiaUJRYkc5MElIQnZjMmwwYVc5dVRtRnRaWE5jYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCYmJXOXViMjFsY2l3Z2NHMUpibVp2WFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNW1jbVZ4S1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaUFoUFQwZ0p5MG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWWlBOUlIQnRTVzVtYnk1aWIzVnVaSE03WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbWIyNTBVM1I1YkdVZ1BTQW5NVFp3ZUNCU2IySnZkRzhzSUZKdlltOTBieUJNYjJOaGJDd2djMkZ1Y3kxelpYSnBaaWM3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdTR0ZqYTNNZ2RHOGdjMk5oYkdVZ2RYQndaWEpqWVhObElHTm9ZWEpoWTNSbGNuTWdkRzhnZEdGeVoyVjBJSEpsWTNSaGJtZHNaVnh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSFZ3Y0dWeVkyRnpaVXhsZEhSbGNrRnpZMlZ1ZENBOUlEQXVNalU3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZFhCd1pYSmpZWE5sVEdWMGRHVnlTR1ZwWjJoMElEMGdNVEl1TWp0Y2JseHVJQ0FnSUNBZ0lDQWdJR2N1Y21WelpYUlVjbUZ1YzJadmNtMG9LVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuTjBjbTlyWlZOMGVXeGxJRDBnSjJ4cFoyaDBaM0poZVNjN1hHNGdJQ0FnSUNBZ0lDQWdaeTVzYVc1bFYybGtkR2dnUFNBeE8xeHVJQ0FnSUNBZ0lDQWdJR2N1Y21WamRDaGlMbXhsWm5Rc0lHSXVkRzl3TENCaUxuZHBaSFJvTENCaUxtaGxhV2RvZENrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1UzUjViR1VnUFNCMGFHbHpMbU53TG1kbGRDaHRiMjV2YldWeUtTQS9QeUIwYUdsekxtTndMbWRsZENnbmIzUm9aWEluS1R0Y2JpQWdJQ0FnSUNBZ0lDQm5MblJsZUhSQmJHbG5iaUE5SUNkc1pXWjBKenRjYmlBZ0lDQWdJQ0FnSUNCbkxtWnZiblFnUFNCbWIyNTBVM1I1YkdVN1hHNGdJQ0FnSUNBZ0lDQWdMeTluTG1acGJHeFNaV04wS0dJdWJHVm1kQ3dnWWk1MGIzQXNJR0l1ZDJsa2RHZ3NJR0l1YUdWcFoyaDBLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0VkcwNklGUmxlSFJOWlhSeWFXTnpJRDBnWnk1dFpXRnpkWEpsVkdWNGRDaHRiMjV2YldWeUtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHbG1JQ2h0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkQ0FoUFNBd0tWeHVJQ0FnSUNBZ0lDQWdJQzh2SUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnYlRvZ0pIdHRmU3dnYlUwdVlXTjBkV0ZzUW05MWJtUnBibWRDYjNoQmMyTmxiblE2SUNSN2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5SOVlDazdYRzVjYmlBZ0lDQWdJQ0FnSUNCbkxuTmxkRlJ5WVc1elptOXliU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lHSXVkMmxrZEdnZ0x5QnRWRzB1ZDJsa2RHZ3NJREFzSURBc0lHSXVhR1ZwWjJoMElDOGdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZaTVzWldaMExDQmlMblJ2Y0NrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2h0YjI1dmJXVnlMQ0F3TENBdGRYQndaWEpqWVhObFRHVjBkR1Z5UVhOalpXNTBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWTJGc1kxTnBlbVVvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTVvYjNOMEtWeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnYkdWMElIZHBaSFJvT2lCdWRXMWlaWElnUFNCMGFHbHpMa3hsYm1kMGFDQXFJSFJvYVhNdWNHOXphWFJwYjI1WGFXUjBhRHRjYmlBZ0lDQnNaWFFnYUdWcFoyaDBJRDBnVFdGMGFDNXRhVzRvZEdocGN5NXRZWGhJWldsbmFIUXNJRTFoZEdndWJXRjRLSFJvYVhNdWJXbHVTR1ZwWjJoMExDQjBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwS1NrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1bWFYUkJjbVZoS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0I0VTJOaGJHVTZJRzUxYldKbGNpQTlJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ0x5Qm9aV2xuYUhRN1hHNGdJQ0FnSUNCamIyNXpkQ0I1VTJOaGJHVTZJRzUxYldKbGNpQTlJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUlhhV1IwYUNBdklIZHBaSFJvTzF4dUlDQWdJQ0FnWTI5dWMzUWdjMk5oYkdVZ1BTQk5ZWFJvTG0xaGVDZ3hMQ0JOWVhSb0xtMXBiaWg0VTJOaGJHVXNJSGxUWTJGc1pTa3BPMXh1SUNBZ0lDQWdkMmxrZEdnZ1BTQjNhV1IwYUNBcUlITmpZV3hsTzF4dUlDQWdJQ0FnYUdWcFoyaDBJRDBnYUdWcFoyaDBJQ29nYzJOaGJHVTdYRzRnSUNBZ0lDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NXdiM05wZEdsdmJsZHBaSFJvSUNvZ2MyTmhiR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2NpQTlJSGRwYm1SdmR5NWtaWFpwWTJWUWFYaGxiRkpoZEdsdk8xeHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GekxuZHBaSFJvSUQwZ2QybGtkR2dnS2lCeU8xeHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GekxuTjBlV3hsTG5kcFpIUm9JRDBnWUNSN2QybGtkR2g5Y0hoZ08xeHVYRzRnSUNBZ0x5OGdZMjl1YzNRZ1kyRnVkbUZ6U0dWcFoyaDBPaUJ1ZFcxaVpYSWdQU0IzYVdSMGFDQStJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUlhhV1IwYUNBL0lHaGxhV2RvZENBdElEZ2dPaUJvWldsbmFIUTdYRzRnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZG9aV2xuYUhRbkxDQmdKSHRvWldsbmFIUjljSGhnS1R0Y2JpQWdJQ0JqYjI1emRDQmpZVzUyWVhOSVpXbG5hSFE2SUc1MWJXSmxjaUE5SUhSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUTdYRzRnSUNBZ2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMElEMGdZMkZ1ZG1GelNHVnBaMmgwSUNvZ2NqdGNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25hR1ZwWjJoMEp5d2dZQ1I3WTJGdWRtRnpTR1ZwWjJoMGZYQjRZQ2s3WEc1Y2JpQWdJQ0F2THlCQlpHcDFjM1FnYUc5emRDQmhibVFnY205dmRDQjNhV1IwYUZ4dUlDQWdJR2xtSUNoMGFHbHpMbVpwZUZkcFpIUm9LU0I3WEc0Z0lDQWdJQ0F2THlCbWRXeHNJSGRwWkhSb0lHWnZjaUJqWVc1MllYTWdhRzl6ZENCaGJtUWdjbTl2ZEZ4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbmRwWkhSb0lEMGdkR2hwY3k1b2IzTjBMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1SUNBZ0lDQWdkR2hwY3k1eWIyOTBMbk4wZVd4bExtaGxhV2RvZENBOUlHQWtlMmhsYVdkb2RIMXdlR0E3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXVjMlYwVUhKdmNHVnlkSGtvSjI5MlpYSm1iRzkzSnl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdZV3hzYjNjZ2MyTnliMnhzSUdOaGJuWmhjeUJwYmlCeWIyOTBYRzRnSUNBZ0lDQjBhR2x6TG5KdmIzUXVjM1I1YkdVdWQybGtkR2dnUFNCMGFHbHpMbWh2YzNRdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzRnSUNBZ0lDQjBhR2x6TG1odmMzUXVjM1I1YkdVdWIzWmxjbVpzYjNkWUlEMGdKMkYxZEc4aGFXMXdiM0owWVc1MEp6dGNiaUFnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY25MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2QwWlhoMExXRnNhV2R1Snl3Z2RHaHBjeTVvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwS1R0Y2JseHVJQ0FnSUNBZ0x5OGdkbVZ5ZEdsallXd2dZV3hwWjI1dFpXNTBYRzRnSUNBZ0lDQnNaWFFnYUc5emRGUnZjRTFoY21kcGJpQTlJREE3WEc0Z0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWRtVnlkR2xqWVd4QmJHbG5ibTFsYm5RcElIdGNiaUFnSUNBZ0lHTmhjMlVnSjNSdmNDYzZYRzRnSUNBZ0lDQWdJR2h2YzNSVWIzQk5ZWEpuYVc0Z1BTQXdPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjIxcFpHUnNaU2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0JOWVhSb0xtMWhlQ2d3TENBb2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2tnTHlBeUtUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2RpYjNSMGIyMG5PbHh1SUNBZ0lDQWdJQ0JvYjNOMFZHOXdUV0Z5WjJsdUlEMGdUV0YwYUM1dFlYZ29NQ3dnZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RDQXRJR2hsYVdkb2RDazdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZHRZWEpuYVc0dGRHOXdKeXdnWUNSN2FHOXpkRlJ2Y0UxaGNtZHBibjF3ZUdBc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFFnUENCb1pXbG5hSFFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZG9aV2xuYUhRbkxDQmdKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMGZYQjRZQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVhRzl6ZEM1emRIbHNaUzV6WlhSUWNtOXdaWEowZVNnbmIzWmxjbVpzYjNjdGVTY3NJRzUxYkd3cE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZHZkbVZ5Wm14dmR5MTVKeXdnSjJocFpHUmxiaWNzSUNkcGJYQnZjblJoYm5RbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmpiMjV6YjJ4bExtUmxZblZuS0Z4dUlDQWdJQzh2SUNBZ1lIUm9hWE11Y205dmRDNXpkSGxzWlM1b1pXbG5hSFFnUFNBa2UzUm9hWE11Y205dmRDNXpkSGxzWlM1b1pXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RDQTlJQ1I3ZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RIMWNYRzVnSUN0Y2JpQWdJQ0F2THlBZ0lHQjBhR2x6TG1odmMzUXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1odmMzUXVjM1I1YkdVdWFHVnBaMmgwZlZ4Y2JtQWdLMXh1SUNBZ0lDOHZJQ0FnWUhSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUWdQU0FrZTNSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUjlYRnh1WUNBclhHNGdJQ0FnTHk4Z0lDQW5YRnh1SnlBclhHNGdJQ0FnTHk4Z0lDQmdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJQ0FnSUNBZ0lEMGdKSHQwYUdsekxtTmhiblpoY3k1b1pXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWMzUjViR1V1YUdWcFoyaDBJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1b1pXbG5hSFI5WUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdEVSeTVEYjJ4MWJXNTlJSE5sY1VOdmJDQkRiMngxYlc0Z2RHOGdiRzl2YXlCbWIzSWdZU0J3WVd4bGRIUmxYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNBZ2JXbHVUR1Z1WjNSb0lHMXBibWx0ZFcwZ2JHVnVaM1JvSUc5bUlITmxjWFZsYm1ObElIUnZJR1JsZEdWamRDQndZV3hsZEhSbElDaGxiWEIwZVNCemRISnBibWR6SUdGeVpTQmhiR3h2ZDJWa0tWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0VFpYRlFZV3hsZEhSbGZTQlFZV3hsZEhSbElHTnZjbkpsYzNCdmJtUnBibWNnZEc4Z2RHaGxJR0ZzY0doaFltVjBJRzltSUhSb1pTQnpaWEYxWlc1alpYTWdhVzRnZEdobElHTnZiSFZ0Ymx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlFZV3hsZEhSbEtITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQnRhVzVNWlc1bmRHZzZJRzUxYldKbGNpQTlJRFVwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCc1pYUWdjbVZ6T2lCVFpYRlFZV3hsZEhSbElId2diblZzYkNBOUlHNTFiR3c3WEc0Z0lDQWdjM2RwZEdOb0lDaHpaWEZEYjJ3dWMyVnRWSGx3WlNrZ2UxeHVJQ0FnSUdOaGMyVWdRVzFwYm05aFkybGtjeTVUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZYRzRnSUNBZ0lDQnlaWE1nUFNCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNdVIzSnZhMGR5YjNWd2N6dGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ1RuVmpiR1Z2ZEdsa1pYTXVVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9seHVJQ0FnSUNBZ2NtVnpJRDBnVG5WamJHVnZkR2xrWlhOUVlXeGxkSFJsY3k1RGFISnZiV0YwYjJkeVlXMDdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ2MzUmhkSE02SUZObGNVTnZiRk4wWVhSeklEMGdWMlZpVEc5bmJ5NW5aWFJUZEdGMGN5aHpaWEZEYjJ3c0lHMXBia3hsYm1kMGFDd2dWMlZpVEc5bmJ5NXpjR3hwZEhSbGNrRnpSbUZ6ZEdFcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWVd4d2FHRmlaWFJEWVc1a2FXUmhkR1Z6T2lCYlUyVjBQSE4wY21sdVp6NHNJRk5sY1ZCaGJHVjBkR1ZkVzEwZ1BTQmJYRzRnSUNBZ0lDQmJibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhPZFdOc1pXOTBhV1JsY3k1T1lXMWxjeWtwTENCT2RXTnNaVzkwYVdSbGMxQmhiR1YwZEdWekxrTm9jbTl0WVhSdlozSmhiVjBzWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loQmJXbHViMkZqYVdSekxrNWhiV1Z6S1Nrc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5NUhjbTlyUjNKdmRYQnpYU3hjYmlBZ0lDQmRPMXh1SUNBZ0lDOHZJRU5oYkdOMWJHRjBaU0JzYVd0bGJHbG9iMjlrY3lCbWIzSWdZV3h3YUdGaVpYUmZZMkZ1Wkdsa1lYUmxjMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsYzFOcGJUb2diblZ0WW1WeVcxMGdQU0JoYkhCb1lXSmxkRU5oYm1ScFpHRjBaWE5jYmlBZ0lDQWdJQzV0WVhBb0tHTXBJRDArSUZkbFlreHZaMjh1WjJWMFFXeHdhR0ZpWlhSVGFXMXBiR0Z5YVhSNUtITjBZWFJ6TG1aeVpYRXNJR05iTUYwcEtUdGNiaUFnSUNCamIyNXpkQ0J0WVhoRGIzTWdQU0JOWVhSb0xtMWhlQ2d1TGk1aGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOVGFXMHBPMXh1SUNBZ0lHbG1JQ2h0WVhoRGIzTWdQaUF3TGpZMUtWeHVJQ0FnSUNBZ2NtVnpJRDBnWVd4d2FHRmlaWFJEWVc1a2FXUmhkR1Z6VzJGc2NHaGhZbVYwUTJGdVpHbGtZWFJsYzFOcGJTNXBibVJsZUU5bUtHMWhlRU52Y3lsZFd6RmRPMXh1SUNBZ0lHVnNjMlZjYmlBZ0lDQWdJSEpsY3lBOUlGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbGN5NURiMnh2Y2p0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhNN1hHNGdJSDFjYmx4dUlDQXZLaW9nVTNSaGRITWdiMllnYzJWeGRXVnVZMlZ6SUhkcGRHZ2djM0JsWTJsbWFXVmtJSE53YkdsMGRHVnlJR1oxYm1Nc0lISmxkSFZ5Ym5NZ2V5Qm1jbVZ4TENCellXMWxUR1Z1WjNSb0lIMHVYRzRnSUNBcUlFQndZWEpoYlNCN1JFY3VRMjlzZFcxdWZTQnpaWEZEYjJ4Y2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzFwYmt4bGJtZDBhRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxTndiR2wwZEdWeVJuVnVZMzBnYzNCc2FYUjBaWEpjYmlBZ0lDb2dRSEpsZEhWeWJpQjdJRk5sY1VOdmJGTjBZWFJ6SUgwc0lITmhiV1ZNWlc1bmRHZzZJR0p2YjJ4bFlXNGdmU0J6ZEdGMGN5QnZaaUJqYjJ4MWJXNGdjMlZ4ZFdWdVkyVnpYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwVTNSaGRITW9jMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNJRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aktUb2dVMlZ4UTI5c1UzUmhkSE1nZTF4dUlDQWdJR052Ym5OMElHWnlaWEU2SUhzZ1cyMDZJSE4wY21sdVoxMDZJRzUxYldKbGNpQjlJRDBnZTMwN1hHNGdJQ0FnYkdWMElITmhiV1ZNWlc1bmRHZ2dQU0IwY25WbE8xeHVJQ0FnSUd4bGRDQm1hWEp6ZEV4bGJtZDBhQ0E5SUc1MWJHdzdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSE5sY1NCdlppQnpaWEZEYjJ3dVkyRjBaV2R2Y21sbGN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JWTmxjU0E5SUhOd2JHbDBkR1Z5S0hObGNTazdYRzVjYmlBZ0lDQWdJR2xtSUNobWFYSnpkRXhsYm1kMGFDQTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ0lDQm1hWEp6ZEV4bGJtZDBhQ0E5SUcxVFpYRXViR1Z1WjNSb08xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb2JWTmxjUzVzWlc1bmRHZ2dJVDA5SUdacGNuTjBUR1Z1WjNSb0tWeHVJQ0FnSUNBZ0lDQnpZVzFsVEdWdVozUm9JRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQWdJR2xtSUNodFUyVnhMbXhsYm1kMGFDQStJRzFwYmt4bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYlZObGNTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLRzBnYVc0Z1puSmxjU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElEMGdNRHRjYmlBZ0lDQWdJQ0FnSUNCbWNtVnhXMjFkSUNzOUlERTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUh0bWNtVnhPaUJtY21WeExDQnpZVzFsVEdWdVozUm9PaUJ6WVcxbFRHVnVaM1JvZlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFFXeHdhR0ZpWlhSVGFXMXBiR0Z5YVhSNUtHWnlaWEU2SUUxdmJtOXRaWEpHY21WeGN5d2dZV3h3YUdGaVpYUTZJRk5sZER4emRISnBibWMrTENCbllYQlRlVzFpYjJ3NklITjBjbWx1WnlBOUlDY3RKeWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdZMjl1YzNRZ2EyVjVjeUE5SUc1bGR5QlRaWFE4YzNSeWFXNW5QaWhiTGk0dWJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aG1jbVZ4S1Nrc0lDNHVMbUZzY0doaFltVjBYU2s3WEc0Z0lDQWdhMlY1Y3k1a1pXeGxkR1VvWjJGd1UzbHRZbTlzS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR1p5WlhGQk9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFFUb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdhMlY1Y3lrZ2UxeHVJQ0FnSUNBZ1puSmxjVUV1Y0hWemFDaHRJR2x1SUdaeVpYRWdQeUJtY21WeFcyMWRJRG9nTUNrN1hHNGdJQ0FnSUNCaGJIQm9ZV0psZEVFdWNIVnphQ2hoYkhCb1lXSmxkQzVvWVhNb2JTa2dQeUF4SURvZ01DazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUlGUm9aWEpsSUhkbGNtVWdZU0JtWlhjZ2FXUmxZWE02SUdOb2FTMXpjWFZoY21Wa0xDQndaV0Z5YzI5dUlHTnZjbkpsYkdGMGFXOXVJQ2gyWVhKcFlXNWpaVDhwTENCelkyRnNZWElnY0hKdlpIVmpkQ0FxTDF4dUlDQWdJR052Ym5OMElHWnlaWEZXT2lCV1pXTjBiM0lnUFNCdVpYY2dWbVZqZEc5eUtHWnlaWEZCS1R0Y2JpQWdJQ0JqYjI1emRDQmhiSEJvWVdKbGRGWTZJRlpsWTNSdmNpQTlJRzVsZHlCV1pXTjBiM0lvWVd4d2FHRmlaWFJCS1R0Y2JpQWdJQ0JqYjI1emRDQmpiM002SUc1MWJXSmxjaUE5SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvWm5KbGNWWXNJR0ZzY0doaFltVjBWaWtnTHlBb2RtVmpkRzl5VEdWdVozUm9LR1p5WlhGV0tTQXFJSFpsWTNSdmNreGxibWQwYUNoaGJIQm9ZV0psZEZZcEtUdGNiaUFnSUNCeVpYUjFjbTRnWTI5ek8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVacGNuTjBJSFJ5ZVNCMGJ5Qm1hVzVrSUdOdmJIVnRiaUIzYVhSb0lITmxiVlI1Y0dVZ0oyRnNhV2R1WldSVFpYRjFaVzVqWlNjdVhHNGdJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkVjdVJHRjBZVVp5WVcxbGZTQmtZWFJoUm5KaGJXVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQlVhR1VnWTI5c2RXMXVJSGRsSUhkbGNtVWdiRzl2YTJsdVp5Qm1iM0lnYjNJZ2JuVnNiRnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0J3YVdOclZYQlRaWEZEYjJ3b1pHRjBZVVp5WVcxbE9pQkVSeTVFWVhSaFJuSmhiV1VwT2lCRVJ5NURiMngxYlc0Z2ZDQnVkV3hzSUh0Y2JpQWdJQ0JzWlhRZ2NtVnpPaUJFUnk1RGIyeDFiVzRnZkNCdWRXeHNJRDBnWkdGMFlVWnlZVzFsTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsS0NkaGJHbG5ibVZrVTJWeGRXVnVZMlVuS1R0Y2JpQWdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWTI5c0lHOW1JR1JoZEdGR2NtRnRaUzVqYjJ4MWJXNXpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR053SUQwZ1YyVmlURzluYnk1d2FXTnJWWEJRWVd4bGRIUmxLR052YkNCaGN5QkVSeTVEYjJ4MWJXNHNJRFVwTzF4dUlDQWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsY3lBOUlHTnZiRHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2NtVnpPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdiVzl1YjIxbGNsSmxJRDBnTDF4Y1d5aGNYSGNyS1Z4Y1hYd29YRngzS1h3b0xTa3ZaenRjYmx4dUlDQXZLaW9nVTNCc2FYUWdjMlZ4ZFdWdVkyVWdabTl5SUhOcGJtZHNaU0JqYUdGeVlXTjBaWElnYlc5dWIyMWxjbk1zSUhOeGRXRnlaU0JpY21GamEyVjBjeUJ0ZFd4MGFXTm9ZWElnYlc5dWIyMWxjaUJ1WVcxbGN5QnZjaUJuWVhBZ2MzbHRZbTlzTGx4dUlDQWdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2MyVnhJRzlpYW1WamRDQjNhWFJvSUhObGNYVmxibU5sWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JoY25KaGVTQnZaaUJ0YjI1dmJXVnljMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QnpjR3hwZEhSbGNrRnpSbUZ6ZEdFb2MyVnhPaUJoYm5rcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ1kyOXVjM1FnY21Wek9pQnpkSEpwYm1kYlhTQTlJSGQxUEZKbFowVjRjRTFoZEdOb1FYSnlZWGsrS0hObGNTNTBiMU4wY21sdVp5Z3BMbTFoZEdOb1FXeHNLRmRsWWt4dloyOHViVzl1YjIxbGNsSmxLU2xjYmlBZ0lDQWdJQzV0WVhBb0tHMWhPaUJTWldkRmVIQk5ZWFJqYUVGeWNtRjVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J0VW1Wek9pQnpkSEpwYm1jN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcwNklITjBjbWx1WnlBOUlHMWhXekJkTzF4dUlDQWdJQ0FnSUNCcFppQW9iUzVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0cwZ2FXNGdWMlZpVEc5bmJ5NWhZVk41Ym05dWVXMXpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRVbVZ6SUQwZ1YyVmlURzluYnk1aFlWTjVibTl1ZVcxelcyMWRPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRVbVZ6SUQwZ0p5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1SbFluVm5LR0JNYjI1bklHMXZibTl0WlhJZ0p5UjdiWDBuSUdoaGN5QnViM1FnWVNCemFHOXlkQ0J6ZVc1dmJubHRMbUFwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J0VW1WeklEMGdiVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYlZKbGN6dGNiaUFnSUNBZ0lIMHBMblJ2UVhKeVlYa29LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNBdktpb2dSMlYwY3lCdFpYUm9iMlFnZEc4Z2MzQnNhWFFnYzJWeGRXVnVZMlVnWW5rZ2MyVndZWEpoZEc5eVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVM0JzYVhSMFpYSkdkVzVqZlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSVGNHeHBkSFJsY2xkcGRHaFRaWEJoY21GMGIzSW9jMlZ3WVhKaGRHOXlPaUJ6ZEhKcGJtY3BPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0FnSUhKbGRIVnliaUFvYzJWeE9pQnpkSEpwYm1jcElEMCtJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnpaWEV1YzNCc2FYUW9jMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHlvcUlFZGxkQ0J6Y0d4cGRIUmxjaUJ0WlhSb2IyUWdkRzhnYzNCc2FYUWdjMlZ4ZFdWdVkyVnpJSFJ2SUcxdmJtOXRaWEp6SUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBVM0JzYVhSMFpYSW9kVzVwZEhNNklITjBjbWx1Wnl3Z2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jcE9pQlRjR3hwZEhSbGNrWjFibU1nZTF4dUlDQWdJR2xtSUNoMWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29KMlpoYzNSaEp5a3BYRzRnSUNBZ0lDQnlaWFIxY200Z1YyVmlURzluYnk1emNHeHBkSFJsY2tGelJtRnpkR0U3WEc0Z0lDQWdaV3h6WlNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0NkelpYQmhjbUYwYjNJbktTbGNiaUFnSUNBZ0lISmxkSFZ5YmlCWFpXSk1iMmR2TG1kbGRGTndiR2wwZEdWeVYybDBhRk5sY0dGeVlYUnZjaWh6WlhCaGNtRjBiM0lwTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1bGVIQmxZM1JsWkNCMWJtbDBjeUFrZTNWdWFYUnpmU0F1WUNrN1hHNWNiaUFnSUNBdkx5QlVUMFJQT2lCVGNHeHBkSFJsY2lCbWIzSWdTRVZNVFZ4dUlDQjlYRzVjYmlBZ0x5b3FJRTl1YkhrZ2MyOXRaU0J2WmlCMGFHVWdjM2x1YjI1NWJYTXVJRlJvWlhObElIZGxjbVVnYjJKMFlXbHVaV1FnWm5KdmJTQjBhR1VnWTJ4MWMzUmxjbVZrSUc5c2FXZHZjR1Z3ZEdsa1pTQmtZWFJoYzJWMExpQXFMMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJoWVZONWJtOXVlVzF6T2lCN0lGdHVZVzFsT2lCemRISnBibWRkT2lCemRISnBibWNnZlNBOUlIdGNiaUFnSUNBblcwMWxUbXhsWFNjNklDZE1KeXdnTHk4Z1RteGxJQzBnYm05eWJHVjFZMmx1WlZ4dUlDQWdJQ2RiVFdWQlhTYzZJQ2RCSnl4Y2JpQWdJQ0FuVzAxbFIxMG5PaUFuUnljc1hHNGdJQ0FnSjF0TlpVWmRKem9nSjBZbkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVEaW1lbnNpbmFsaXR5UmVkdWNpbmdXb3JrZXIgfSBmcm9tICcuL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNpbmctd29ya2VyLWNyZWF0b3InO1xuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbihkYXRhQ29sLCBtZXRob2ROYW1lLCBzaW1pbGFyaXR5TWV0cmljLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXMgPSB5aWVsZCBjcmVhdGVEaW1lbnNpbmFsaXR5UmVkdWNpbmdXb3JrZXIoeyBkYXRhOiBkYXRhQ29sLCBtZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMgfSwgbWV0aG9kTmFtZSwgb3B0aW9ucyk7XG4gICAgICAgIGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzLmVtYmVkZGluZyA9IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzLmVtYmVkZGluZy5tYXAoaXQgPT4gbm9ybWFsaXplKGl0KSk7XG4gICAgICAgIHJldHVybiBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcztcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdGMzQmhZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnpaWEYxWlc1alpTMXpjR0ZqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN1FVRkZRU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZGTEUxQlFVMHNhVVJCUVdsRUxFTkJRVU03UVVGSE5VVXNUMEZCVHl4RlFVRkZMR2xEUVVGcFF5eEZRVUVyUWl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlIyeEpMRTFCUVUwc1ZVRkJaMElzYjBOQlFXOURMRU5CUTNSRUxFOUJRWEZETEVWQlEzSkRMRlZCUVd0Q0xFVkJRMnhDTEdkQ1FVRTJSQ3hGUVVNM1JDeFBRVUZoT3p0UlFVVmlMRTFCUVUwc2RVSkJRWFZDTEVkQlEzcENMRTFCUVUwc2FVTkJRV2xETEVOQlEyNURMRVZCUVVVc1NVRkJTU3hGUVVGRkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNaMEpCUVdkQ0xFVkJRV2RDTEVWQlEzcEVMRlZCUVZVc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVUzUWl4MVFrRkJkVUlzUTBGQlF5eFRRVUZUTEVkQlFVY3NkVUpCUVhWQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5R0xFOUJRVThzZFVKQlFYVkNMRU5CUVVNN1NVRkRia01zUTBGQlF6dERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUVKcGRFRnljbUY1SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDJKcGRDMWhjbkpoZVNjN1hHNXBiWEJ2Y25RZ2V5Qk5ZWFJ5YVhnc0lGWmxZM1J2Y2lCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdJRzV2Y20xaGJHbDZaU0I5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVwYlhCdmNuUWdleUJDYVhSQmNuSmhlVTFsZEhKcFkzTXNJRk4wY21sdVowMWxkSEpwWTNNc0lGWmhiR2xrVkhsd1pYTXNJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZTQm1jbTl0SUNjdUwzUjVjR1ZrTFcxbGRISnBZM01uTzF4dWFXMXdiM0owSUhzZ1kzSmxZWFJsUkdsdFpXNXphVzVoYkdsMGVWSmxaSFZqYVc1blYyOXlhMlZ5TENCSlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRZ2ZTQm1jbTl0SUNjdUwzZHZjbXRsY25NdlpHbHRaVzV6YVc5dVlXeHBkSGt0Y21Wa2RXTnBibWN0ZDI5eWEyVnlMV055WldGMGIzSW5PMXh1WEc1Y2JtVjRjRzl5ZENCaGMzbHVZeUJtZFc1amRHbHZiaUJ5WldSMVkyVkVhVzFsYm5OcGJtRnNhWFI1VjJsMGFFNXZjbTFoYkdsNllYUnBiMjRvWEc0Z0lDQWdaR0YwWVVOdmJEb2dRbWwwUVhKeVlYbGJYWHhXWldOMGIzSmJYWHh6ZEhKcGJtZGJYU3dnWEc0Z0lDQWdiV1YwYUc5a1RtRnRaVG9nYzNSeWFXNW5MQ0JjYmlBZ0lDQnphVzFwYkdGeWFYUjVUV1YwY21sak9pQkNhWFJCY25KaGVVMWxkSEpwWTNOOFZtVmpkRzl5VFdWMGNtbGpjM3hUZEhKcGJtZE5aWFJ5YVdOekxGeHVJQ0FnSUc5d2RHbHZibk0vT2lCaGJua3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dVhHNGdJQ0FnWTI5dWMzUWdaR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZTWlhNNklFbFNaV1IxWTJWRWFXMWxibk5wYjI1aGJHbDBlVkpsYzNWc2RDQTlYRzRnSUNBZ0lDQWdJR0YzWVdsMElHTnlaV0YwWlVScGJXVnVjMmx1WVd4cGRIbFNaV1IxWTJsdVoxZHZjbXRsY2loY2JpQWdJQ0FnSUNBZ0lDQWdJSHNnWkdGMFlUb2daR0YwWVVOdmJDd2diV1YwY21sak9pQnphVzFwYkdGeWFYUjVUV1YwY21saklIMGdZWE1nVm1Gc2FXUlVlWEJsY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsZEdodlpFNWhiV1VzSUc5d2RHbHZibk1wTzF4dVhHNGdJQ0FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTXVaVzFpWldSa2FXNW5JRDBnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTXVaVzFpWldSa2FXNW5MbTFoY0NocGRDQTlQaUJ1YjNKdFlXeHBlbVVvYVhRcEtUdGNiaUFnSUNCeVpYUjFjbTRnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTdYRzU5SWwxOSIsImltcG9ydCAqIGFzIGZsIGZyb20gJ2Zhc3Rlc3QtbGV2ZW5zaHRlaW4nO1xuaW1wb3J0IHsgamFyb1dpbmtsZXIgfSBmcm9tICdqYXJvLXdpbmtsZXItdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBkaXN0YW5jZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MnO1xuaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICAnVmVjdG9yJzoge1xuICAgICAgICAnRXVjbGlkZWFuRGlzdGFuY2UnOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSxcbiAgICB9LFxuICAgICdTdHJpbmcnOiB7XG4gICAgICAgICdMZXZlbnNodGVpbic6IGZsLmRpc3RhbmNlLFxuICAgICAgICAnSmFyby1XaW5rbGVyJzogamFyb1dpbmtsZXIsXG4gICAgfSxcbiAgICAnQml0QXJyYXknOiB7XG4gICAgICAgICdUYW5pbW90byc6IGRpc3RhbmNlTWV0cmljc1snVGFuaW1vdG8nXSxcbiAgICAgICAgJ0RpY2UnOiBkaXN0YW5jZU1ldHJpY3NbJ0RpY2UnXSxcbiAgICAgICAgJ0FzeW1tZXRyaWMnOiBkaXN0YW5jZU1ldHJpY3NbJ0FzeW1tZXRyaWMnXSxcbiAgICAgICAgJ0JyYXVuLUJsYW5xdWV0JzogZGlzdGFuY2VNZXRyaWNzWydCcmF1bi1CbGFucXVldCddLFxuICAgICAgICAnQ29zaW5lJzogZGlzdGFuY2VNZXRyaWNzWydDb3NpbmUnXSxcbiAgICAgICAgJ0t1bGN6eW5za2knOiBkaXN0YW5jZU1ldHJpY3NbJ0t1bGN6eW5za2knXSxcbiAgICAgICAgJ01jLUNvbm5hdWdoZXknOiBkaXN0YW5jZU1ldHJpY3NbJ01jLUNvbm5hdWdoZXknXSxcbiAgICAgICAgJ1JvZ290LUdvbGRiZXJnJzogZGlzdGFuY2VNZXRyaWNzWydSb2dvdC1Hb2xkYmVyZyddLFxuICAgICAgICAnUnVzc2VsJzogZGlzdGFuY2VNZXRyaWNzWydSdXNzZWwnXSxcbiAgICAgICAgJ1Nva2FsJzogZGlzdGFuY2VNZXRyaWNzWydTb2thbCddLFxuICAgIH0sXG59O1xuZXhwb3J0IGNvbnN0IE1ldHJpY1RvRGF0YVR5cGUgPSBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKVxuICAgIC5yZWR1Y2UoKHJldCwga2V5KSA9PiB7XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1trZXldKSkge1xuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn0sIHt9KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ01ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaXRBcnJheU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ0JpdEFycmF5Jztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3Rvck1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1ZlY3Rvcic7XG59XG4vKiogVW5pZmllZCBjbGFzcyBpbXBsZW1lbnRpbmcgZGlmZmVyZW50IHN0cmluZyBtZWFzdXJlcy4gKi9cbmV4cG9ydCBjbGFzcyBNZWFzdXJlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE1lYXN1cmUgd2l0aCAuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBNZXRob2QgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc3RyaW5ncy5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXRob2QpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHRoaXMuZGF0YVR5cGUgPSBNZXRyaWNUb0RhdGFUeXBlW21ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBmdW5jdGlvbiBzcGVjaWZpZWQuXG4gICAgICogQHJldHVybiB7RGlzdGFuY2VNZXRyaWN9IENhbGxiYWNrIG9mIHRoZSBtZWFzdXJlIGNob3Nlbi5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBnZXRNZWFzdXJlKCkge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgcmV0dXJuIGRpY3RbdGhpcy5kYXRhVHlwZV1bdGhpcy5tZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgYnkgdGhlIGdpdmVuIGRhdGEgdHlwZS5cbiAgICAgKiBAcGFyYW0ge0F2YWlsYWJsZURhdGFUeXBlc30gZGF0YVR5cGUgTWV0cmljJ3MgZGF0YSB0eXBlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IE1ldHJpYyBuYW1lcyB3aGljaCBleHBlY3RzIHRoZSBnaXZlbiBkYXRhIHR5cGVcbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TWV0cmljQnlEYXRhVHlwZShkYXRhVHlwZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1tkYXRhVHlwZV0pO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBtZXRyaWMgbmFtZXMgYXZhaWxhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZWFzdXJlcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaV1F0YldWMGNtbGpjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUjVjR1ZrTFcxbGRISnBZM011ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXp0QlFVTXhReXhQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZETEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRmNFUXNUMEZCVHl4RlFVRkRMR1ZCUVdVc1JVRkJReXhOUVVGTkxHdEVRVUZyUkN4RFFVRkRPMEZCUTJwR0xFOUJRVThzUlVGQlF5d3dRa0ZCTUVJc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCU1ROR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGSE8wbEJRemxDTEZGQlFWRXNSVUZCUlR0UlFVTlNMRzFDUVVGdFFpeEZRVUZGTERCQ1FVRXdRanRMUVVOb1JEdEpRVU5FTEZGQlFWRXNSVUZCUlR0UlFVTlNMR0ZCUVdFc1JVRkJSU3hGUVVGRkxFTkJRVU1zVVVGQlVUdFJRVU14UWl4alFVRmpMRVZCUVVVc1YwRkJWenRMUVVNMVFqdEpRVU5FTEZWQlFWVXNSVUZCUlR0UlFVTldMRlZCUVZVc1JVRkJSU3hsUVVGbExFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEzWkRMRTFCUVUwc1JVRkJSU3hsUVVGbExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF5OUNMRmxCUVZrc1JVRkJSU3hsUVVGbExFTkJRVU1zV1VGQldTeERRVUZETzFGQlF6TkRMR2RDUVVGblFpeEZRVUZGTEdWQlFXVXNRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU51UkN4UlFVRlJMRVZCUVVVc1pVRkJaU3hEUVVGRExGRkJRVkVzUTBGQlF6dFJRVU51UXl4WlFVRlpMRVZCUVVVc1pVRkJaU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVU16UXl4bFFVRmxMRVZCUVVVc1pVRkJaU3hEUVVGRExHVkJRV1VzUTBGQlF6dFJRVU5xUkN4blFrRkJaMElzUlVGQlJTeGxRVUZsTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJrUXNVVUZCVVN4RlFVRkZMR1ZCUVdVc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRGJrTXNUMEZCVHl4RlFVRkZMR1ZCUVdVc1EwRkJReXhQUVVGUExFTkJRVU03UzBGRGJFTTdRMEZEUml4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVhGQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03UzBGRE5VVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJjVUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0SlFVTnlReXhMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNSMEZCZVVJc1EwRkJReXhEUVVGRExFVkJRVVU3VVVGRE1VVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTMEZEZEVNN1NVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVZkVUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYTBJN1NVRkRMME1zVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGclFqdEpRVU5xUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhKUVVGclFqdEpRVU12UXl4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJRenRCUVVNMVF5eERRVUZETzBGQlJVUXNORVJCUVRSRU8wRkJRelZFTEUxQlFVMHNUMEZCVHl4UFFVRlBPMGxCU1d4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFMUJRVzlDTzFGQlF6bENMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGMVFpeERRVUZETzBsQlEycEZMRU5CUVVNN1NVRkZSRHM3T3p0UFFVbEhPMGxCUTBrc1ZVRkJWVHRSUVVObUxFMUJRVTBzU1VGQlNTeEhRVUZ6UkN4blFrRkJaMElzUTBGQlF6dFJRVU5xUml4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRekZETEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4UlFVRTBRanRSUVVNMVJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlJVUTdPMDFCUlVVN1NVRkRSaXhOUVVGTkxFdEJRVXNzYVVKQlFXbENPMUZCUXpGQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzBsQlEzWkRMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHWnNJR1p5YjIwZ0oyWmhjM1JsYzNRdGJHVjJaVzV6YUhSbGFXNG5PMXh1YVcxd2IzSjBJSHRxWVhKdlYybHVhMnhsY24wZ1puSnZiU0FuYW1GeWJ5MTNhVzVyYkdWeUxYUjVjR1Z6WTNKcGNIUW5PMXh1YVcxd2IzSjBJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRrYVhOMFlXNWpaVTFsZEhKcFkzTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM05wYldsc1lYSnBkSGt0YldWMGNtbGpjeWM3WEc1cGJYQnZjblFnZTJOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdWbVZqZEc5eUxDQlRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNBblZtVmpkRzl5SnpvZ2UxeHVJQ0FnSUNkRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlNjNklHTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVJQ0I5TEZ4dUlDQW5VM1J5YVc1bkp6b2dlMXh1SUNBZ0lDZE1aWFpsYm5Ob2RHVnBiaWM2SUdac0xtUnBjM1JoYm1ObExGeHVJQ0FnSUNkS1lYSnZMVmRwYm10c1pYSW5PaUJxWVhKdlYybHVhMnhsY2l4Y2JpQWdmU3hjYmlBZ0owSnBkRUZ5Y21GNUp6b2dlMXh1SUNBZ0lDZFVZVzVwYlc5MGJ5YzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25WR0Z1YVcxdmRHOG5YU3hjYmlBZ0lDQW5SR2xqWlNjNklHUnBjM1JoYm1ObFRXVjBjbWxqYzFzblJHbGpaU2RkTEZ4dUlDQWdJQ2RCYzNsdGJXVjBjbWxqSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkQmMzbHRiV1YwY21sakoxMHNYRzRnSUNBZ0owSnlZWFZ1TFVKc1lXNXhkV1YwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkQ2NtRjFiaTFDYkdGdWNYVmxkQ2RkTEZ4dUlDQWdJQ2REYjNOcGJtVW5PaUJrYVhOMFlXNWpaVTFsZEhKcFkzTmJKME52YzJsdVpTZGRMRnh1SUNBZ0lDZExkV3hqZW5sdWMydHBKem9nWkdsemRHRnVZMlZOWlhSeWFXTnpXeWRMZFd4amVubHVjMnRwSjEwc1hHNGdJQ0FnSjAxakxVTnZibTVoZFdkb1pYa25PaUJrYVhOMFlXNWpaVTFsZEhKcFkzTmJKMDFqTFVOdmJtNWhkV2RvWlhrblhTeGNiaUFnSUNBblVtOW5iM1F0UjI5c1pHSmxjbWNuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjFKdloyOTBMVWR2YkdSaVpYSm5KMTBzWEc0Z0lDQWdKMUoxYzNObGJDYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25VblZ6YzJWc0oxMHNYRzRnSUNBZ0oxTnZhMkZzSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkVGIydGhiQ2RkTEZ4dUlDQjlMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtTQjdYRzRnSUNBZ0lDQnlaWFJiZG1Gc0lHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBnUFNCclpYazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJSDBzSUh0OUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc1bGVIQnZjblFnZEhsd1pTQlRkSEpwYm1kTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMU4wY21sdVp5ZGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1FtbDBRWEp5WVhsTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMEpwZEVGeWNtRjVKMTA3WEc1bGVIQnZjblFnZEhsd1pTQldaV04wYjNKTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMVpsWTNSdmNpZGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1MyNXZkMjVOWlhSeWFXTnpJRDBnVTNSeWFXNW5UV1YwY21samN5QjhJRUpwZEVGeWNtRjVUV1YwY21samN5QjhJRlpsWTNSdmNrMWxkSEpwWTNNN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaaGJHbGtWSGx3WlhNZ1BTQjdaR0YwWVRvZ2MzUnlhVzVuVzEwc0lHMWxkSEpwWXpvZ1UzUnlhVzVuVFdWMGNtbGpjMzBnZkNCN1pHRjBZVG9nVm1WamRHOXlXMTBzSUcxbGRISnBZem9nVm1WamRHOXlUV1YwY21samMzMGdmRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHRrWVhSaE9pQkNhWFJCY25KaGVWdGRMQ0J0WlhSeWFXTTZJRUpwZEVGeWNtRjVUV1YwY21samMzMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzFOMGNtbHVaMDFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnSjFOMGNtbHVaeWM3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMEpwZEVGeWNtRjVUV1YwY21saktHNWhiV1U2SUV0dWIzZHVUV1YwY21samN5a2dlMXh1SUNCeVpYUjFjbTRnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR1WVcxbFhTQTlQU0FuUW1sMFFYSnlZWGtuTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5XWldOMGIzSk5aWFJ5YVdNb2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUhKbGRIVnliaUJOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjVoYldWZElEMDlJQ2RXWldOMGIzSW5PMXh1ZlZ4dVhHNHZLaW9nVlc1cFptbGxaQ0JqYkdGemN5QnBiWEJzWlcxbGJuUnBibWNnWkdsbVptVnlaVzUwSUhOMGNtbHVaeUJ0WldGemRYSmxjeTRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJOWldGemRYSmxJSHRjYmlBZ2NISnZkR1ZqZEdWa0lHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpPMXh1SUNCd2NtOTBaV04wWldRZ1pHRjBZVlI1Y0dVNklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGN6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJOWldGemRYSmxJSGRwZEdnZ0xseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYldWMGFHOWtJRTFsZEdodlpDQjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUJ6ZEhKcGJtZHpMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0cxbGRHaHZaRG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUNBZ2RHaHBjeTV0WlhSb2IyUWdQU0J0WlhSb2IyUTdYRzRnSUNBZ2RHaHBjeTVrWVhSaFZIbHdaU0E5SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYldWMGFHOWtYU0JoY3lCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmpkWE4wYjIwZ2MzUnlhVzVuSUdScGMzUmhibU5sSUdaMWJtTjBhVzl1SUhOd1pXTnBabWxsWkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkdsemRHRnVZMlZOWlhSeWFXTjlJRU5oYkd4aVlXTnJJRzltSUhSb1pTQnRaV0Z6ZFhKbElHTm9iM05sYmk1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUUxbFlYTjFjbVZ5WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFRXVmhjM1Z5WlNncE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCN1hHNGdJQ0FnWTI5dWMzUWdaR2xqZERvZ2UxdHJaWGs2SUhOMGNtbHVaMTA2SUh0YmEyVjVNam9nYzNSeWFXNW5YVG9nUkdsemRHRnVZMlZOWlhSeWFXTjlmU0E5SUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc0Z0lDQWdjbVYwZFhKdUlHUnBZM1JiZEdocGN5NWtZWFJoVkhsd1pWMWJkR2hwY3k1dFpYUm9iMlJkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1kzVnpkRzl0SUhOMGNtbHVaeUJrYVhOMFlXNWpaU0JpZVNCMGFHVWdaMmwyWlc0Z1pHRjBZU0IwZVhCbExseHVJQ0FnS2lCQWNHRnlZVzBnZTBGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzMwZ1pHRjBZVlI1Y0dVZ1RXVjBjbWxqSjNNZ1pHRjBZU0IwZVhCbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMXRkZlNCTlpYUnlhV01nYm1GdFpYTWdkMmhwWTJnZ1pYaHdaV04wY3lCMGFHVWdaMmwyWlc0Z1pHRjBZU0IwZVhCbFhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSTlpYUnlhV05DZVVSaGRHRlVlWEJsS0dSaGRHRlVlWEJsT2lCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlpHRjBZVlI1Y0dWZEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCU1pYUjFjbTV6SUcxbGRISnBZeUJ1WVcxbGN5QmhkbUZwYkdGaWJHVXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FxTDF4dUlDQnpkR0YwYVdNZ1oyVjBJR0YyWVdsc1lXSnNaVTFsWVhOMWNtVnpLQ2s2SUhOMGNtbHVaMXRkSUh0Y2JpQWdJQ0J5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vUVhaaGFXeGhZbXhsVFdWMGNtbGpjeWs3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmxldCB6b29tID0gZmFsc2U7XG4vLyBTZWFyY2hlcyBmb3IgYWN0aXZpdHkgY2xpZmZzIGluIGEgY2hlbWljYWwgZGF0YXNldCBieSBzZWxlY3RlZCBjdXRvZmZcbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpdml0eUNsaWZmcyhkZiwgc2VxQ29sLCBheGVzTmFtZXMsIHNjYXR0ZXJUaXRsZSwgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgc2ltaWxhcml0eU1ldHJpYywgbWV0aG9kTmFtZSwgc2VtVHlwZSwgdW5pdHMsIHNlcVNwYWNlRnVuYywgc2ltRnVuYywgdG9vbHRpcERyYXdGdW5jLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IE1JTl9TSU1JTEFSSVRZID0gODA7XG4gICAgICAgIGNvbnN0IGluaXRpYWxTaW1pbGFyaXR5TGltaXQgPSBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPyBNSU5fU0lNSUxBUklUWSA6IHNpbWlsYXJpdHkgLyAxMDA7XG4gICAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGNvb3JkaW5hdGVzIH0gPSB5aWVsZCBzZXFTcGFjZUZ1bmMoe1xuICAgICAgICAgICAgc2VxQ29sOiBzZXFDb2wsXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICAgICAgICAgIGVtYmVkQXhlc05hbWVzOiBheGVzTmFtZXMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb29yZGluYXRlcylcbiAgICAgICAgICAgIGRmLmNvbHVtbnMuYWRkKGNvbCk7XG4gICAgICAgIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBzZXFDb2wudG9MaXN0KCkpXSk7XG4gICAgICAgIGNvbnN0IGRpbSA9IHNlcUNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHNpbUFyciA9IEFycmF5KGRpbSAtIDEpO1xuICAgICAgICBpZiAoIWRpc3RhbmNlKVxuICAgICAgICAgICAgeWllbGQgZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZSwgc2ltQXJyKTtcbiAgICAgICAgY29uc3Qgb3B0U2ltaWxhcml0eUxpbWl0ID0gaW5pdGlhbFNpbWlsYXJpdHlMaW1pdDtcbiAgICAgICAgY29uc3Qgc2ltVmFscyA9IFtdO1xuICAgICAgICBjb25zdCBzYWxpVmFscyA9IFtdO1xuICAgICAgICBjb25zdCBuMSA9IFtdO1xuICAgICAgICBjb25zdCBuMiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqICE9IGRpbSAtIDEgLSBpOyArK2opIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW0gPSBzaW1BcnJbaV0uZ2V0KGopO1xuICAgICAgICAgICAgICAgIGlmIChzaW0gPj0gb3B0U2ltaWxhcml0eUxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIG4xLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgIG4yLnB1c2goaSArIGogKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2ltVmFscy5wdXNoKHNpbSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChpKSAtIGFjdGl2aXRpZXMuZ2V0KGkgKyBqICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2ltICE9IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxpVmFscy5wdXNoKGRpZmYgLyAoMSAtIHNpbSkpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxpVmFscy5wdXNoKEluZmluaXR5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2FsaVZhbHNXaXRob3V0SW5maW5pdHkgPSBzYWxpVmFscy5maWx0ZXIoaXQgPT4gaXQgIT09IEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU1pbiA9IE1hdGgubWluKC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU1heCA9IE1hdGgubWF4KC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU9wYWNpdHlDb2VmID0gMC44IC8gKHNhbGlNYXggLSBzYWxpTWluKTtcbiAgICAgICAgY29uc3QgbmVpZ2hib3Vyc0NvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgY29uc3Qgc2ltaWxhcml0eUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgY29uc3Qgc2FsaUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gbjEubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIG5laWdoYm91cnNDb3VudFtuMVtpXV0gKz0gMTtcbiAgICAgICAgICAgIG5laWdoYm91cnNDb3VudFtuMltpXV0gKz0gMTtcbiAgICAgICAgICAgIHNpbWlsYXJpdHlDb3VudFtuMVtpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICAgICAgICAgIHNpbWlsYXJpdHlDb3VudFtuMltpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICAgICAgICAgIGlmIChzYWxpVmFsc1tpXSAhPSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0aWVzLmdldChuMVtpXSkgPiBhY3Rpdml0aWVzLmdldChuMltpXSkpXG4gICAgICAgICAgICAgICAgICAgIHNhbGlDb3VudFtuMVtpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjJbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGkgPSBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIGBzYWxpXyR7YXhlc05hbWVzWzBdLnN1YnN0cmluZyhheGVzTmFtZXNbMF0ubGFzdEluZGV4T2YoJ18nKSl9YCwgc2FsaUNvdW50KTtcbiAgICAgICAgZGYuY29sdW1ucy5hZGQoc2FsaSk7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBncm9rLnNoZWxsLmdldFRhYmxlVmlldyhkZi5uYW1lKTtcbiAgICAgICAgY29uc3Qgc3AgPSB2aWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHtcbiAgICAgICAgICAgIHhDb2x1bW5OYW1lOiBheGVzTmFtZXNbMF0sXG4gICAgICAgICAgICB5Q29sdW1uTmFtZTogYXhlc05hbWVzWzFdLFxuICAgICAgICAgICAgc2l6ZTogc2FsaS5uYW1lLFxuICAgICAgICAgICAgY29sb3I6IGFjdGl2aXRpZXMubmFtZSxcbiAgICAgICAgICAgIHNob3dYU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1lTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93U2l6ZVNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dDb2xvclNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIG1hcmtlck1pblNpemU6IDUsXG4gICAgICAgICAgICBtYXJrZXJNYXhTaXplOiAyNSxcbiAgICAgICAgICAgIHRpdGxlOiBzY2F0dGVyVGl0bGVcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zdCBjYW52YXMgPSBzcC5nZXRJbmZvKClbJ2NhbnZhcyddO1xuICAgICAgICBjb25zdCBsaW5lc1JlcyA9IGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxQ29sLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpO1xuICAgICAgICBjb25zdCB0b29sdGlwcyA9IHt9O1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uQ3VycmVudENlbGxDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TW9sSWR4ID0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sICYmIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbC5uYW1lID09PSAnMl9zZXEnID8gMSA6IDA7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuY3VycmVudFJvd0lkeCA9XG4gICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSAtMSA/IGxpbmVzUmVzLmxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF0ubW9sc1tjdXJyZW50TW9sSWR4XSA6IC0xO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxpbmVzUmVzLmxpbmVzRGYub25TZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYubW91c2VPdmVyUm93SWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICAgICAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldEFsbChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydhY3RfZGlmZiddLCBbZmFsc2VdKTtcbiAgICAgICAgbGluZXNEZkdyaWQub25DZWxsQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHpvb20gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGlzdENsaWZmc0xpbmsgPSB1aS5idXR0b24oYCR7bGluZXNSZXMubGluZXNEZi5yb3dDb3VudH0gY2xpZmZzYCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2xpZmZzRGlhbG9nID0gdWkuZGlhbG9nKHsgdGl0bGU6ICdBY3Rpdml0eSBjbGlmZnMnIH0pXG4gICAgICAgICAgICAgICAgLmFkZChsaW5lc0RmR3JpZC5yb290KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICBjbGlmZnNEaWFsb2cucm9vdC5pZCA9ICdjbGlmZnNfZGlhbG9nJztcbiAgICAgICAgfSk7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUudG9wID0gJzEwcHgnO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgICAgICAgc3Aucm9vdC5hcHBlbmQobGlzdENsaWZmc0xpbmspO1xuICAgICAgICBsZXQgdGltZXI7XG4gICAgICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICB0aW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0b29sdGlwc1tsaW5lLmlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHJhd1Rvb2x0aXBQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHRvb2x0aXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGY6IGRmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBEcmF3RnVuYyhkcmF3VG9vbHRpcFBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5zaG93KHRvb2x0aXBzW2xpbmUuaWRdLCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLnNlbGVjdGlvbi5zZXQobGluZS5pZCwgbGluZS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gbGluZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID0gbGluZS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLmN1cnJlbnRSb3dJZHggPSBsaW5lLm1vbHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gcmVuZGVyTGluZXMoc3AsIGF4ZXNOYW1lc1swXSwgYXhlc05hbWVzWzFdLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbik7XG4gICAgICAgICAgICBpZiAoem9vbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gbGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeDEgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4MiA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeTIgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1sxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhEaWZmID0gTWF0aC5hYnMoeDEgLSB4MikgKiA1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5RGlmZiA9IE1hdGguYWJzKHkxIC0geTIpICogNTtcbiAgICAgICAgICAgICAgICAgICAgc3Auem9vbSh4MSA8IHgyID8geDEgLSB4RGlmZiA6IHgyIC0geERpZmYsIHkxID4geTIgPyB5MSArIHlEaWZmIDogeTIgKyB5RGlmZiwgeDEgPiB4MiA/IHgxICsgeERpZmYgOiB4MiArIHhEaWZmLCB5MSA8IHkyID8geTEgLSB5RGlmZiA6IHkyIC0geURpZmYpO1xuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgem9vbSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3AuYWRkUHJvcGVydHkoJ3NpbWlsYXJpdHlMaW1pdCcsICdkb3VibGUnLCBvcHRTaW1pbGFyaXR5TGltaXQpO1xuICAgICAgICByZXR1cm4gc3A7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lcykge1xuICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguYWJzKE1hdGguaHlwb3QobGluZS5hWzBdIC0geCwgbGluZS5hWzFdIC0geSkgK1xuICAgICAgICAgICAgTWF0aC5oeXBvdChsaW5lLmJbMF0gLSB4LCBsaW5lLmJbMV0gLSB5KSAtIE1hdGguaHlwb3QobGluZS5hWzBdIC0gbGluZS5iWzBdLCBsaW5lLmFbMV0gLSBsaW5lLmJbMV0pKTtcbiAgICAgICAgaWYgKGRpc3QgPCAyKVxuICAgICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVuZGVyTGluZXMoc3AsIHhBeGlzLCB5QXhpcywgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pIHtcbiAgICBjb25zdCBsaW5lcyA9IGxpbmVzUmVzLmxpbmVzO1xuICAgIGNvbnN0IGNhbnZhcyA9IHNwLmdldEluZm8oKVsnY2FudmFzJ107XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgY29uc3QgeCA9IHNwLmRhdGFGcmFtZS5jb2x1bW5zLmJ5TmFtZSh4QXhpcyk7XG4gICAgY29uc3QgeSA9IHNwLmRhdGFGcmFtZS5jb2x1bW5zLmJ5TmFtZSh5QXhpcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBwb2ludEZyb20gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMF0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgICAgIGNvbnN0IHBvaW50VG8gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMV0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzFdKSk7XG4gICAgICAgIGxpbmVzW2ldLmEgPSBbcG9pbnRGcm9tLngsIHBvaW50RnJvbS55XTtcbiAgICAgICAgbGluZXNbaV0uYiA9IFtwb2ludFRvLngsIHBvaW50VG8ueV07XG4gICAgICAgIGNvbnN0IGxpbmUgPSBuZXcgUGF0aDJEKCk7XG4gICAgICAgIGxpbmUubW92ZVRvKGxpbmVzW2ldLmFbMF0sIGxpbmVzW2ldLmFbMV0pO1xuICAgICAgICBjb25zdCBjb2xvciA9IGxpbmVzW2ldLnNlbGVjdGVkID8gJzI1NSwyNTUsMCcgOiAnMCwxMjgsMCc7XG4gICAgICAgIGNvbnN0IG9wYWNpdHkgPSBzYWxpVmFsc1tpXSA9PT0gSW5maW5pdHkgPyAxIDogMC4yICsgKHNhbGlWYWxzW2ldIC0gc2FsaU1pbikgKiBzYWxpT3BhY2l0eUNvZWY7XG4gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGByZ2JhKCR7Y29sb3J9LCR7b3BhY2l0eX0pYDtcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVzW2ldLmlkID09PSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPyAzIDogMTtcbiAgICAgICAgbGluZS5saW5lVG8obGluZXNbaV0uYlswXSwgbGluZXNbaV0uYlsxXSk7XG4gICAgICAgIGN0eC5zdHJva2UobGluZSk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpIHtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbnVtMSA9IG4xW2ldO1xuICAgICAgICBjb25zdCBudW0yID0gbjJbaV07XG4gICAgICAgIGxpbmVzLnB1c2goeyBpZDogaSwgbW9sczogW251bTEsIG51bTJdLCBzZWxlY3RlZDogZmFsc2UsIGE6IFtdLCBiOiBbXSB9KTtcbiAgICB9XG4gICAgY29uc3QgbGluZXNEZiA9IERHLkRhdGFGcmFtZS5jcmVhdGUobGluZXMubGVuZ3RoKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcxX3NlcScpLmluaXQoKGkpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1swXSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzJfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzFdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdhY3RfZGlmZicpXG4gICAgICAgIC5pbml0KChpKSA9PiBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzBdKSAtIGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0ludCgnbGluZV9pbmRleCcpLmluaXQoKGkpID0+IGkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnc2FsaScpLmluaXQoKGkpID0+IHNhbGlWYWxzW2ldKTtcbiAgICBsaW5lc0RmLmNvbCgnMV9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykudGFnc1tERy5UQUdTLlVOSVRTXSA9IHVuaXRzO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnNlbVR5cGUgPSBzZW1UeXBlO1xuICAgIGxpbmVzRGYuY29sKCcyX3NlcScpLnNlbVR5cGUgPSBzZW1UeXBlO1xuICAgIHJldHVybiB7IGxpbmVzLCBsaW5lc0RmIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbCA9IHNlcUNvbC5nZXQoaSk7XG4gICAgICAgICAgICBkZlNlcS5yb3dzLnJlbW92ZUF0KDAsIDEsIGZhbHNlKTtcbiAgICAgICAgICAgIHNpbUFycltpXSA9ICh5aWVsZCBzaW1GdW5jKGRmU2VxLmNvbCgnc2VxJyksIG1vbCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaW1BcnI7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2VzLCBzaW1BcnIpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbSAtIDE7ICsraSkge1xuICAgICAgICBjb25zdCBzaW1pbGFyaXR5QXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGRpbTsgKytqKVxuICAgICAgICAgICAgc2ltaWxhcml0eUFyci5wdXNoKGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2VzW2ldW2pdKSk7XG4gICAgICAgIHNpbUFycltpXSA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdzaW1pbGFyaXR5JywgRmxvYXQzMkFycmF5LmZyb20oc2ltaWxhcml0eUFycikpO1xuICAgIH1cbiAgICByZXR1cm4gc2ltQXJyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWVdOMGFYWnBkSGt0WTJ4cFptWnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVlXTjBhWFpwZEhrdFkyeHBabVp6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3p0QlFVRkJMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkRNVU1zVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU4wUXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlhSRExFOUJRVThzUlVGQlJTeDVRa0ZCZVVJc1JVRkJSU3hOUVVGTkxHdEVRVUZyUkN4RFFVRkRPMEZCYzBNM1JpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkZha0lzZDBWQlFYZEZPMEZCUTNoRkxFMUJRVTBzVlVGQlowSXNhVUpCUVdsQ0xFTkJRMjVETEVWQlFXZENMRVZCUTJoQ0xFMUJRV2xDTEVWQlEycENMRk5CUVcxQ0xFVkJRMjVDTEZsQlFXOUNMRVZCUTNCQ0xGVkJRWEZDTEVWQlEzSkNMRlZCUVd0Q0xFVkJRMnhDTEdkQ1FVRjNRaXhGUVVONFFpeFZRVUZyUWl4RlFVTnNRaXhQUVVGbExFVkJRMllzUzBGQllTeEZRVU5pTEZsQlFUWkZMRVZCUXpkRkxFOUJRVzFGTEVWQlEyNUZMR1ZCUVhGRUxFVkJRM0pFTEU5QlFXRTdPMUZCUTJZc1RVRkJUU3gzUWtGQmQwSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRka01zVFVGQlRTeGpRVUZqTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUlRGQ0xFMUJRVTBzYzBKQlFYTkNMRWRCUVVjc2QwSkJRWGRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVVTFSaXhOUVVGTkxFVkJRVU1zVVVGQlVTeEZRVUZGTEZkQlFWY3NSVUZCUXl4SFFVRkhMRTFCUVUwc1dVRkJXU3hEUVVGRE8xbEJRMnBFTEUxQlFVMHNSVUZCUlN4TlFVRk5PMWxCUTJRc1ZVRkJWU3hGUVVGRkxGVkJRVlU3V1VGRGRFSXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENPMWxCUTJ4RExHTkJRV01zUlVGQlJTeFRRVUZUTzFsQlEzcENMRTlCUVU4c1JVRkJSU3hQUVVGUE8xTkJRMnBDTEVOQlFVTXNRMEZCUXp0UlFVVklMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzVjBGQlZ6dFpRVU16UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjBRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJReTlHTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE1VSXNUVUZCVFN4TlFVRk5MRWRCUVdkQ0xFdEJRVXNzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZNME1zU1VGQlNTeERRVUZETEZGQlFWRTdXVUZEV0N4TlFVRk5MRzlDUVVGdlFpeERRVUZETEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1dVRkZhRVVzYVVOQlFXbERMRU5CUVVNc1IwRkJSeXhGUVVGRkxGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVVXpSQ3hOUVVGTkxHdENRVUZyUWl4SFFVRkhMSE5DUVVGelFpeERRVUZETzFGQlJXeEVMRTFCUVUwc1QwRkJUeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRkZCUVZFc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRE9VSXNUVUZCVFN4RlFVRkZMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJRM2hDTEUxQlFVMHNSVUZCUlN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVWNFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOcVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzSkRMRTFCUVUwc1IwRkJSeXhIUVVGWExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlJYSkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RlFVRkZPMjlDUVVNM1FpeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5ZTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRia0lzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGJFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnlSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzNkQ1FVTldMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03TzNkQ1FVVm9ReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMmxDUVVNelFqdGhRVU5HTzFOQlEwWTdVVUZGUkN4TlFVRk5MSFZDUVVGMVFpeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRka1VzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeGxRVUZsTEVkQlFVY3NSMEZCUnl4SFFVRkRMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFGQlIyaEVMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UXl4TlFVRk5MR1ZCUVdVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMjVETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETlVJc1pVRkJaU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNMVFpeGxRVUZsTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRExHVkJRV1VzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tNc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RlFVRkZPMmRDUVVNelFpeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXk5RExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdPMjlDUVVWb1F5eFRRVUZUTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTI1RE8xTkJRMFk3VVVGRlJDeE5RVUZOTEVsQlFVa3NSMEZCWXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSV3BKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYSkNMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5zUkN4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWs3V1VGRFppeExRVUZMTEVWQlFVVXNWVUZCVlN4RFFVRkRMRWxCUVVrN1dVRkRkRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1lVRkJZU3hGUVVGRkxFdEJRVXM3V1VGRGNFSXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN6dFpRVU4yUWl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTzFsQlEzaENMR0ZCUVdFc1JVRkJSU3hEUVVGRE8xbEJRMmhDTEdGQlFXRXNSVUZCUlN4RlFVRkZPMWxCUTJwQ0xFdEJRVXNzUlVGQlJTeFpRVUZaTzFOQlEzQkNMRU5CUVVNc1EwRkJlVUlzUTBGQlF6dFJRVVUxUWl4TlFVRk5MRTFCUVUwc1IwRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRMME1zVFVGQlRTeFJRVUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZWQlFWVXNSVUZCUlN4UlFVRlJMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEyNUdMRTFCUVUwc1VVRkJVU3hIUVVGUkxFVkJRVVVzUTBGQlF6dFJRVVY2UWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3V1VGRGJrUXNUVUZCVFN4aFFVRmhMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeExRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eGhRVUZoTzJkQ1FVTjRRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVnc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRE0wUXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMWxCUXpGRUxGZEJRVmNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZJTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGJFUXNTVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHVkJRV1VzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlR0blFrRkRNME1zVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMmRDUVVNNVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF6dG5Ra0ZETDBJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzI5Q1FVTm9RaXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVNNVFqdFpRVU5FTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUXpOQ0xFbEJRVWtzUTBGQlF5eERRVUZETEZGQlFWRTdiMEpCUTFvc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzVjBGQlZ5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4WFFVRlhMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVGRGTEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJUdFpRVU55UXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMlFzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4TlFVRk5MR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxGTkJRVk1zUlVGQlJTeEhRVUZITEVWQlFVVTdXVUZETTBVc1RVRkJUU3haUVVGWkxFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkRMRXRCUVVzc1JVRkJSU3hwUWtGQmFVSXNSVUZCUXl4RFFVRkRPMmxDUVVOMlJDeEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJRenRwUWtGRGNrSXNTVUZCU1N4RlFVRkZMRU5CUVVNN1dVRkRWaXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4bFFVRmxMRU5CUVVNN1VVRkRla01zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4alFVRmpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZWTEVOQlFVTTdVVUZETTBNc1kwRkJZeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTJ4RExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOd1F5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dFJRVVV2UWl4SlFVRkpMRXRCUVhGQ0xFTkJRVU03VVVGRE1VSXNUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlZMRXRCUVdsQ08xbEJRemxFTEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOd1FpeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJRenRuUWtGRGVFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdaMEpCUXpsRUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4bFFVRmxMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEzSkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPM2RDUVVOMFFpeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSE96UkNRVU40UWl4UlFVRlJMRVZCUVVVc1VVRkJVVHMwUWtGRGJFSXNTVUZCU1N4RlFVRkZMRWxCUVVrN05FSkJRMVlzUlVGQlJTeEZRVUZGTEVWQlFVVTdORUpCUTA0c1RVRkJUU3hGUVVGRkxFMUJRVTA3TkVKQlEyUXNVVUZCVVN4RlFVRkZMRlZCUVZVN05FSkJRM0JDTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUenMwUWtGRGFFSXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUE8zbENRVU5xUWl4RFFVRkJPM2RDUVVORUxHVkJRV1VzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8zRkNRVU53UXp0dlFrRkRSQ3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzJsQ1FVTnNSVHRaUVVOSUxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTllMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGZEJRVmNzUlVGQlJTeFZRVUZUTEV0QlFXbENPMWxCUXpkRUxFMUJRVTBzU1VGQlNTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdaMEpCUTNKRExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlR0dlFrRkRha0lzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03YjBKQlF5OUNMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0dlFrRkZka1FzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPM2RDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dHZRa0ZGTjBJc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHQzUWtGRE0wSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVVHMwUWtGRFdpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08zRkNRVUZOTzI5Q1FVTk1MRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEV0QlFVc3NTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSVHQzUWtGRE9VTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXp0M1FrRkRla01zUlVGQlJTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzNkQ1FVTm9ReXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8zZENRVU5xUkN4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0eFFrRkRha1E3YVVKQlEwWTdZVUZEUmp0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4elFrRkJjMElzUTBGQlF6dGhRVU12UWl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5tTEUxQlFVMHNTMEZCU3l4SFFVRkhMRmRCUVZjc1EwRkJReXhGUVVGRkxFVkJRekZDTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hsUVVGbExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdXVUZETlVVc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlExSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1owSkJRekZFTEZWQlFWVXNRMEZCUXl4SFFVRkZMRVZCUVVVN2IwSkJRMklzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOc1F5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMnhETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NSVUZEZGtNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZKTEV0QlFVc3NSVUZEYkVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NSVUZEYWtNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMmRDUVVOMlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMUlzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0aFFVTmtPMUZCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlRDeEZRVUZGTEVOQlFVTXNWMEZCVnl4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEZGQlFWRXNSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFGQlEyaEZMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMW9zUTBGQlF6dERRVUZCTzBGQlJVUXNVMEZCVXl4cFFrRkJhVUlzUTBGQlF5eExRVUZWTEVWQlFVVXNUVUZCVnl4RlFVRkZMRXRCUVdNN1NVRkRhRVVzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRM0JETEUxQlFVMHNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXp0SlFVTnVReXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NSVUZCUlR0UlFVTjRRaXhOUVVGTkxFbEJRVWtzUjBGRFVpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka2NzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXp0WlFVTldMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMlk3U1VGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSQ3hUUVVGVExGZEJRVmNzUTBGQlF5eEZRVUYzUWl4RlFVTXpReXhMUVVGaExFVkJRVVVzUzBGQllTeEZRVUZGTEZGQlFYZENMRVZCUVVVc1VVRkJhMElzUlVGQlJTeGxRVUYxUWl4RlFVRkZMRTlCUVdVN1NVRkRjRWdzVFVGQlRTeExRVUZMTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJRenRKUVVNM1FpeE5RVUZOTEUxQlFVMHNSMEZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVFNFFpeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGxCUTI1RkxFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVFMlFpeERRVUZETzBsQlEyaEZMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFRRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU01UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE9VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGNrTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51Uml4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZUVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF6dFJRVU14UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUXl4bFFVRmxMRU5CUVVNN1VVRkROMFlzUjBGQlJ5eERRVUZETEZkQlFWY3NSMEZCUnl4UlFVRlJMRXRCUVVzc1NVRkJTU3hQUVVGUExFZEJRVWNzUTBGQlF6dFJRVU01UXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnNRanRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRk5CUVZNc1YwRkJWeXhEUVVOc1FpeEZRVUZaTEVWQlExb3NSVUZCV1N4RlFVTmFMRWRCUVdNc1JVRkRaQ3hWUVVGeFFpeEZRVU55UWl4UlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVR0SlFVTmlMRTFCUVUwc1MwRkJTeXhIUVVGWkxFVkJRVVVzUTBGQlF6dEpRVU14UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFJRVU5zUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtJc1RVRkJUU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1Q0xFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTTdTMEZEZUVVN1NVRkRSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYkVRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzSkdMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55Uml4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEY0VNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjBSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlFTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1VzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdTVUZEYkVRc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJRM2hETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTjRReXhQUVVGUExFVkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFXZENMRzlDUVVGdlFpeERRVU4wUXl4SFFVRlhMRVZCUTFnc1RVRkJhVUlzUlVGRGFrSXNTMEZCYlVJc1JVRkRia0lzVFVGQmJVSXNSVUZEYmtJc1QwRkJiVVU3TzFGQlIzSkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEycERMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVUlzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTnFReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRkxFTkJRVU03VTBGRGRFUTdVVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBOQlFVRTdRVUZGUkN4TlFVRk5MRlZCUVZVc2FVTkJRV2xETEVOQlFVTXNSMEZCVnl4RlFVRkZMRk5CUVdsQ0xFVkJRVVVzVFVGQmJVSTdTVUZGYmtjc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYUVNc1RVRkJUU3hoUVVGaExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEzcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU01UWl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExIbENRVUY1UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNXBiWEJ2Y25RZ0tpQmhjeUIxYVNCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdmRXa25PMXh1YVcxd2IzSjBJSHNnVFdGMGNtbDRJSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUhzZ1oyVjBVMmx0YVd4aGNtbDBlVVp5YjIxRWFYTjBZVzVqWlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzTnBiV2xzWVhKcGRIa3RiV1YwY21samN5YzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1V4cGJtVWdlMXh1SUNCcFpEb2diblZ0WW1WeU8xeHVJQ0J0YjJ4ek9pQnVkVzFpWlhKYlhUdGNiaUFnYzJWc1pXTjBaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lHRTZJRzUxYldKbGNsdGRPeUF2THlCYmVDd2dlVjFjYmlBZ1lqb2diblZ0WW1WeVcxMDdJQzh2SUZ0NExDQjVYVnh1ZlZ4dVhHNXBiblJsY21aaFkyVWdTVkpsYm1SbGNtVmtUR2x1WlhNZ2UxeHVJQ0JzYVc1bGN6b2dTVXhwYm1WYlhUdGNiaUFnYkdsdVpYTkVaam9nUkVjdVJHRjBZVVp5WVcxbE8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsVFpYRjFaVzVqWlZOd1lXTmxVR0Z5WVcxeklIdGNiaUFnSUNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Yml4Y2JpQWdJQ0J0WlhSb2IyUk9ZVzFsT2lCemRISnBibWNzWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVTFsZEhKcFl6b2djM1J5YVc1bkxGeHVJQ0FnSUdWdFltVmtRWGhsYzA1aGJXVnpPaUJ6ZEhKcGJtZGJYU3hjYmlBZ0lDQnZjSFJwYjI1elB6b2dZVzU1WEc1OVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVk5sY1hWbGJtTmxVM0JoWTJWU1pYTjFiSFFnZTF4dUlDQWdJR1JwYzNSaGJtTmxPaUJOWVhSeWFYZzdYRzRnSUNBZ1kyOXZjbVJwYm1GMFpYTTZJRVJITGtOdmJIVnRia3hwYzNRN1hHNGdJSDFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlJISmhkMVJ2YjJ4MGFYQlFZWEpoYlhNZ2UxeHVJQ0IwYjI5c2RHbHdjem9nWVc1NUxGeHVJQ0JzYVc1bE9pQkpUR2x1WlN4Y2JpQWdaR1k2SUVSSExrUmhkR0ZHY21GdFpTeGNiaUFnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzWEc0Z0lHRmpkR2wyYVhSNU9pQkVSeTVEYjJ4MWJXNHNYRzRnSUhnNklHNTFiV0psY2l4Y2JpQWdlVG9nYm5WdFltVnlYRzU5WEc1Y2JteGxkQ0I2YjI5dElEMGdabUZzYzJVN1hHNWNiaTh2SUZObFlYSmphR1Z6SUdadmNpQmhZM1JwZG1sMGVTQmpiR2xtWm5NZ2FXNGdZU0JqYUdWdGFXTmhiQ0JrWVhSaGMyVjBJR0o1SUhObGJHVmpkR1ZrSUdOMWRHOW1abHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRUZqZEdsMmFYUjVRMnhwWm1aektGeHVJQ0FnSUdSbU9pQkVSeTVFWVhSaFJuSmhiV1VzSUZ4dUlDQWdJSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ0lDQmhlR1Z6VG1GdFpYTTZJSE4wY21sdVoxdGRMRnh1SUNBZ0lITmpZWFIwWlhKVWFYUnNaVG9nYzNSeWFXNW5MRnh1SUNBZ0lHRmpkR2wyYVhScFpYTTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVG9nYm5WdFltVnlMRnh1SUNBZ0lITnBiV2xzWVhKcGRIbE5aWFJ5YVdNNklITjBjbWx1Wnl3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6WlcxVWVYQmxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2RXNXBkSE02SUhOMGNtbHVaeXhjYmlBZ0lDQnpaWEZUY0dGalpVWjFibU02SUNod1lYSmhiWE02SUVsVFpYRjFaVzVqWlZOd1lXTmxVR0Z5WVcxektTQTlQaUJRY205dGFYTmxQRWxUWlhGMVpXNWpaVk53WVdObFVtVnpkV3gwUGl4Y2JpQWdJQ0J6YVcxR2RXNWpPaUFvWTI5c09pQkVSeTVEYjJ4MWJXNHNJRzF2YkRvZ2MzUnlhVzVuS1NBOVBpQlFjbTl0YVhObFBFUkhMa052YkhWdGJpQjhJRzUxYkd3K0xGeHVJQ0FnSUhSdmIyeDBhWEJFY21GM1JuVnVZem9nS0hCaGNtRnRjem9nU1VSeVlYZFViMjlzZEdsd1VHRnlZVzF6S1NBOVBpQjJiMmxrTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5rcElEb2dVSEp2YldselpUeEVSeTVXYVdWM1pYSStJSHRjYmlBZ1kyOXVjM1FnWVhWMGIyMWhkR2xqVTJsdGFXeGhjbWwwZVV4cGJXbDBJRDBnWm1Gc2MyVTdYRzRnSUdOdmJuTjBJRTFKVGw5VFNVMUpURUZTU1ZSWklEMGdPREE3WEc1Y2JpQWdZMjl1YzNRZ2FXNXBkR2xoYkZOcGJXbHNZWEpwZEhsTWFXMXBkQ0E5SUdGMWRHOXRZWFJwWTFOcGJXbHNZWEpwZEhsTWFXMXBkQ0EvSUUxSlRsOVRTVTFKVEVGU1NWUlpJRG9nYzJsdGFXeGhjbWwwZVNBdklERXdNRHRjYmx4dUlDQmpiMjV6ZENCN1pHbHpkR0Z1WTJVc0lHTnZiM0prYVc1aGRHVnpmU0E5SUdGM1lXbDBJSE5sY1ZOd1lXTmxSblZ1WXloN1hHNGdJQ0FnYzJWeFEyOXNPaUJ6WlhGRGIyd3NYRzRnSUNBZ2JXVjBhRzlrVG1GdFpUb2diV1YwYUc5a1RtRnRaU3hjYmlBZ0lDQnphVzFwYkdGeWFYUjVUV1YwY21sak9pQnphVzFwYkdGeWFYUjVUV1YwY21sakxGeHVJQ0FnSUdWdFltVmtRWGhsYzA1aGJXVnpPaUJoZUdWelRtRnRaWE1zWEc0Z0lDQWdiM0IwYVc5dWN6b2diM0IwYVc5dWMxeHVJQ0I5S1R0Y2JseHVJQ0JtYjNJZ0tHTnZibk4wSUdOdmJDQnZaaUJqYjI5eVpHbHVZWFJsY3lsY2JpQWdJQ0JrWmk1amIyeDFiVzV6TG1Ga1pDaGpiMndwTzF4dVhHNGdJR052Ym5OMElHUm1VMlZ4SUQwZ1JFY3VSR0YwWVVaeVlXMWxMbVp5YjIxRGIyeDFiVzV6S0Z0RVJ5NURiMngxYlc0dVpuSnZiVXhwYzNRb0ozTjBjbWx1Wnljc0lDZHpaWEVuTENCelpYRkRiMnd1ZEc5TWFYTjBLQ2twWFNrN1hHNGdJR052Ym5OMElHUnBiU0E5SUhObGNVTnZiQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJSE5wYlVGeWNqb2dSRWN1UTI5c2RXMXVXMTBnUFNCQmNuSmhlU2hrYVcwZ0xTQXhLVHRjYmx4dUlDQnBaaUFvSVdScGMzUmhibU5sS1Z4dUlDQWdJR0YzWVdsMElHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRLR1JwYlN3Z2MyVnhRMjlzTENCa1psTmxjU3dnYzJsdFFYSnlMQ0J6YVcxR2RXNWpLVHRjYmlBZ1pXeHpaVnh1SUNBZ0lHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRSbkp2YlVScGMzUmhibU5sY3loa2FXMHNJR1JwYzNSaGJtTmxMQ0J6YVcxQmNuSXBPMXh1WEc0Z0lHTnZibk4wSUc5d2RGTnBiV2xzWVhKcGRIbE1hVzFwZENBOUlHbHVhWFJwWVd4VGFXMXBiR0Z5YVhSNVRHbHRhWFE3WEc1Y2JpQWdZMjl1YzNRZ2MybHRWbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUdOdmJuTjBJRzR4T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCamIyNXpkQ0J1TWpvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQWhQU0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdNRHNnYWlBaFBTQmthVzBnTFNBeElDMGdhVHNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCemFXMDZJRzUxYldKbGNpQTlJSE5wYlVGeWNsdHBYUzVuWlhRb2FpazdYRzVjYmlBZ0lDQWdJR2xtSUNoemFXMGdQajBnYjNCMFUybHRhV3hoY21sMGVVeHBiV2wwS1NCN1hHNGdJQ0FnSUNBZ0lHNHhMbkIxYzJnb2FTazdYRzRnSUNBZ0lDQWdJRzR5TG5CMWMyZ29hU0FySUdvZ0t5QXhLVHRjYmlBZ0lDQWdJQ0FnYzJsdFZtRnNjeTV3ZFhOb0tITnBiU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JwWm1ZZ1BTQk5ZWFJvTG1GaWN5aGhZM1JwZG1sMGFXVnpMbWRsZENocEtTQXRJR0ZqZEdsMmFYUnBaWE11WjJWMEtHa2dLeUJxSUNzZ01Ta3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2MybHRJQ0U5SURFcFhHNGdJQ0FnSUNBZ0lDQWdjMkZzYVZaaGJITXVjSFZ6YUNoa2FXWm1JQzhnS0RFZ0xTQnphVzBwS1R0Y2JpQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUhOaGJHbFdZV3h6TG5CMWMyZ29TVzVtYVc1cGRIa3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR052Ym5OMElITmhiR2xXWVd4elYybDBhRzkxZEVsdVptbHVhWFI1SUQwZ2MyRnNhVlpoYkhNdVptbHNkR1Z5S0dsMElEMCtJR2wwSUNFOVBTQkpibVpwYm1sMGVTazdYRzRnSUdOdmJuTjBJSE5oYkdsTmFXNGdQU0JOWVhSb0xtMXBiaWd1TGk1ellXeHBWbUZzYzFkcGRHaHZkWFJKYm1acGJtbDBlU2s3WEc0Z0lHTnZibk4wSUhOaGJHbE5ZWGdnUFNCTllYUm9MbTFoZUNndUxpNXpZV3hwVm1Gc2MxZHBkR2h2ZFhSSmJtWnBibWwwZVNrN1hHNGdJR052Ym5OMElITmhiR2xQY0dGamFYUjVRMjlsWmlBOUlEQXVPQzhvYzJGc2FVMWhlQ0F0SUhOaGJHbE5hVzRwTzF4dVhHNWNiaUFnWTI5dWMzUWdibVZwWjJoaWIzVnljME52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JpQWdZMjl1YzNRZ2MybHRhV3hoY21sMGVVTnZkVzUwSUQwZ2JtVjNJRUZ5Y21GNUtHUnBiU2t1Wm1sc2JDZ3dLVHRjYmlBZ1kyOXVjM1FnYzJGc2FVTnZkVzUwSUQwZ2JtVjNJRUZ5Y21GNUtHUnBiU2t1Wm1sc2JDZ3dLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQWhQU0J1TVM1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lHNWxhV2RvWW05MWNuTkRiM1Z1ZEZ0dU1WdHBYVjBnS3owZ01UdGNiaUFnSUNCdVpXbG5hR0p2ZFhKelEyOTFiblJiYmpKYmFWMWRJQ3M5SURFN1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVVOdmRXNTBXMjR4VzJsZFhTQXJQU0J6YVcxV1lXeHpXMmxkTzF4dUlDQWdJSE5wYldsc1lYSnBkSGxEYjNWdWRGdHVNbHRwWFYwZ0t6MGdjMmx0Vm1Gc2MxdHBYVHRjYmlBZ0lDQnBaaUFvYzJGc2FWWmhiSE5iYVYwZ0lUMGdTVzVtYVc1cGRIa3BJSHRjYmlBZ0lDQWdJR2xtSUNoaFkzUnBkbWwwYVdWekxtZGxkQ2h1TVZ0cFhTa2dQaUJoWTNScGRtbDBhV1Z6TG1kbGRDaHVNbHRwWFNrcFhHNGdJQ0FnSUNBZ0lITmhiR2xEYjNWdWRGdHVNVnRwWFYwZ0t6MGdjMkZzYVZaaGJITmJhVjA3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lITmhiR2xEYjNWdWRGdHVNbHRwWFYwZ0t6MGdjMkZzYVZaaGJITmJhVjA3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjMkZzYVRvZ1JFY3VRMjlzZFcxdUlEMGdSRWN1UTI5c2RXMXVMbVp5YjIxTWFYTjBLQ2RrYjNWaWJHVW5MQ0JnYzJGc2FWOGtlMkY0WlhOT1lXMWxjMXN3WFM1emRXSnpkSEpwYm1jb1lYaGxjMDVoYldWeld6QmRMbXhoYzNSSmJtUmxlRTltS0NkZkp5a3BmV0FzSUhOaGJHbERiM1Z1ZENrN1hHNWNiaUFnWkdZdVkyOXNkVzF1Y3k1aFpHUW9jMkZzYVNrN1hHNWNiaUFnWTI5dWMzUWdkbWxsZHlBOUlHZHliMnN1YzJobGJHd3VaMlYwVkdGaWJHVldhV1YzS0dSbUxtNWhiV1VwTzF4dUlDQmpiMjV6ZENCemNDQTlJSFpwWlhjdVlXUmtWbWxsZDJWeUtFUkhMbFpwWlhkbGNpNXpZMkYwZEdWeVVHeHZkQ2hrWml3Z2UxeHVJQ0FnSUhoRGIyeDFiVzVPWVcxbE9pQmhlR1Z6VG1GdFpYTmJNRjBzWEc0Z0lDQWdlVU52YkhWdGJrNWhiV1U2SUdGNFpYTk9ZVzFsYzFzeFhTeGNiaUFnSUNCemFYcGxPaUJ6WVd4cExtNWhiV1VzWEc0Z0lDQWdZMjlzYjNJNklHRmpkR2wyYVhScFpYTXVibUZ0WlN4Y2JpQWdJQ0J6YUc5M1dGTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J6YUc5M1dWTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J6YUc5M1UybDZaVk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNRMjlzYjNKVFpXeGxZM1J2Y2pvZ1ptRnNjMlVzWEc0Z0lDQWdiV0Z5YTJWeVRXbHVVMmw2WlRvZ05TeGNiaUFnSUNCdFlYSnJaWEpOWVhoVGFYcGxPaUF5TlN4Y2JpQWdJQ0IwYVhSc1pUb2djMk5oZEhSbGNsUnBkR3hsWEc0Z0lIMHBLU0JoY3lCRVJ5NVRZMkYwZEdWeVVHeHZkRlpwWlhkbGNqdGNibHh1SUNCamIyNXpkQ0JqWVc1MllYTWdQU0FvYzNBdVoyVjBTVzVtYnlncElHRnpJR0Z1ZVNsYkoyTmhiblpoY3lkZE8xeHVJQ0JqYjI1emRDQnNhVzVsYzFKbGN5QTlJR055WldGMFpVeHBibVZ6S0c0eExDQnVNaXdnYzJWeFEyOXNMQ0JoWTNScGRtbDBhV1Z6TENCellXeHBWbUZzY3l3Z2MyVnRWSGx3WlN3Z2RXNXBkSE1wTzF4dUlDQmpiMjV6ZENCMGIyOXNkR2x3Y3pvZ1lXNTVJRDBnZTMwN1hHNWNiaUFnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV2YmtOMWNuSmxiblJEWld4c1EyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tDa2dQVDRnZTF4dUlDQWdJR052Ym5OMElHTjFjbkpsYm5STmIyeEpaSGdnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJEYjJ3Z0ppWWdiR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFEyOXNMbTVoYldVZ1BUMDlJQ2N5WDNObGNTY2dQeUF4SURvZ01EdGNiaUFnSUNCemNDNWtZWFJoUm5KaGJXVXVZM1Z5Y21WdWRGSnZkMGxrZUNBOVhHNGdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIZ2dJVDA5SUMweElEOGdiR2x1WlhOU1pYTXViR2x1WlhOYmJHbHVaWE5TWlhNdWJHbHVaWE5FWmk1amRYSnlaVzUwVW05M1NXUjRYUzV0YjJ4elcyTjFjbkpsYm5STmIyeEpaSGhkSURvZ0xURTdYRzRnSUNBZ2MzQXVaR0YwWVVaeVlXMWxMbk5sYkdWamRHbHZiaTV6WlhRb01Dd2dJV3hwYm1WelVtVnpMbXhwYm1Weld6QmRMbk5sYkdWamRHVmtLVHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0JzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdiR2x1WlhORVprZHlhV1F1YVc1MllXeHBaR0YwWlNncE8xeHVJQ0I5S1R0Y2JseHVJQ0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbTl1VTJWc1pXTjBhVzl1UTJoaGJtZGxaQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQnBaaUFvYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV0YjNWelpVOTJaWEpTYjNkSlpIZ2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnYkdsdVpYTlNaWE11YkdsdVpYTmJiR2x1WlhOU1pYTXViR2x1WlhORVppNXRiM1Z6WlU5MlpYSlNiM2RKWkhoZE8xeHVJQ0FnSUNBZ2JHbHVaUzV6Wld4bFkzUmxaQ0E5SUNGc2FXNWxMbk5sYkdWamRHVmtPMXh1SUNBZ0lDQWdhV1lnS0NGc2FXNWxMbk5sYkdWamRHVmtLVnh1SUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBRV3hzS0daaGJITmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2JHbHVaWE5TWlhNdWJHbHVaWE11Wm05eVJXRmphQ2dvYkNrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0d3dWMyVnNaV04wWldRcFhHNGdJQ0FnSUNBZ0lHd3ViVzlzY3k1bWIzSkZZV05vS0NodEtTQTlQaUJrWmk1elpXeGxZM1JwYjI0dWMyVjBLRzBzSUhSeWRXVXBLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnNhVzVsYzBSbVIzSnBaQzVwYm5aaGJHbGtZWFJsS0NrN1hHNGdJSDBwTzF4dVhHNGdJR052Ym5OMElHeHBibVZ6UkdaSGNtbGtJRDBnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV3Ykc5MExtZHlhV1FvS1M1emIzSjBLRnNuWVdOMFgyUnBabVluWFN3Z1cyWmhiSE5sWFNrN1hHNWNiaUFnYkdsdVpYTkVaa2R5YVdRdWIyNURaV3hzUTJ4cFkyc3VjM1ZpYzJOeWFXSmxLQ2dwSUQwK0lIdGNiaUFnSUNCNmIyOXRJRDBnZEhKMVpUdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdiR2x6ZEVOc2FXWm1jMHhwYm1zZ1BTQjFhUzVpZFhSMGIyNG9ZQ1I3YkdsdVpYTlNaWE11YkdsdVpYTkVaaTV5YjNkRGIzVnVkSDBnWTJ4cFptWnpZQ3dnS0NrZ1BUNGdlMXh1SUNBZ0lHTnZibk4wSUdOc2FXWm1jMFJwWVd4dlp5QTlJSFZwTG1ScFlXeHZaeWg3ZEdsMGJHVTZJQ2RCWTNScGRtbDBlU0JqYkdsbVpuTW5mU2xjYmlBZ0lDQWdJQzVoWkdRb2JHbHVaWE5FWmtkeWFXUXVjbTl2ZENsY2JpQWdJQ0FnSUM1emFHOTNLQ2s3WEc0Z0lDQWdZMnhwWm1aelJHbGhiRzluTG5KdmIzUXVhV1FnUFNBblkyeHBabVp6WDJScFlXeHZaeWM3WEc0Z0lIMHBPMXh1SUNCc2FYTjBRMnhwWm1aelRHbHVheTV6ZEhsc1pTNXdiM05wZEdsdmJpQTlJQ2RoWW5OdmJIVjBaU2M3WEc0Z0lHeHBjM1JEYkdsbVpuTk1hVzVyTG5OMGVXeGxMblJ2Y0NBOUlDY3hNSEI0Snp0Y2JpQWdiR2x6ZEVOc2FXWm1jMHhwYm1zdWMzUjViR1V1Y21sbmFIUWdQU0FuTVRCd2VDYzdYRzRnSUhOd0xuSnZiM1F1WVhCd1pXNWtLR3hwYzNSRGJHbG1abk5NYVc1cktUdGNibHh1SUNCc1pYUWdkR2x0WlhJNklFNXZaR1ZLVXk1VWFXMWxiM1YwTzF4dUlDQmpZVzUyWVhNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnbmJXOTFjMlZ0YjNabEp5d2dablZ1WTNScGIyNGdLR1YyWlc1ME9pQk5iM1Z6WlVWMlpXNTBLU0I3WEc0Z0lDQWdZMnhsWVhKVWFXMWxiM1YwS0hScGJXVnlLVHRjYmlBZ0lDQjBhVzFsY2lBOUlHZHNiMkpoYkM1elpYUlVhVzFsYjNWMEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCamFHVmphME4xY25OdmNrOXVUR2x1WlNobGRtVnVkQ3dnWTJGdWRtRnpMQ0JzYVc1bGMxSmxjeTVzYVc1bGN5azdYRzRnSUNBZ0lDQnBaaUFvYkdsdVpTQW1KaUJrWmk1dGIzVnpaVTkyWlhKU2IzZEpaSGdnUFQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkRzl2YkhScGNITmJiR2x1WlM1cFpGMHBJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrY21GM1ZHOXZiSFJwY0ZCaGNtRnRjeUE5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJ2YjJ4MGFYQnpPaUIwYjI5c2RHbHdjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHeHBibVU2SUd4cGJtVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pqb2daR1lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaWEZEYjJ3NklITmxjVU52YkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR0ZqZEdsMmFYUjVPaUJoWTNScGRtbDBhV1Z6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlRG9nWlhabGJuUXVZMnhwWlc1MFdDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhrNklHVjJaVzUwTG1Oc2FXVnVkRmxjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdkRzl2YkhScGNFUnlZWGRHZFc1aktHUnlZWGRVYjI5c2RHbHdVR0Z5WVcxektUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0IxYVM1MGIyOXNkR2x3TG5Ob2IzY29kRzl2YkhScGNITmJiR2x1WlM1cFpGMHNJR1YyWlc1MExtTnNhV1Z1ZEZnc0lHVjJaVzUwTG1Oc2FXVnVkRmtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzSURFd01EQXBPMXh1SUNCOUtUdGNibHh1SUNCallXNTJZWE11WVdSa1JYWmxiblJNYVhOMFpXNWxjaWduYlc5MWMyVmtiM2R1Snl3Z1puVnVZM1JwYjI0b1pYWmxiblE2SUUxdmRYTmxSWFpsYm5RcElIdGNiaUFnSUNCamIyNXpkQ0JzYVc1bElEMGdZMmhsWTJ0RGRYSnpiM0pQYmt4cGJtVW9aWFpsYm5Rc0lHTmhiblpoY3l3Z2JHbHVaWE5TWlhNdWJHbHVaWE1wTzF4dUlDQWdJR2xtSUNoc2FXNWxJQ1ltSUdSbUxtMXZkWE5sVDNabGNsSnZkMGxrZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxkbVZ1ZEM1amRISnNTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lHeHBibVV1YzJWc1pXTjBaV1FnUFNBaGJHbHVaUzV6Wld4bFkzUmxaRHRjYmlBZ0lDQWdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV6Wld4bFkzUnBiMjR1YzJWMEtHeHBibVV1YVdRc0lHeHBibVV1YzJWc1pXTjBaV1FwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doYkdsdVpTNXpaV3hsWTNSbFpDbGNiaUFnSUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBRV3hzS0daaGJITmxLVHRjYmx4dUlDQWdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjeTVtYjNKRllXTm9LQ2hzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHd3VjMlZzWldOMFpXUXBYRzRnSUNBZ0lDQWdJQ0FnSUNCc0xtMXZiSE11Wm05eVJXRmphQ2dvYlNrZ1BUNGdaR1l1YzJWc1pXTjBhVzl1TG5ObGRDaHRMQ0IwY25WbEtTazdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0FoUFQwZ2JHbHVaUzVwWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR3hwYm1WelVtVnpMbXhwYm1WelJHWXVZM1Z5Y21WdWRGSnZkMGxrZUNBOUlHeHBibVV1YVdRN1hHNGdJQ0FnSUNBZ0lDQWdaR1l1WTNWeWNtVnVkRkp2ZDBsa2VDQTlJR3hwYm1VdWJXOXNjMXN3WFR0Y2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtEQXNJQ0ZzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1pHWXVjMlZzWldOMGFXOXVMbk5sZENnd0xDQnNhVzVsYzFKbGN5NXNhVzVsYzFzd1hTNXpaV3hsWTNSbFpDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwcE8xeHVYRzRnSUhOd0xtOXVSWFpsYm5Rb0oyUTBMV0psWm05eVpTMWtjbUYzTFhOalpXNWxKeWxjYmlBZ0lDQXVjM1ZpYzJOeWFXSmxLQ2hmS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc2FXNWxjeUE5SUhKbGJtUmxja3hwYm1WektITndMRnh1SUNBZ0lDQWdJQ0JoZUdWelRtRnRaWE5iTUYwc0lHRjRaWE5PWVcxbGMxc3hYU3dnYkdsdVpYTlNaWE1zSUhOaGJHbFdZV3h6TENCellXeHBUM0JoWTJsMGVVTnZaV1lzSUhOaGJHbE5hVzRwTzF4dUlDQWdJQ0FnYVdZZ0tIcHZiMjBwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTNWeWNtVnVkRXhwYm1VZ1BTQnNhVzVsYzF0c2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIaGRPMXh1SUNBZ0lDQWdJQ0J6WlhSVWFXMWxiM1YwS0NncFBUNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGd4SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1GMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNRjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhreElEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNVjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTUYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIZ3lJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTUYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1WMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGt5SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1WMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNVjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhoRWFXWm1JRDBnVFdGMGFDNWhZbk1vZURFZ0xTQjRNaWtxTlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCNVJHbG1aaUE5SUUxaGRHZ3VZV0p6S0hreElDMGdlVElwS2pVN1hHNGdJQ0FnSUNBZ0lDQWdjM0F1ZW05dmJTaDRNU0E4SUhneUlEOGdlREVnTFNCNFJHbG1aaUE2SUhneUlDMGdlRVJwWm1Zc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I1TVNBK0lIa3lJRDhnZVRFZ0t5QjVSR2xtWmlBNklIa3lJQ0FySUhsRWFXWm1MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VERWdQaUI0TWlBL0lIZ3hJQ3NnZUVScFptWWdPaUI0TWlBcklIaEVhV1ptTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlVEVnUENCNU1pQS9JSGt4SUMwZ2VVUnBabVlnT2lCNU1pQXRJSGxFYVdabUtUdGNiaUFnSUNBZ0lDQWdmU3dnTXpBd0tUdGNiaUFnSUNBZ0lDQWdlbTl2YlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dVhHNGdJSE53TG1Ga1pGQnliM0JsY25SNUtDZHphVzFwYkdGeWFYUjVUR2x0YVhRbkxDQW5aRzkxWW14bEp5d2diM0IwVTJsdGFXeGhjbWwwZVV4cGJXbDBLVHRjYmlBZ2NtVjBkWEp1SUhOd08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCamFHVmphME4xY25OdmNrOXVUR2x1WlNobGRtVnVkRG9nWVc1NUxDQmpZVzUyWVhNNklHRnVlU3dnYkdsdVpYTTZJRWxNYVc1bFcxMHBPaUJKVEdsdVpTQjhJRzUxYkd3Z2UxeHVJQ0JqYjI1emRDQnlaV04wSUQwZ1kyRnVkbUZ6TG1kbGRFSnZkVzVrYVc1blEyeHBaVzUwVW1WamRDZ3BPMXh1SUNCamIyNXpkQ0I0SUQwZ1pYWmxiblF1WTJ4cFpXNTBXQ0F0SUhKbFkzUXViR1ZtZER0Y2JpQWdZMjl1YzNRZ2VTQTlJR1YyWlc1MExtTnNhV1Z1ZEZrZ0xTQnlaV04wTG5SdmNEdGNiaUFnWm05eUlDaGpiMjV6ZENCc2FXNWxJRzltSUd4cGJtVnpLU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHbHpkQ0E5WEc0Z0lDQWdJQ0JOWVhSb0xtRmljeWhOWVhSb0xtaDVjRzkwS0d4cGJtVXVZVnN3WFNBdElIZ3NJR3hwYm1VdVlWc3hYU0F0SUhrcElDdGNiaUFnSUNBZ0lFMWhkR2d1YUhsd2IzUW9iR2x1WlM1aVd6QmRJQzBnZUN3Z2JHbHVaUzVpV3pGZElDMGdlU2tnTFNCTllYUm9MbWg1Y0c5MEtHeHBibVV1WVZzd1hTQXRJR3hwYm1VdVlsc3dYU3dnYkdsdVpTNWhXekZkSUMwZ2JHbHVaUzVpV3pGZEtTazdYRzRnSUNBZ2FXWWdLR1JwYzNRZ1BDQXlLVnh1SUNBZ0lDQWdjbVYwZFhKdUlHeHBibVU3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzUxYkd3N1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGJtUmxja3hwYm1WektITndPaUJFUnk1VFkyRjBkR1Z5VUd4dmRGWnBaWGRsY2l4Y2JpQWdlRUY0YVhNNklITjBjbWx1Wnl3Z2VVRjRhWE02SUhOMGNtbHVaeXdnYkdsdVpYTlNaWE02SUVsU1pXNWtaWEpsWkV4cGJtVnpMQ0J6WVd4cFZtRnNjem9nYm5WdFltVnlXMTBzSUhOaGJHbFBjR0ZqYVhSNVEyOWxaam9nYm5WdFltVnlMQ0J6WVd4cFRXbHVPaUJ1ZFcxaVpYSXBPaUJKVEdsdVpTQmJYU0I3WEc0Z0lHTnZibk4wSUd4cGJtVnpJRDBnYkdsdVpYTlNaWE11YkdsdVpYTTdYRzRnSUdOdmJuTjBJR05oYm5aaGN5QTlJQ2h6Y0M1blpYUkpibVp2S0NrZ1lYTWdlMXRwYm1SbGVEb2djM1J5YVc1blhTQTZJR0Z1ZVgwcFd5ZGpZVzUyWVhNblhUdGNiaUFnWTI5dWMzUWdZM1I0SUQwZ1kyRnVkbUZ6TG1kbGRFTnZiblJsZUhRb0p6SmtKeWtnWVhNZ1EyRnVkbUZ6VW1WdVpHVnlhVzVuUTI5dWRHVjRkREpFTzF4dUlDQmpiMjV6ZENCNElEMGdjM0F1WkdGMFlVWnlZVzFsSVM1amIyeDFiVzV6TG1KNVRtRnRaU2g0UVhocGN5azdYRzRnSUdOdmJuTjBJSGtnUFNCemNDNWtZWFJoUm5KaGJXVWhMbU52YkhWdGJuTXVZbmxPWVcxbEtIbEJlR2x6S1R0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzYVc1bGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR052Ym5OMElIQnZhVzUwUm5KdmJTQTlJSE53TG5kdmNteGtWRzlUWTNKbFpXNG9lQzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN3WFNrc0lIa3VaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNRjBwS1R0Y2JpQWdJQ0JqYjI1emRDQndiMmx1ZEZSdklEMGdjM0F1ZDI5eWJHUlViMU5qY21WbGJpaDRMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekZkS1N3Z2VTNW5aWFFvYkdsdVpYTmJhVjB1Ylc5c2Mxc3hYU2twTzF4dUlDQWdJR3hwYm1WelcybGRMbUVnUFNCYmNHOXBiblJHY205dExuZ3NJSEJ2YVc1MFJuSnZiUzU1WFR0Y2JpQWdJQ0JzYVc1bGMxdHBYUzVpSUQwZ1czQnZhVzUwVkc4dWVDd2djRzlwYm5SVWJ5NTVYVHRjYmlBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnYm1WM0lGQmhkR2d5UkNncE8xeHVJQ0FnSUd4cGJtVXViVzkyWlZSdktHeHBibVZ6VzJsZExtRmJNRjBzSUd4cGJtVnpXMmxkTG1GYk1WMHBPMXh1SUNBZ0lHTnZibk4wSUdOdmJHOXlJRDBnYkdsdVpYTmJhVjB1YzJWc1pXTjBaV1FnUHlBbk1qVTFMREkxTlN3d0p5QTZJQ2N3TERFeU9Dd3dKenRjYmlBZ0lDQmpiMjV6ZENCdmNHRmphWFI1SUQwZ2MyRnNhVlpoYkhOYmFWMGdQVDA5SUVsdVptbHVhWFI1SUQ4Z01TQTZJREF1TWlBcklDaHpZV3hwVm1Gc2MxdHBYU0F0SUhOaGJHbE5hVzRwS25OaGJHbFBjR0ZqYVhSNVEyOWxaanRjYmlBZ0lDQmpkSGd1YzNSeWIydGxVM1I1YkdVZ1BTQmdjbWRpWVNna2UyTnZiRzl5ZlN3a2UyOXdZV05wZEhsOUtXQTdYRzRnSUNBZ1kzUjRMbXhwYm1WWGFXUjBhQ0E5SUd4cGJtVnpXMmxkTG1sa0lEMDlQU0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUlNiM2RKWkhnZ1B5QXpJRG9nTVR0Y2JpQWdJQ0JzYVc1bExteHBibVZVYnloc2FXNWxjMXRwWFM1aVd6QmRMQ0JzYVc1bGMxdHBYUzVpV3pGZEtUdGNiaUFnSUNCamRIZ3VjM1J5YjJ0bEtHeHBibVVwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJzYVc1bGN6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVEdsdVpYTW9YRzRnSUc0eE9pQnVkVzFpWlhKYlhTd2dYRzRnSUc0eU9pQnVkVzFpWlhKYlhTd2dYRzRnSUhObGNUb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ1lXTjBhWFpwZEdsbGN6b2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ2MyRnNhVlpoYkhNNklHNTFiV0psY2x0ZExGeHVJQ0J6WlcxVWVYQmxPaUJ6ZEhKcGJtY3NYRzRnSUhWdWFYUnpPaUJ6ZEhKcGJtY3BJRG9nU1ZKbGJtUmxjbVZrVEdsdVpYTWdlMXh1SUNCamIyNXpkQ0JzYVc1bGN6b2dTVXhwYm1WYlhTQTlJRnRkTzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzR4TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ1kyOXVjM1FnYm5WdE1TQTlJRzR4VzJsZE8xeHVJQ0FnSUdOdmJuTjBJRzUxYlRJZ1BTQnVNbHRwWFR0Y2JpQWdJQ0JzYVc1bGN5NXdkWE5vS0h0cFpEb2dhU3dnYlc5c2N6b2dXMjUxYlRFc0lHNTFiVEpkTENCelpXeGxZM1JsWkRvZ1ptRnNjMlVzSUdFNklGdGRMQ0JpT2lCYlhYMHBPMXh1SUNCOVhHNGdJR052Ym5OMElHeHBibVZ6UkdZZ1BTQkVSeTVFWVhSaFJuSmhiV1V1WTNKbFlYUmxLR3hwYm1WekxteGxibWQwYUNrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkVGRISnBibWNvSnpGZmMyVnhKeWt1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCelpYRXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNRjBwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDFOMGNtbHVaeWduTWw5elpYRW5LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUhObGNTNW5aWFFvYkdsdVpYTmJhVjB1Ylc5c2Mxc3hYU2twTzF4dUlDQnNhVzVsYzBSbUxtTnZiSFZ0Ym5NdVlXUmtUbVYzUm14dllYUW9KMkZqZEY5a2FXWm1KeWxjYmlBZ0lDQXVhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJOWVhSb0xtRmljeWhoWTNScGRtbDBhV1Z6TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pCZEtTQXRJR0ZqZEdsMmFYUnBaWE11WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTVYwcEtTazdYRzRnSUd4cGJtVnpSR1l1WTI5c2RXMXVjeTVoWkdST1pYZEpiblFvSjJ4cGJtVmZhVzVrWlhnbktTNXBibWwwS0NocE9pQnVkVzFpWlhJcElEMCtJR2twTzF4dUlDQnNhVzVsYzBSbUxtTnZiSFZ0Ym5NdVlXUmtUbVYzUm14dllYUW9KM05oYkdrbktTNXBibWwwS0NocE9pQnVkVzFpWlhJcElEMCtJSE5oYkdsV1lXeHpXMmxkS1R0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpGZmMyVnhKeWtoTG5SaFozTmJSRWN1VkVGSFV5NVZUa2xVVTEwZ1BTQjFibWwwY3p0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpKZmMyVnhKeWtoTG5SaFozTmJSRWN1VkVGSFV5NVZUa2xVVTEwZ1BTQjFibWwwY3p0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpGZmMyVnhKeWtoTG5ObGJWUjVjR1VnUFNCelpXMVVlWEJsTzF4dUlDQnNhVzVsYzBSbUxtTnZiQ2duTWw5elpYRW5LU0V1YzJWdFZIbHdaU0E5SUhObGJWUjVjR1U3WEc0Z0lISmxkSFZ5YmlCN2JHbHVaWE1zSUd4cGJtVnpSR1o5TzF4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z1oyVjBVMmx0YVd4aGNtbDBhV1Z6VFdGeWFYZ29YRzRnSUNBZ1pHbHRPaUJ1ZFcxaVpYSXNJRnh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQmNiaUFnSUNCa1psTmxjVG9nUkVjdVJHRjBZVVp5WVcxbExDQmNiaUFnSUNCemFXMUJjbkk2SUVSSExrTnZiSFZ0Ymx0ZExGeHVJQ0FnSUhOcGJVWjFibU02SUNoamIydzZJRVJITGtOdmJIVnRiaXdnYlc5c09pQnpkSEpwYm1jcElEMCtJRkJ5YjIxcGMyVThSRWN1UTI5c2RXMXVJSHdnYm5Wc2JENWNiaUFnSUNBcFhHNGdJRG9nVUhKdmJXbHpaVHhFUnk1RGIyeDFiVzViWFQ0Z2UxeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCa2FXMGdMU0F4T3lBcksya3BJSHRjYmlBZ0lDQmpiMjV6ZENCdGIyd2dQU0J6WlhGRGIyd3VaMlYwS0drcE8xeHVJQ0FnSUdSbVUyVnhMbkp2ZDNNdWNtVnRiM1psUVhRb01Dd2dNU3dnWm1Gc2MyVXBPMXh1SUNBZ0lITnBiVUZ5Y2x0cFhTQTlJQ2hoZDJGcGRDQnphVzFHZFc1aktHUm1VMlZ4TG1OdmJDZ25jMlZ4SnlraExDQnRiMndwS1NFN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOcGJVRnljanRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRSbkp2YlVScGMzUmhibU5sY3loa2FXMDZJRzUxYldKbGNpd2daR2x6ZEdGdVkyVnpPaUJOWVhSeWFYZ3NJSE5wYlVGeWNqb2dSRWN1UTI5c2RXMXVXMTBwWEc0Z0lEb2dSRWN1UTI5c2RXMXVXMTBnZTF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYlNBdElERTdJQ3NyYVNrZ2UxeHVJQ0FnSUdOdmJuTjBJSE5wYldsc1lYSnBkSGxCY25JZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnYVNBcklERTdJR29nUENCa2FXMDdJQ3NyYWlsY2JpQWdJQ0FnSUhOcGJXbHNZWEpwZEhsQmNuSXVjSFZ6YUNoblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0dScGMzUmhibU5sYzF0cFhWdHFYU2twTzF4dUlDQWdJSE5wYlVGeWNsdHBYU0E5SUVSSExrTnZiSFZ0Ymk1bWNtOXRSbXh2WVhRek1rRnljbUY1S0NkemFXMXBiR0Z5YVhSNUp5d2dSbXh2WVhRek1rRnljbUY1TG1aeWIyMG9jMmx0YVd4aGNtbDBlVUZ5Y2lrcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXMUJjbkk3WEc1OUlsMTkiLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKGRhdGFNZXRyaWMsIG1ldGhvZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vZGltZW5zaW9uYWxpdHktcmVkdWNlcicsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgY29sdW1uRGF0YTogZGF0YU1ldHJpYy5kYXRhLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgICAgICBtZWFzdXJlOiBkYXRhTWV0cmljLm1ldHJpYyxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKHsgZGF0YTogeyBkaXN0YW5jZSwgZW1iZWRkaW5nIH0gfSkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfSk7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SmthVzFsYm5OcGIyNWhiR2wwZVMxeVpXUjFZMmx1WnkxM2IzSnJaWEl0WTNKbFlYUnZjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGcFFrRXNUVUZCVFN4VlFVRlZMR2xEUVVGcFF5eERRVUZETEZWQlFYTkNMRVZCUVVVc1RVRkJZeXhGUVVOc1JpeFBRVUZoTzBsQlJXcENMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlV5eFBRVUZQTzFGQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMREJDUVVFd1FpeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUml4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1NVRkJTVHRaUVVNelFpeE5RVUZOTEVWQlFVVXNUVUZCVFR0WlFVTmtMRTlCUVU4c1JVRkJSU3hWUVVGVkxFTkJRVU1zVFVGQlRUdFpRVU14UWl4UFFVRlBMRVZCUVVVc1QwRkJUenRUUVVOcVFpeERRVUZETEVOQlFVTTdVVUZEU0N4TlFVRk5MRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzQkVMRTlCUVU4c1EwRkJReXhGUVVGRExGRkJRVkVzUlVGQlJTeFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRk5CUVZNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRGNrUXNRMEZCUXl4RFFVRkRPMGxCUTBvc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFRDeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1RXRjBjbWw0SUgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdFdZV3hwWkZSNWNHVnpmU0JtY205dElDY3VMaTkwZVhCbFpDMXRaWFJ5YVdOekp6dGNibHh1THlvcVhHNGdLaUJCSUhkdmNtdGxjaUIwYnlCd1pYSm1iM0p0SUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpoYkdsa1ZIbHdaWE45SUdSaGRHRk5aWFJ5YVdNZ1ZHaGxJR1JoZEdFZ2RHOGdjSEp2WTJWemN5NWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhSb2IyUWdRU0J0WlhSb2IyUWdiMllnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVMbHh1SUNvZ1FIQmhjbUZ0SUc5d2RHbHZibk1nTFNCclpYa3RkbUZzZFdVZ2NHRnBjbk5jYmlBcUlFQndZWEpoYlNCeVpYUjFjbTVFYVhOMFlXNWpaVTFoZEhKcGVGeHVJQ29nUUhKbGRIVnliaUI3VUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErZlNCU1pYTjFiSFJwYm1jZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ3VYRzRnS2k5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWSmxaSFZqWlVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZ6ZFd4MElIdGNiaUFnWkdsemRHRnVZMlU2SUUxaGRISnBlRHRjYmlBZ1pXMWlaV1JrYVc1bk9pQk5ZWFJ5YVhnN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqY21WaGRHVkVhVzFsYm5OcGJtRnNhWFI1VW1Wa2RXTnBibWRYYjNKclpYSW9aR0YwWVUxbGRISnBZem9nVm1Gc2FXUlVlWEJsY3l3Z2JXVjBhRzlrT2lCemRISnBibWNzWEc0Z0lDQWdJQ0J2Y0hScGIyNXpQem9nWVc1NUtUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNG9jbVZ6YjJ4MlpTa2dlMXh1SUNBZ0lHTnZibk4wSUhkdmNtdGxjaUE5SUc1bGR5QlhiM0pyWlhJb2JtVjNJRlZTVENnbkxpOWthVzFsYm5OcGIyNWhiR2wwZVMxeVpXUjFZMlZ5Snl3Z2FXMXdiM0owTG0xbGRHRXVkWEpzS1NrN1hHNGdJQ0FnZDI5eWEyVnlMbkJ2YzNSTlpYTnpZV2RsS0h0Y2JpQWdJQ0FnSUdOdmJIVnRia1JoZEdFNklHUmhkR0ZOWlhSeWFXTXVaR0YwWVN4Y2JpQWdJQ0FnSUcxbGRHaHZaRG9nYldWMGFHOWtMRnh1SUNBZ0lDQWdiV1ZoYzNWeVpUb2daR0YwWVUxbGRISnBZeTV0WlhSeWFXTXNYRzRnSUNBZ0lDQnZjSFJwYjI1ek9pQnZjSFJwYjI1ekxGeHVJQ0FnSUgwcE8xeHVJQ0FnSUhkdmNtdGxjaTV2Ym0xbGMzTmhaMlVnUFNBb2UyUmhkR0U2SUh0a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bmZYMHBJRDArSUh0Y2JpQWdJQ0FnY21WemIyeDJaU2g3WkdsemRHRnVZMlU2SUdScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklHVnRZbVZrWkdsdVozMHBPMXh1SUNBZ0lIMDdYRzRnSUgwcE8xeHVmVnh1SWwxOSIsIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbmV4cG9ydCBjb25zdCBzaW1pbGFyaXR5TWV0cmljID0ge1xuICAgICdUYW5pbW90byc6IHRhbmltb3RvU2ltaWxhcml0eSxcbiAgICAnRGljZSc6IGRpY2VTaW1pbGFyaXR5LFxuICAgICdBc3ltbWV0cmljJzogYXN5bW1ldHJpY1NpbWlsYXJpdHksXG4gICAgJ0JyYXVuLUJsYW5xdWV0JzogYnJhdW5CbGFucXVldFNpbWlsYXJpdHksXG4gICAgJ0Nvc2luZSc6IGNvc2luZVNpbWlsYXJpdHksXG4gICAgJ0t1bGN6eW5za2knOiBrdWxjenluc2tpU2ltaWxhcml0eSxcbiAgICAnTWMtQ29ubmF1Z2hleSc6IG1jQ29ubmF1Z2hleVNpbWlsYXJpdHksXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHksXG4gICAgJ1J1c3NlbCc6IHJ1c3NlbFNpbWlsYXJpdHksXG4gICAgJ1Nva2FsJzogc29rYWxTaW1pbGFyaXR5LFxuICAgICdIYW1taW5nJzogaGFtbWluZ1NpbWlsYXJpdHksXG4gICAgJ0V1Y2xpZGVhbic6IGV1Y2xpZGVhblNpbWlsYXJpdHksXG59O1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlTWV0cmljcyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgICdEaWNlJzogZGljZURpc3RhbmNlLFxuICAgICdBc3ltbWV0cmljJzogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXREaXN0YW5jZSxcbiAgICAnQ29zaW5lJzogY29zaW5lRGlzdGFuY2UsXG4gICAgJ0t1bGN6eW5za2knOiBrdWxjenluc2tpRGlzdGFuY2UsXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICAnUm9nb3QtR29sZGJlcmcnOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgJ1J1c3NlbCc6IHJ1c3NlbERpc3RhbmNlLFxuICAgICdTb2thbCc6IHNva2FsRGlzdGFuY2UsXG4gICAgJ0hhbW1pbmcnOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgJ0V1Y2xpZGVhbic6IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBDSEVNX1NJTUlMQVJJVFlfTUVUUklDUyA9IFsnVGFuaW1vdG8nLCAnRGljZScsICdDb3NpbmUnLCAnSGFtbWluZycsICdFdWNsaWRlYW4nXTtcbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAodG90YWwgLSBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRhbmltb3RvRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHRhbmltb3RvU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAyICogY29tbW9uIC8gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShkaWNlU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIE1hdGguc3FydCh0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGNvc2luZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhblNpbWlsYXJpdHkoeCwgeSkge1xuICAgIHJldHVybiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGV1Y2xpZGVhbkRpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShoYW1taW5nRGlzdGFuY2UoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpIC0gMiAqIHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb2thbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAoMiAqIHRvdGFsIC0gMyAqIGNvbW1vbik7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc29rYWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCB0b3RhbFByb2QgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWxQcm9kID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAoY29tbW9uICogdG90YWwpIC8gKDIgKiB0b3RhbFByb2QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGt1bGN6eW5za2lEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoa3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsIC0gdG90YWxQcm9kKSAvIHRvdGFsUHJvZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkobWNDb25uYXVnaGV5U2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtaW4gPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1pbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3ltbWV0cmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoeC50cnVlQ291bnQoKSwgeS50cnVlQ291bnQoKSk7XG4gICAgaWYgKG1heCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gbWF4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGlmICh4Lmxlbmd0aCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8geC5sZW5ndGg7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVzc2VsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgY29uc3QgdG90YWwgPSB4LmNvdW50Qml0cyh0cnVlKSArIHkuY291bnRCaXRzKHRydWUpO1xuICAgIGNvbnN0IGxlbiA9IHgubGVuZ3RoO1xuICAgIGNvbnN0IGRpZmYgPSBsZW4gLSB0b3RhbCArIGNvbW1vbjtcbiAgICBpZiAoKGNvbW1vbiA9PSBsZW4pIHx8IChkaWZmID09IGxlbikpXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gY29tbW9uIC8gdG90YWwgKyBkaWZmIC8gKDIgKiBsZW4gLSB0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShyb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZSkge1xuICAgIHJldHVybiAxIC8gKDEgKyBkaXN0YW5jZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShzaW1pbGFyaXR5KSB7XG4gICAgcmV0dXJuIDEgLyBzaW1pbGFyaXR5IC0gMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMybHRhV3hoY21sMGVTMXRaWFJ5YVdOekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVU5CTEU5QlFVOHNSVUZCUXl4VFFVRlRMRVZCUVVNc1RVRkJUU3hWUVVGVkxFTkJRVU03UVVGRmJrTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFUSkVPMGxCUTNSR0xGVkJRVlVzUlVGQlJTeHJRa0ZCYTBJN1NVRkRPVUlzVFVGQlRTeEZRVUZGTEdOQlFXTTdTVUZEZEVJc1dVRkJXU3hGUVVGRkxHOUNRVUZ2UWp0SlFVTnNReXhuUWtGQlowSXNSVUZCUlN4MVFrRkJkVUk3U1VGRGVrTXNVVUZCVVN4RlFVRkZMR2RDUVVGblFqdEpRVU14UWl4WlFVRlpMRVZCUVVVc2IwSkJRVzlDTzBsQlEyeERMR1ZCUVdVc1JVRkJSU3h6UWtGQmMwSTdTVUZEZGtNc1owSkJRV2RDTEVWQlFVVXNkVUpCUVhWQ08wbEJRM3BETEZGQlFWRXNSVUZCUlN4blFrRkJaMEk3U1VGRE1VSXNUMEZCVHl4RlFVRkZMR1ZCUVdVN1NVRkRlRUlzVTBGQlV5eEZRVUZGTEdsQ1FVRnBRanRKUVVNMVFpeFhRVUZYTEVWQlFVVXNiVUpCUVcxQ08wTkJRMnBETEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3hsUVVGbExFZEJRVEpFTzBsQlEzSkdMRlZCUVZVc1JVRkJSU3huUWtGQlowSTdTVUZETlVJc1RVRkJUU3hGUVVGRkxGbEJRVms3U1VGRGNFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4blFrRkJaMElzUlVGQlJTeHhRa0ZCY1VJN1NVRkRka01zVVVGQlVTeEZRVUZGTEdOQlFXTTdTVUZEZUVJc1dVRkJXU3hGUVVGRkxHdENRVUZyUWp0SlFVTm9ReXhsUVVGbExFVkJRVVVzYjBKQlFXOUNPMGxCUTNKRExHZENRVUZuUWl4RlFVRkZMSEZDUVVGeFFqdEpRVU4yUXl4UlFVRlJMRVZCUVVVc1kwRkJZenRKUVVONFFpeFBRVUZQTEVWQlFVVXNZVUZCWVR0SlFVTjBRaXhUUVVGVExFVkJRVVVzWlVGQlpUdEpRVU14UWl4WFFVRlhMRVZCUVVVc2FVSkJRV2xDTzBOQlF5OUNMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeDFRa0ZCZFVJc1IwRkJSeXhEUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVVU1Uml4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRla1FzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTTFReXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETzFGQlExb3NUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRZaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpORExFOUJRVThzVFVGQlRTeEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMjVETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRka1FzVDBGQlR5eDVRa0ZCZVVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0zUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnlSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF6VkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU03VVVGRFdpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhEUVVGRExFZEJRVWNzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTTFRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEZsQlFWa3NRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOdVJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNaRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1NVRkJTU3hMUVVGTExFbEJRVWtzUTBGQlF6dFJRVU5hTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMjVETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzSkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMFFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dFFrRkJiVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXhSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRelZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2FVSkJRV2xDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdsQ1FVRnBRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzaEVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWlVGQlpTeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNSRUxFOUJRVThzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOMlJTeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU4wUkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU53UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHOUNRVUZ2UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRek5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTm9SQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeERRVUZETzFGQlEyaENMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSE5DUVVGelFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpkRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03UVVGRGJFUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h2UWtGQmIwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVNelJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEycEZMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYjBKQlFXOUNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE0wUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHJRa0ZCYTBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU42UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXk5RUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRia1FzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTldMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRkRUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTTFSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnhGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRka1FzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1VVRkRaaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnlSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRek5FTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2RVSkJRWFZDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRPVVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGNFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU55UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVUZGTEU5QlFVOHNSMEZCUnl4RFFVRkRPenRSUVVNMVF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4TFFVRkxMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpWRUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGJFVXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3g1UWtGQmVVSXNRMEZCUXl4UlFVRm5RanRKUVVONFJDeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkZMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU0zUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxIbENRVUY1UWl4RFFVRkRMRlZCUVd0Q08wbEJRekZFTEU5QlFVOHNRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE5VSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBbkxpOWlhWFF0WVhKeVlYa25PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUpiblI5SUdaeWIyMGdKeTR2Y21GdVpHOXRKenRjYmx4dVpYaHdiM0owSUdOdmJuTjBJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlmU0E5SUh0Y2JpQWdKMVJoYm1sdGIzUnZKem9nZEdGdWFXMXZkRzlUYVcxcGJHRnlhWFI1TEZ4dUlDQW5SR2xqWlNjNklHUnBZMlZUYVcxcGJHRnlhWFI1TEZ4dUlDQW5RWE41YlcxbGRISnBZeWM2SUdGemVXMXRaWFJ5YVdOVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUW5KaGRXNHRRbXhoYm5GMVpYUW5PaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTeGNiaUFnSjBOdmMybHVaU2M2SUdOdmMybHVaVk5wYldsc1lYSnBkSGtzWEc0Z0lDZExkV3hqZW5sdWMydHBKem9nYTNWc1kzcDVibk5yYVZOcGJXbHNZWEpwZEhrc1hHNGdJQ2ROWXkxRGIyNXVZWFZuYUdWNUp6b2diV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjFOcGJXbHNZWEpwZEhrc1hHNGdJQ2RTZFhOelpXd25PaUJ5ZFhOelpXeFRhVzFwYkdGeWFYUjVMRnh1SUNBblUyOXJZV3duT2lCemIydGhiRk5wYldsc1lYSnBkSGtzWEc0Z0lDZElZVzF0YVc1bkp6b2dhR0Z0YldsdVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkRmRXTnNhV1JsWVc0bk9pQmxkV05zYVdSbFlXNVRhVzFwYkdGeWFYUjVMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdScGMzUmhibU5sVFdWMGNtbGpjem9nZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLU0E5UGlCdWRXMWlaWEo5SUQwZ2UxeHVJQ0FuVkdGdWFXMXZkRzhuT2lCMFlXNXBiVzkwYjBScGMzUmhibU5sTEZ4dUlDQW5SR2xqWlNjNklHUnBZMlZFYVhOMFlXNWpaU3hjYmlBZ0owRnplVzF0WlhSeWFXTW5PaUJoYzNsdGJXVjBjbWxqUkdsemRHRnVZMlVzWEc0Z0lDZENjbUYxYmkxQ2JHRnVjWFZsZENjNklHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlVScGMzUmhibU5sTEZ4dUlDQW5TM1ZzWTNwNWJuTnJhU2M2SUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdKMDFqTFVOdmJtNWhkV2RvWlhrbk9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ0oxSnZaMjkwTFVkdmJHUmlaWEpuSnpvZ2NtOW5iM1JIYjJ4a1ltVnlaMFJwYzNSaGJtTmxMRnh1SUNBblVuVnpjMlZzSnpvZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lDZFRiMnRoYkNjNklITnZhMkZzUkdsemRHRnVZMlVzWEc0Z0lDZElZVzF0YVc1bkp6b2dhR0Z0YldsdVowUnBjM1JoYm1ObExGeHVJQ0FuUlhWamJHbGtaV0Z1SnpvZ1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdRMGhGVFY5VFNVMUpURUZTU1ZSWlgwMUZWRkpKUTFNZ1BTQmJKMVJoYm1sdGIzUnZKeXdnSjBScFkyVW5MQ0FuUTI5emFXNWxKeXdnSjBoaGJXMXBibWNuTENBblJYVmpiR2xrWldGdUoxMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwWVc1cGJXOTBiMU5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdhV1lnS0hSdmRHRnNJRDA5SURBcFhHNGdJQ0FnY21WMGRYSnVJREV1TUR0Y2JpQWdZMjl1YzNRZ1kyOXRiVzl1SUQwZ2VDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcE8xeHVJQ0J5WlhSMWNtNGdZMjl0Ylc5dUlDOGdLSFJ2ZEdGc0lDMGdZMjl0Ylc5dUtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhSaGJtbHRiM1J2UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvZEdGdWFXMXZkRzlUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBZMlZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXJJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJRElnS2lCamIyMXRiMjRnTHlCMGIzUmhiRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBZMlZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hrYVdObFUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcUlIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklFMWhkR2d1YzNGeWRDaDBiM1JoYkNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqYjNOcGJtVkVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaGpiM05wYm1WVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1YxWTJ4cFpHVmhibE5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRGTnBiV2xzWVhKcGRIbEdjbTl0UkdsemRHRnVZMlVvWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1YzNGeWRDaDRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LU0F0SURJcWVDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGJXMXBibWRUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0doaGJXMXBibWRFYVhOMFlXNWpaU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCb1lXMXRhVzVuUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUhndWRISjFaVU52ZFc1MEtDa2dLeUI1TG5SeWRXVkRiM1Z1ZENncElDMGdNaXA0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpiMnRoYkZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0RJZ0tpQjBiM1JoYkNBdElETWdLaUJqYjIxdGIyNHBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyOXJZV3hFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2h6YjJ0aGJGTnBiV2xzWVhKcGRIa29lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dwSUM4Z0tESWdLaUIwYjNSaGJGQnliMlFwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhM1ZzWTNwNWJuTnJhVVJwYzNSaGJtTmxLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLR3QxYkdONmVXNXphMmxUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWpRMjl1Ym1GMVoyaGxlVk5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdZMjl1YzNRZ2RHOTBZV3hRY205a0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcUlIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJGQnliMlFnUFQwZ01DbGNiaUFnSUNCeVpYUjFjbTRnTUM0d08xeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUhKbGRIVnliaUFvWTI5dGJXOXVJQ29nZEc5MFlXd2dMU0IwYjNSaGJGQnliMlFwSUM4Z2RHOTBZV3hRY205a08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2JXTkRiMjV1WVhWbmFHVjVVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRhVzRnUFNCTllYUm9MbTFwYmloNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMXBiaUE5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFwYmp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hoYzNsdGJXVjBjbWxqVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmljbUYxYmtKc1lXNXhkV1YwVTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCdFlYZ2dQU0JOWVhSb0xtMWhlQ2g0TG5SeWRXVkRiM1Z1ZENncExDQjVMblJ5ZFdWRGIzVnVkQ2dwS1R0Y2JpQWdhV1lnS0cxaGVDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklHMWhlRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5ZFhOelpXeFRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUdsbUlDaDRMbXhsYm1kMGFDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklIZ3ViR1Z1WjNSb08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY25WemMyVnNSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29jblZ6YzJWc1UybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5YjJkdmRFZHZiR1JpWlhKblUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzVqYjNWdWRFSnBkSE1vZEhKMVpTa2dLeUI1TG1OdmRXNTBRbWwwY3loMGNuVmxLVHRjYmlBZ1kyOXVjM1FnYkdWdUlEMGdlQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJR1JwWm1ZZ1BTQnNaVzRnTFNCMGIzUmhiQ0FySUdOdmJXMXZianRjYmlBZ2FXWWdLQ2hqYjIxdGIyNGdQVDBnYkdWdUtTQjhmQ0FvWkdsbVppQTlQU0JzWlc0cEtTQnlaWFIxY200Z01TNHdPMXh1SUNCbGJITmxJSEpsZEhWeWJpQmpiMjF0YjI0Z0x5QjBiM1JoYkNBcklHUnBabVlnTHlBb01pQXFJR3hsYmlBdElIUnZkR0ZzS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0dScGMzUmhibU5sT2lCdWRXMWlaWElwSUh0Y2JpQWdjbVYwZFhKdUlERWdMeUFvSURFZ0t5QmthWE4wWVc1alpTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0hOcGJXbHNZWEpwZEhrNklHNTFiV0psY2lrZ2UxeHVJQ0J5WlhSMWNtNGdNU0F2SUhOcGJXbHNZWEpwZEhrZ0xTQXhPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBSR2wyWlhKelpWTjFZbk5sZENoc1pXNW5kR2c2SUc1MWJXSmxjaXdnYmpvZ2JuVnRZbVZ5TENCa2FYTjBPaUFvYVRFNklHNTFiV0psY2l3Z2FUSTZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lHWjFibU4wYVc5dUlHMWhlRUo1S0haaGJIVmxjem9nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMQ0J2Y21SbGNrSjVPaUFvYVRvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhJcElIdGNiaUFnSUNCc1pYUWdiV0Y0Vm1Gc2RXVWdQU0J1ZFd4c08xeHVJQ0FnSUd4bGRDQnRZWGhQY21SbGNrSjVJRDBnYm5Wc2JEdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdaV3hsYldWdWRDQnZaaUIyWVd4MVpYTXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHVnNaVzFsYm5SUGNtUmxja0o1SUQwZ2IzSmtaWEpDZVNobGJHVnRaVzUwS1R0Y2JpQWdJQ0FnSUdsbUlDaHRZWGhQY21SbGNrSjVJRDA5SUc1MWJHd2dmSHdnWld4bGJXVnVkRTl5WkdWeVFua2dQaUJ0WVhoUGNtUmxja0o1S1NCN1hHNGdJQ0FnSUNBZ0lHMWhlRlpoYkhWbElEMGdaV3hsYldWdWREdGNiaUFnSUNBZ0lDQWdiV0Y0VDNKa1pYSkNlU0E5SUdWc1pXMWxiblJQY21SbGNrSjVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYldGNFZtRnNkV1U3WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J6ZFdKelpYUWdQU0JiY21GdVpHOXRTVzUwS0d4bGJtZDBhQ0F0SURFcFhUdGNiaUFnWTI5dWMzUWdZMjl0Y0d4bGJXVnVkQ0E5SUc1bGR5QlRaWFFvS1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ2FXWWdLQ0Z6ZFdKelpYUXVhVzVqYkhWa1pYTW9hU2twWEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG1Ga1pDaHBLVHRjYmlBZ2ZWeHVYRzRnSUhkb2FXeGxJQ2h6ZFdKelpYUXViR1Z1WjNSb0lEd2diaWtnZTF4dUlDQWdJR052Ym5OMElHbGtlQ0E5SUcxaGVFSjVLRnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzUyWVd4MVpYTW9LU0JoY3lCSmRHVnlZV0pzWlVsMFpYSmhkRzl5UEc1MWJXSmxjajRzWEc0Z0lDQWdJQ0FvYVNrZ1BUNGdUV0YwYUM1dGFXNHVZWEJ3Ykhrb1RXRjBhQ3dnYzNWaWMyVjBMbTFoY0NobWRXNWpkR2x2YmloMllXd3NJR2x1WkdWNEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmthWE4wS0drc0lIWmhiQ2s3WEc0Z0lDQWdJQ0I5S1NrcE8xeHVJQ0FnSUdsbUlDaHBaSGdwSUh0Y2JpQWdJQ0FnSUhOMVluTmxkQzV3ZFhOb0tHbGtlQ2s3WEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG1SbGJHVjBaU2hwWkhncE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnYzNWaWMyVjBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIERlbm90ZXMgYSB2ZWN0b3Igb2YgZmxvYXRpbmcgcG9pdCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvclxuICogQGV4dGVuZHMge0Zsb2F0MzJBcnJheX1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvciBleHRlbmRzIEZsb2F0MzJBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgYSB0d28tZGltZW5zaW9uYWwgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBNYXRyaXhcbiAqIEBleHRlbmRzIHtBcnJheTxWZWN0b3I+fVxuICovXG5leHBvcnQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGNhcnRlc2lhbiBjb29yZGluYXRlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29vcmRpbmF0ZXNcbiAqIEBleHRlbmRzIHtNYXRyaXh9XG4gKi9cbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlcyBleHRlbmRzIE1hdHJpeCB7XG59XG4vKipcbiAqIERlbm90ZXMgYW4gYXJyYXkgb2YgYXJiaXRyYXJ5LXR5cGVkIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvcnNcbiAqIEBleHRlbmRzIHtBcnJheTxhbnk+fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9ycyBleHRlbmRzIEFycmF5IHtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaUzFrWldOc1lYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbExXUmxZMnhoY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxGbEJRVms3UTBGQlJ6dEJRVVV6UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEV0QlFXRTdRMEZCUnp0QlFVVTFRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNWMEZCV1N4VFFVRlJMRTFCUVUwN1EwRkJSenRCUVVVeFF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1QwRkJVU3hUUVVGUkxFdEJRVlU3UTBGQlJ5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFpsWTNSdmNpQnZaaUJtYkc5aGRHbHVaeUJ3YjJsMElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1ZtVmpkRzl5WEc0Z0tpQkFaWGgwWlc1a2N5QjdSbXh2WVhRek1rRnljbUY1ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtVmpkRzl5SUdWNGRHVnVaSE1nUm14dllYUXpNa0Z5Y21GNUlIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRTFoZEhKcGVGeHVJQ29nUUdWNGRHVnVaSE1nZTBGeWNtRjVQRlpsWTNSdmNqNTlYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJOWVhSeWFYZ2daWGgwWlc1a2N5QkJjbkpoZVR4V1pXTjBiM0krSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmpZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUVOdmIzSmthVzVoZEdWelhHNGdLaUJBWlhoMFpXNWtjeUI3VFdGMGNtbDRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUTI5dmNtUnBibUYwWlhNZ1pYaDBaVzVrY3lCTllYUnlhWGdnZTMxY2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRnVJR0Z5Y21GNUlHOW1JR0Z5WW1sMGNtRnllUzEwZVhCbFpDQjJaV04wYjNKekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJqYkdGemN5QldaV04wYjNKelhHNGdLaUJBWlhoMFpXNWtjeUI3UVhKeVlYazhZVzU1UG4xY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWmxZM1J2Y25NZ1pYaDBaVzVrY3lCQmNuSmhlVHhoYm5rK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUdScFkzUnBiMjVoY25rZ1kyOXVkR0ZwYm1sdVp5Qm1kVzVqZEdsdmJpQnZjSFJwYjI1ekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUIwZVhCbElFOXdkR2x2Ym5OY2JpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1QzQjBhVzl1Y3lBOUlIdGJibUZ0WlRvZ2MzUnlhVzVuWFRvZ1lXNTVmVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdOMWMzUnZiU0JrYVhOMFlXNWpaU0J0WlhSeWFXTWdZbVYwZDJWbGJpQjBhR1VnZEhkdklHZHBkbVZ1SUhabFkzUnZjbk11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIUjVjR1VnUkdsemRHRnVZMlZOWlhSeWFXTmNiaUFxSUVCd1lYSmhiU0I3WVc1NWZTQjJNU0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubDlJSFl5SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkVhWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aWE5sSUhSM2J5QjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnZEhsd1pTQkVhWE4wWVc1alpVMWxkSEpwWXlBOUlDaDJNVG9nWVc1NUxDQjJNam9nWVc1NUtTQTlQaUFvYm5WdFltVnlLVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdFZ2MybHRjR3hsSUhOMGNtbHVaeUIwYnlCemRISnBibWNnWkdsamRHbHZibUZ5ZVM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFkSGx3WlNCVGRISnBibWRFYVdOMGFXOXVZWEo1WEc0Z0tpOWNibVY0Y0c5eWRDQjBlWEJsSUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5mVHRjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4qIFJldHVybnMgb3JkZXIgb2YgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIHNvcnRlZC5cbipcbiogQGV4cG9ydFxuKiBAcGFyYW0ge2FueVtdfSB2YWx1ZXMgSW5wdXQgYXJyYXkuXG4qIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmdTb3J0KHZhbHVlcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc29ydGZuID0gcmV2ZXJzZSA/IChhLCBiKSA9PiAoYlswXSAtIGFbMF0pIDogKGEsIGIpID0+IChhWzBdIC0gYlswXSk7XG4gICAgY29uc3QgZGVjb3IgPSAodiwgaSkgPT4gW3YsIGldOyAvLyBzZXQgaW5kZXggdG8gdmFsdWVcbiAgICBjb25zdCB1bmRlY29yID0gKGEpID0+IGFbMV07IC8vIGxlYXZlIG9ubHkgaW5kZXhcbiAgICBjb25zdCBfYXJnc29ydCA9IChhcnIpID0+IGFyci5tYXAoZGVjb3IpLnNvcnQoc29ydGZuKS5tYXAodW5kZWNvcik7XG4gICAgcmV0dXJuIF9hcmdzb3J0KHZhbHVlcyk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzIGFjY29yZGluZyB0byB0aGUgZGlzdCBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCB0b3RhbCBudW1iZXIgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGRpdmVyc2UgZWxlbWVudHMgdG8gZmluZFxuICogQHBhcmFtIHsoaTE6IG51bWJlciwgaTI6IG51bWJlcikgPT4gbnVtYmVyfSBkaXN0IGEgZnVuY3Rpb24gd2hpY2ggY2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIG9iamVjdHMgdXNpbmcgdGhlaXIgaW5kZXhlc1xuICogQHJldHVybnMge251bWJlcltdfSBUaGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoLCBuLCBkaXN0KSB7XG4gICAgZnVuY3Rpb24gbWF4QnkodmFsdWVzLCBvcmRlckJ5KSB7XG4gICAgICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgICAgIGxldCBtYXhPcmRlckJ5ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbWF4T3JkZXJCeSA9IGVsZW1lbnRPcmRlckJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3Vic2V0ID0gW3JhbmRvbUludChsZW5ndGggLSAxKV07XG4gICAgY29uc3QgY29tcGxlbWVudCA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICghc3Vic2V0LmluY2x1ZGVzKGkpKVxuICAgICAgICAgICAgY29tcGxlbWVudC5hZGQoaSk7XG4gICAgfVxuICAgIHdoaWxlIChzdWJzZXQubGVuZ3RoIDwgbikge1xuICAgICAgICBjb25zdCBpZHggPSBtYXhCeShjb21wbGVtZW50LnZhbHVlcygpLCAoaSkgPT4gTWF0aC5taW4uYXBwbHkoTWF0aCwgc3Vic2V0Lm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgICAgfSkpKTtcbiAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1YnNldDtcbn1cbi8qKlxuICogUmV0dXJucyBub3JtYWxpemVkIHZlY3RvclxuICogQHBhcmFtIHtWZWN0b3J9IGRhdGEgbnVtZXJpY2FsIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoZGF0YSkge1xuICAgIGxldCBtZWFuID0gMDtcbiAgICBsZXQgc3RkID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIG1lYW4gKz0gZGF0YVtpXTtcbiAgICBtZWFuIC89IGRhdGEubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgc3RkICs9IChkYXRhW2ldIC0gbWVhbikgKiAoZGF0YVtpXSAtIG1lYW4pO1xuICAgIHN0ZCA9IE1hdGguc3FydChzdGQgLyBkYXRhLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBkYXRhW2ldID0gKGRhdGFbaV0gLSBtZWFuKSAvIHN0ZDtcbiAgICByZXR1cm4gZGF0YTtcbn1cbi8qKlxuICogRmluZHMgc2V0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gbGlzdHMuXG4gKiBAcGFyYW0ge2FueVtdfSBhIFRoZSBmaXJzdCBsaXN0LlxuICogQHBhcmFtIHthbnlbXX0gYiBUaGUgc2Vjb25kIGxpc3QuXG4gKiBAcmV0dXJuIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldERpZmZlcmVuY2UoYSwgYikge1xuICAgIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoYS5maWx0ZXIoKHgpID0+ICFiU2V0Lmhhcyh4KSkpLnZhbHVlcygpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoyWldOMGIzSXRiM0JsY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFWTXNUVUZCVFN4RlFVRjFReXhOUVVGTkxIRkNRVUZ4UWl4RFFVRkRPMEZCUTNwR0xFOUJRVThzUlVGQlF5eFhRVUZYTEVWQlFVVXNVMEZCVXl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSV2hFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVFVGQlRTeERRVUZETEZsQlFYRkNMRXRCUVVzc1JVRkJSU3hWUVVGclFpeHJRa0ZCYTBJN1NVRkRja1lzU1VGQlNTeERRVUZETEZOQlFWTTdVVUZEV2l4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlF6ZENMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRk5CUVZNc1pVRkJaU3hEUVVGRExGVkJRV3RDTEVWQlFVVXNWVUZCYTBJc1JVRkJSU3hQUVVGbExFTkJRVU03U1VGREwwVXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGxRVUZsTEVOQlFVTXNUVUZCWXp0SlFVTTFReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNaRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM1JHTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFTkJRVk1zUlVGQlJTeGhRVUZ4UWl4RFFVRkRPMGxCUTNCRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZlRUlzVFVGQlRTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxEaENRVUU0UWl4RFFVRkRMRU5CUVVNN1NVRkZNMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVYwUXl4UFFVRlBMRXRCUVVzc1EwRkJRenRCUVVObUxFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEZOQlFWTXNVVUZCVVN4RFFVRkRMRU5CUVZNN1NVRkRla0lzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYUVJc1QwRkJUeXhMUVVGTExFTkJRVU03UVVGRFppeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4VFFVRlRMRmxCUVZrc1EwRkJReXhEUVVGVE8wbEJRemRDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRGVFSXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYcENMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4WlFVRlpMRU5CUVVNc1EwRkJVenRKUVVOd1F5eEpRVUZKTEUxQlFVMHNSMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRka0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCVnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMUZCUTNaRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaENMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFVkJRVlVzUlVGQlJTeEZRVUZWTzBsQlEzSkVMRWxCUVVrc1JVRkJSU3hEUVVGRExFMUJRVTBzU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFR0UlFVTjRRaXhOUVVGTkxFdEJRVXNzUTBGQlF5dzRRMEZCT0VNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRKUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRlhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3T3pzN08wZEJVVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVlVGQmEwSXNSVUZCUlN4VlFVRnJRaXhGUVVGRkxGRkJRV2RDTEVWQlFVVTdTVUZEZWtZc1RVRkJUU3hOUVVGTkxFZEJRVWNzWlVGQlpTeERRVUZETEZWQlFWVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJRenRKUVVWMlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMUZCUTI1RExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETzFsQlEycERMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGNrTTdTVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTd3dRa0ZCTUVJc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV6dEpRVU0zUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU5zUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEY0VNc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHdENRVUZyUWl4RFFVRkRMRWxCUVdFc1JVRkJSU3hSUVVGM1FqdEpRVU40UlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlF6TkNMRTFCUVUwc1RVRkJUU3hIUVVGSExHVkJRV1VzUTBGQlF5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSV3hFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRia01zVFVGQlRTeERRVUZETEVkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhSaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOcVF6dExRVU5HTzBsQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEd0R1FVRnJSanRCUVVOc1JpeE5RVUZOTEZWQlFWVXNVVUZCVVN4RFFVRkRMRXRCUVdFc1JVRkJSU3hIUVVGWExFVkJRVVVzV1VGQldTeEhRVUZITEV0QlFVczdTVUZEZGtVc1RVRkJUU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVVYwUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVNM1FpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVY0UWl4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVRTdPenM3T3pzN1JVRlBSVHRCUVVOSUxFMUJRVTBzVlVGQlZTeFBRVUZQTEVOQlFVTXNUVUZCWVN4RlFVRkZMRTlCUVU4c1IwRkJSeXhMUVVGTE8wbEJRM0JFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSeXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc2NVSkJRWEZDTzBsQlEyeEZMRTFCUVUwc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHRRa0ZCYlVJN1NVRkRka1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NRMEZCUXl4SFFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVNeFJTeFBRVUZQTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNeFFpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGakxFVkJRVVVzUTBGQlV5eEZRVUZGTEVsQlFYZERPMGxCUTJ4SExGTkJRVk1zUzBGQlN5eERRVUZETEUxQlFXZERMRVZCUVVVc1QwRkJPRUk3VVVGRE4wVXNTVUZCU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM0JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVWMFFpeExRVUZMTEUxQlFVMHNUMEZCVHl4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVNMVFpeE5RVUZOTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4VlFVRlZMRWxCUVVrc1NVRkJTU3hKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZWTEVWQlFVVTdaMEpCUTNKRUxGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdaMEpCUTI1Q0xGVkJRVlVzUjBGQlJ5eGpRVUZqTEVOQlFVTTdZVUZETjBJN1UwRkRSanRSUVVORUxFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlJUZENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEY2tJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMUZCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVFNFFpeEZRVU12UXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTenRaUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzU1VGQlNTeEhRVUZITEVWQlFVVTdXVUZEVUN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1MwRkRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3TzBkQlIwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1UwRkJVeXhEUVVGRExFbEJRVms3U1VGRGNFTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMklzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlZvc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVVM1F5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlc1RExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTnNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMGxCUlc1RExFOUJRVThzU1VGQlNTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVR0SlFVTTVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNKRkxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTAxaGRISnBlQ3dnVm1WamRHOXlMQ0JEYjI5eVpHbHVZWFJsY3l3Z1ZtVmpkRzl5Y3l3Z1JHbHpkR0Z1WTJWTlpYUnlhV045SUdaeWIyMGdKeTR2ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFHYkc5aGRDd2djbUZ1Wkc5dFNXNTBmU0JtY205dElDY3VMM0poYm1SdmJTYzdYRzVjYmk4cUtseHVJQ29nUVhOelpYSjBjeUJoSUdOdmJtUnBkR2x2YmlCaWVTQjBhSEp2ZDJsdVp5QmhiaUJGY25KdmNpNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRqYjI1a2FYUnBiMjQ5Wm1Gc2MyVmRJRU52Ym1ScGRHbHZiaUIwYnlCaGMzTmxjblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyMWxjM05oWjJVOUowRnpjMlZ5ZEdsdmJpQmxjbkp2Y2k0blhTQk5aWE56WVdkbElIUnZJRzkxZEhCMWRDNWNiaUFxSUVCMGFISnZkM01nZTBWeWNtOXlmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYTnpaWEowS0dOdmJtUnBkR2x2YmpvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTENCdFpYTnpZV2RsT2lCemRISnBibWNnUFNBblFYTnpaWEowYVc5dUlHVnljbTl5TGljcElIdGNiaUFnYVdZZ0tDRmpiMjVrYVhScGIyNHBYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0cxbGMzTmhaMlVwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdibVYzSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JoY25KaGVTQmhibVFnWm1sc2JITWdhWFFnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ1kyOXZjbVJwYm1GMFpYTWdLRzUxYldKbGNpQnZaaUJ5YjNkektTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JrYVcxbGJuTnBiMjR5SUZSb1pTQnpaV052Ym1RZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JR052YkhWdGJuTXBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0bWFXeHNQVEJkSUVFZ2RtRnNkV1VnZEc4Z1ptbHNiQ0IwYUdVZ1kyOXZjbVJwYm1GMFpYTWdkMmwwYUM1Y2JpQXFJRUJ5WlhSMWNtNGdlME52YjNKa2FXNWhkR1Z6ZlNCQklIUjNieTFrYVcxbGJuTnBiMjVoYkNCbWFXeHNaV1FnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLaUJBZEc5a2J5Qk5hV2RvZENCaVpTQnpiRzkzSUhOcGJtTmxJSFZ6WldRZ1FYSnlZWGt1YldGd0xpQlFjbTlpWVdKc2VTQnVaV1ZrY3lCd1pYSm1iM0p0WVc1alpTQnlaWFpwYzJsdmJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FXNXBkRU52YjNKa2FXNWhkR1Z6S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQm1hV3hzT2lCdWRXMWlaWElnUFNBd0tUb2dRMjl2Y21ScGJtRjBaWE1nZTF4dUlDQnlaWFIxY200Z2JtVjNJRUZ5Y21GNUtHUnBiV1Z1YzJsdmJqRXBMbVpwYkd3b1ptbHNiQ2t1YldGd0tDZ3BJRDArSUNodVpYY2dWbVZqZEc5eUtHUnBiV1Z1YzJsdmJqSXBMbVpwYkd3b1ptbHNiQ2twS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJVY21GdWMzQnZjMlVnYldGMGNtbDRMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3VFdGMGNtbDRmU0J0WVhSeWFYZ2dWR2hsSUcxaGRISnBlQ0IwYnlCaVpTQjBjbUZ1YzNCdmMyVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN1RXRjBjbWw0ZlNCVWNtRnVjM0J2YzJWa0lHMWhkSEpwZUM1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZEhKaGJuTndiM05sVFdGMGNtbDRLRzFoZEhKcGVEb2dUV0YwY21sNEtUb2dUV0YwY21sNElIdGNiaUFnY21WMGRYSnVJRzVsZHlCQmNuSmhlU2h0WVhSeWFYaGJNRjB1YkdWdVozUm9LUzVtYVd4c0tEQXBYRzRnSUNBZ0xtMWhjQ2dvWHl3Z2FTa2dQVDRnS0c1bGR5QldaV04wYjNJb2JXRjBjbWw0TG14bGJtZDBhQ2t1Wm1sc2JDZ3dLUzV0WVhBb0tGOHNJR29wSUQwK0lDaHRZWFJ5YVhoYmFsMWJhVjBwS1NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVGa1pITWdkSGR2SUhabFkzUnZjbk1nZDJsMGFDQjBhR1VnYzJWamIyNWtJRzl1WlNCMGJ5QmlaU0J0ZFd4MGFYQnNhV1ZrSUdKNUlIUm9aU0JuYVhabGJpQnlZWFJwYnk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQnhJRlJvWlNCelpXTnZibVFnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYlhWc2RHbHdiR2xsY2oweFhTQkJJRzExYkhScGNHeHBaWElnZEc4Z1ltVWdkWE5sWkNCaVpXWnZjbVVnZEdobElITmxZMjl1WkNCMlpXTjBiM0lnYVhNZ1lXUmtaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdFdaV04wYjNKOUlFNWxkeUIyWldOMGIzSWdZMjl1ZEdGcGJtVmtJSFJvWlNCeVpYTjFiSFFnYjJZZ2IzQmxjbUYwYVc5dUlIQXJiWFZzZEdsd2JHbGxjaXB4TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkbVZqZEc5eVFXUmtLSEE2SUZabFkzUnZjaXdnY1RvZ1ZtVmpkRzl5TENCdGRXeDBhWEJzYVdWeU9pQnVkVzFpWlhJZ1BTQXhLVG9nVm1WamRHOXlJSHRjYmlBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnY0M1c1pXNW5kR2c3WEc1Y2JpQWdZWE56WlhKMEtHNUpkR1Z0Y3lBOVBTQnhMbXhsYm1kMGFDd2dKMVpsWTNSdmNpQnNaVzVuZEdoeklHUnZJRzV2ZENCdFlYUmphQzRuS1R0Y2JseHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIQXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0J3VzJsZElDc2diWFZzZEdsd2JHbGxjaUFxSUhGYmFWMDdYRzVjYmlBZ2NtVjBkWEp1SUhSdmRHRnNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTjFiWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdZbVVnYzNWdGJXVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCVWFHVWdkbVZqZEc5eUozTWdhWFJsYlhNZ2MzVnRMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBkR1Z0YzFOMWJTaDJPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdkRzkwWVd3Z1BTQXdPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJDQXJQU0IyVzJsZE8xeHVYRzRnSUhKbGRIVnliaUIwYjNSaGJEdGNibjFjYmx4dUx5b3FYRzRnS2lCVGRYRmhjbVZ6SUhSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnZGlCVWFHVWdkbVZqZEc5eUlIUnZJSE54ZFdGeVpTNWNiaUFxSUVCeVpYUjFjbTRnZTFabFkzUnZjbjBnUVNCdVpYY2dkbVZqZEc5eUlHTnZiblJoYVc1cGJtY2dkR2hsSUc5eWFXZHBibUZzSjNNZ2FYUmxiWE1nYzNGMVlYSmxaQzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbVZqZEc5eVUzRjFZWEpsS0hZNklGWmxZM1J2Y2lrNklGWmxZM1J2Y2lCN1hHNGdJR052Ym5OMElHNUpkR1Z0Y3lBOUlIWXViR1Z1WjNSb08xeHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0IyVzJsZElDb2dkbHRwWFR0Y2JseHVJQ0J5WlhSMWNtNGdkRzkwWVd3N1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSk1aVzVuZEdnb2Rqb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnYkdWMElITnhjbE4xYlRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnWm05eUlDaHNaWFFnYVRvZ2JuVnRZbVZ5SUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ2MzRnlVM1Z0SUNzOUlIWmJhVjBnS2lCMlcybGRPMXh1SUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOeGNsTjFiU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKRWIzUlFjbTlrZFdOMEtIWXhPaUJXWldOMGIzSXNJSFl5T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvZGpFdWJHVnVaM1JvSUNFOUlIWXlMbXhsYm1kMGFDbGNiaUFnSUNCMGFISnZkeUJGY25KdmNpZ25WR2hsSUdScGJXVnVjMmx2Ym1Gc2FYUjVJRzltSUhSb1pTQjJaV04wYjNKeklHMTFjM1FnYldGMFkyZ25LVHRjYmlBZ2JHVjBJSEJ5YjJRNklHNTFiV0psY2lBOUlEQTdYRzRnSUdadmNpQW9iR1YwSUdrNklHNTFiV0psY2lBOUlEQTdJR2tnUENCMk1TNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQndjbTlrSUNzOUlIWXhXMmxkSUNvZ2RqSmJhVjA3WEc0Z0lISmxkSFZ5YmlCd2NtOWtPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQnRZWFJ5YVhnZ1ptbHNiR1ZrSUhkcGRHZ2djbUZ1Wkc5dElHWnNiMkYwYVc1bklIQnZhVzUwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCdFlYUnlhWGd1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1pQlVhR1VnYzJWamIyNWtJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdiV0YwY21sNExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR6WTJGc1pUMHhMbDBnVFdGNElIWmhiSFZsSUdkcGRtVnVJR0o1SUhKaGJtUnZiU0JuWlc1bGNtRjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlFRWdibVYzSUcxaGRISnBlQ0JtYVd4c1pXUWdkMmwwYUNCeVlXNWtiMjBnWm14dllYUnBibWNnY0c5cGJuUWdJSFpoYkhWbGN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lITmpZV3hsT2lCdWRXMWlaWElnUFNBeExpazZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzFoZEhKcGVDQTlJR2x1YVhSRGIyOXlaR2x1WVhSbGN5aGthVzFsYm5OcGIyNHhMQ0JrYVcxbGJuTnBiMjR5S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdScGJXVnVjMmx2YmpFN0lDc3JhU2tnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnFJRHdnWkdsdFpXNXphVzl1TWpzZ0t5dHFLVnh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2NtRnVaRzl0Um14dllYUW9jMk5oYkdVcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRMkZzWTNWc1lYUmxjeUJGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUIwZDI4Z2RtVmpkRzl5Y3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEVnVkdobElITmxZMjl1WkNCMlpXTjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aU0JuYVhabGJpQjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvY0RvZ1ZtVmpkRzl5TENCeE9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQmthV1ptSUQwZ2RtVmpkRzl5UVdSa0tIQXNJSEVzSUMweEtUdGNiaUFnWTI5dWMzUWdjM0ZrYVdabUlEMGdkbVZqZEc5eVUzRjFZWEpsS0dScFptWXBPMXh1SUNCamIyNXpkQ0J6Y1dScFptWlRkVzF0SUQwZ2FYUmxiWE5UZFcwb2MzRmthV1ptS1R0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1YzNGeWRDaHpjV1JwWm1aVGRXMXRLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIVnphVzVuSUdFZ1kzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5YzMwZ1pHRjBZU0JKYm5CMWRDQjJaV04wYjNKeklIUnZJR05oYkdOMWJHRjBaU0JrYVhOMFlXNWpaWE11WEc0Z0tpQkFjR0Z5WVcwZ2UwUnBjM1JoYm1ObFRXVjBjbWxqZlNCa2FYTjBZVzVqWlNCRGRYTjBiMjBnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjR1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlFTmhiR04xYkdGMFpXUWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHMWhkSEpwZUM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR05oYkdORWFYTjBZVzVqWlUxaGRISnBlQ2hrWVhSaE9pQldaV04wYjNKekxDQmthWE4wWVc1alpUb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNcE9pQk5ZWFJ5YVhnZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmtZWFJoTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYldGMGNtbDRJRDBnYVc1cGRFTnZiM0prYVc1aGRHVnpLRzVKZEdWdGN5d2dia2wwWlcxekxDQXdLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzVKZEdWdGN6c2dLeXRwS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYWlBOUlHa2dLeUF4T3lCcUlEd2dia2wwWlcxek95QXJLMm9wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1E2SUc1MWJXSmxjaUE5SUNoa1lYUmhXMmxkSUQwOUlHNTFiR3dwSUh4OElDaGtZWFJoVzJwZElEMDlJRzUxYkd3cElEOGdNQ0E2SUdScGMzUmhibU5sS0dSaGRHRmJhVjBzSUdSaGRHRmJhbDBwTzF4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdiV0YwY21sNFcycGRXMmxkSUQwZ1pEdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUcxaGRISnBlRHRjYm4xY2JseHVMeW9xSUVkbGJtVnlZWFJsY3lCaGNuSmhlU0JtY205dElHRWdjbUZ1WjJVZ1cySmxaMmx1T3lCbGJtUmRJRzl5SUZ0aVpXZHBianNnWlc1a0tTQnBaaUJsYm1SRmVHTnNkWE5wZG1VdUlDb3FMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsYmxKaGJtZGxLR0psWjJsdU9pQnVkVzFpWlhJc0lHVnVaRG9nYm5WdFltVnlMQ0JsYm1SRmVHTnNkWE5wZG1VZ1BTQm1ZV3h6WlNrNklFbHVkRE15UVhKeVlYa2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JsYm1RZ0xTQmlaV2RwYmlBcklDaGxibVJGZUdOc2RYTnBkbVVnUHlBd0lEb2dNU2s3WEc0Z0lHTnZibk4wSUhObGNtbGxjeUE5SUc1bGR5QkpiblF6TWtGeWNtRjVLRzVKZEdWdGN5azdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVTWFJsYlhNN0lDc3JhU2xjYmlBZ0lDQnpaWEpwWlhOYmFWMGdQU0JpWldkcGJpQXJJR2s3WEc1Y2JpQWdjbVYwZFhKdUlITmxjbWxsY3p0Y2JuMWNibHh1SUM4cUtseHVJQ29nVW1WMGRYSnVjeUJ2Y21SbGNpQnZaaUIyWVd4MVpYTWdZWE1nYVdZZ2RHaGxlU0JoY21VZ2MyOXlkR1ZrTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUhaaGJIVmxjeUJKYm5CMWRDQmhjbkpoZVM1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXM0psZG1WeWMyVTlabUZzYzJWZElGZG9aWFJvWlhJZ2RHOGdjbVYwZFhKdUlISmxkbVZ5YzJWa0lHOXlaR1Z5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeVcxMTlJRlJvWlNCdmNtUmxjaUJqYjIxd2RYUmxaQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRnlaMU52Y25Rb2RtRnNkV1Z6T2lCaGJubGJYU3dnY21WMlpYSnpaU0E5SUdaaGJITmxLVG9nYm5WdFltVnlXMTBnZTF4dUlDQmpiMjV6ZENCemIzSjBabTRnUFNCeVpYWmxjbk5sSUQ4Z0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dKYk1GMGdMU0JoV3pCZEtTQTZJQ2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwSUQwK0lDaGhXekJkSUMwZ1lsc3dYU2s3WEc0Z0lHTnZibk4wSUdSbFkyOXlJRDBnS0hZNklHRnVlU3dnYVRvZ2JuVnRZbVZ5S1NBOVBpQmJkaXdnYVYwN0lDOHZJSE5sZENCcGJtUmxlQ0IwYnlCMllXeDFaVnh1SUNCamIyNXpkQ0IxYm1SbFkyOXlJRDBnS0dFNklHRnVlVnRkS1NBOVBpQmhXekZkT3lBdkx5QnNaV0YyWlNCdmJteDVJR2x1WkdWNFhHNGdJR052Ym5OMElGOWhjbWR6YjNKMElEMGdLR0Z5Y2pvZ1lXNTVXMTBwSUQwK0lHRnljaTV0WVhBb1pHVmpiM0lwTG5OdmNuUW9jMjl5ZEdadUtTNXRZWEFvZFc1a1pXTnZjaWs3WEc0Z0lISmxkSFZ5YmlCZllYSm5jMjl5ZENoMllXeDFaWE1wTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdkR2hsSUdsdVpHVjRaWE1nYjJZZ2RHaGxJRzF2YzNRZ1pHbDJaWEp6WlNCdlltcGxZM1J6SUdGalkyOXlaR2x1WnlCMGJ5QjBhR1VnWkdsemRDQm1kVzVqZEdsdmJseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR3hsYm1kMGFDQjBiM1JoYkNCdWRXMWlaWElnYjJZZ2IySnFaV04wYzF4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHNGdiblZ0WW1WeUlHOW1JR1JwZG1WeWMyVWdaV3hsYldWdWRITWdkRzhnWm1sdVpGeHVJQ29nUUhCaGNtRnRJSHNvYVRFNklHNTFiV0psY2l3Z2FUSTZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlmU0JrYVhOMElHRWdablZ1WTNScGIyNGdkMmhwWTJnZ1kyRnNZM1ZzWVhSbGN5QmthWE4wWVc1alpTQmlaWFIzWldWdVhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RIZHZJRzlpYW1WamRITWdkWE5wYm1jZ2RHaGxhWElnYVc1a1pYaGxjMXh1SUNvZ1FISmxkSFZ5Ym5NZ2UyNTFiV0psY2x0ZGZTQlVhR1VnYVc1a1pYaGxjeUJ2WmlCMGFHVWdiVzl6ZENCa2FYWmxjbk5sSUc5aWFtVmpkSE5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRVJwZG1WeWMyVlRkV0p6WlhRb2JHVnVaM1JvT2lCdWRXMWlaWElzSUc0NklHNTFiV0psY2l3Z1pHbHpkRG9nS0dreE9pQnVkVzFpWlhJc0lHa3lPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWs2SUc1MWJXSmxjbHRkSUh0Y2JpQWdablZ1WTNScGIyNGdiV0Y0UW5rb2RtRnNkV1Z6T2lCSmRHVnlZV0pzWlVsMFpYSmhkRzl5UEc1MWJXSmxjajRzSUc5eVpHVnlRbms2SUNocE9pQnVkVzFpWlhJcElEMCtJRzUxYldKbGNpa2dlMXh1SUNBZ0lHeGxkQ0J0WVhoV1lXeDFaU0E5SUc1MWJHdzdYRzRnSUNBZ2JHVjBJRzFoZUU5eVpHVnlRbmtnUFNCdWRXeHNPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JsYkdWdFpXNTBJRzltSUhaaGJIVmxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdaV3hsYldWdWRFOXlaR1Z5UW5rZ1BTQnZjbVJsY2tKNUtHVnNaVzFsYm5RcE8xeHVJQ0FnSUNBZ2FXWWdLRzFoZUU5eVpHVnlRbmtnUFQwZ2JuVnNiQ0I4ZkNCbGJHVnRaVzUwVDNKa1pYSkNlU0ErSUcxaGVFOXlaR1Z5UW5rcElIdGNiaUFnSUNBZ0lDQWdiV0Y0Vm1Gc2RXVWdQU0JsYkdWdFpXNTBPMXh1SUNBZ0lDQWdJQ0J0WVhoUGNtUmxja0o1SUQwZ1pXeGxiV1Z1ZEU5eVpHVnlRbms3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYaFdZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lHTnZibk4wSUhOMVluTmxkQ0E5SUZ0eVlXNWtiMjFKYm5Rb2JHVnVaM1JvSUMwZ01TbGRPMXh1SUNCamIyNXpkQ0JqYjIxd2JHVnRaVzUwSUQwZ2JtVjNJRk5sZENncE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQnBaaUFvSVhOMVluTmxkQzVwYm1Oc2RXUmxjeWhwS1NsY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdVlXUmtLR2twTzF4dUlDQjlYRzVjYmlBZ2QyaHBiR1VnS0hOMVluTmxkQzVzWlc1bmRHZ2dQQ0J1S1NCN1hHNGdJQ0FnWTI5dWMzUWdhV1I0SUQwZ2JXRjRRbmtvWEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG5aaGJIVmxjeWdwSUdGeklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl4Y2JpQWdJQ0FnSUNocEtTQTlQaUJOWVhSb0xtMXBiaTVoY0hCc2VTaE5ZWFJvTENCemRXSnpaWFF1YldGd0tHWjFibU4wYVc5dUtIWmhiQ3dnYVc1a1pYZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JwYzNRb2FTd2dkbUZzS1R0Y2JpQWdJQ0FnSUgwcEtTazdYRzRnSUNBZ2FXWWdLR2xrZUNrZ2UxeHVJQ0FnSUNBZ2MzVmljMlYwTG5CMWMyZ29hV1I0S1R0Y2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdVpHVnNaWFJsS0dsa2VDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemRXSnpaWFE3WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QnViM0p0WVd4cGVtVmtJSFpsWTNSdmNseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJR1JoZEdFZ2JuVnRaWEpwWTJGc0lHRnljbUY1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnViM0p0WVd4cGVtVW9aR0YwWVRvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdiR1YwSUcxbFlXNGdQU0F3TzF4dUlDQnNaWFFnYzNSa0lEMGdNRHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2JXVmhiaUFyUFNCa1lYUmhXMmxkTzF4dVhHNGdJRzFsWVc0Z0x6MGdaR0YwWVM1c1pXNW5kR2c3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lITjBaQ0FyUFNBb1pHRjBZVnRwWFNBdElHMWxZVzRwSUNvZ0tHUmhkR0ZiYVYwZ0xTQnRaV0Z1S1R0Y2JseHVJQ0J6ZEdRZ1BTQk5ZWFJvTG5OeGNuUW9jM1JrSUM4Z1pHRjBZUzVzWlc1bmRHZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2daR0YwWVM1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCa1lYUmhXMmxkSUQwZ0tHUmhkR0ZiYVYwZ0xTQnRaV0Z1S1NBdklITjBaRHRjYmx4dUlDQnlaWFIxY200Z1pHRjBZVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkdhVzVrY3lCelpYUWdaR2xtWm1WeVpXNWpaU0JpWlhSM1pXVnVJSFIzYnlCc2FYTjBjeTVjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdFZ1ZHaGxJR1pwY25OMElHeHBjM1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyRnVlVnRkZlNCaUlGUm9aU0J6WldOdmJtUWdiR2x6ZEM1Y2JpQXFJRUJ5WlhSMWNtNGdlMkZ1ZVZ0ZGZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzJWMFJHbG1abVZ5Wlc1alpTaGhPaUJoYm5sYlhTd2dZam9nWVc1NVcxMHBPaUJoYm5sYlhTQjdYRzRnSUdOdmJuTjBJR0pUWlhRZ1BTQnVaWGNnVTJWMEtHSXBPMXh1SUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNodVpYY2dVMlYwS0dFdVptbHNkR1Z5S0NoNEtTQTlQaUFoWWxObGRDNW9ZWE1vZUNrcEtTNTJZV3gxWlhNb0tTazdYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbmNvbnN0IHBlcSA9IG5ldyBVaW50MzJBcnJheSgweDEwMDAwKTtcbmNvbnN0IG15ZXJzXzMyID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IGxzdCA9IDEgPDwgKG4gLSAxKTtcbiAgbGV0IHB2ID0gLTE7XG4gIGxldCBtdiA9IDA7XG4gIGxldCBzYyA9IG47XG4gIGxldCBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldIHw9IDEgPDwgaTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgbGV0IGVxID0gcGVxW2IuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgIGVxIHw9ICgoZXEgJiBwdikgKyBwdikgXiBwdjtcbiAgICBtdiB8PSB+KGVxIHwgcHYpO1xuICAgIHB2ICY9IGVxO1xuICAgIGlmIChtdiAmIGxzdCkge1xuICAgICAgc2MrKztcbiAgICB9XG4gICAgaWYgKHB2ICYgbHN0KSB7XG4gICAgICBzYy0tO1xuICAgIH1cbiAgICBtdiA9IChtdiA8PCAxKSB8IDE7XG4gICAgcHYgPSAocHYgPDwgMSkgfCB+KHh2IHwgbXYpO1xuICAgIG12ICY9IHh2O1xuICB9XG4gIGkgPSBuO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcGVxW2EuY2hhckNvZGVBdChpKV0gPSAwO1xuICB9XG4gIHJldHVybiBzYztcbn07XG5cbmNvbnN0IG15ZXJzX3ggPSAoYSwgYikgPT4ge1xuICBjb25zdCBuID0gYS5sZW5ndGg7XG4gIGNvbnN0IG0gPSBiLmxlbmd0aDtcbiAgY29uc3QgbWhjID0gW107XG4gIGNvbnN0IHBoYyA9IFtdO1xuICBjb25zdCBoc2l6ZSA9IE1hdGguY2VpbChuIC8gMzIpO1xuICBjb25zdCB2c2l6ZSA9IE1hdGguY2VpbChtIC8gMzIpO1xuICBsZXQgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGhzaXplOyBpKyspIHtcbiAgICBwaGNbaV0gPSAtMTtcbiAgICBtaGNbaV0gPSAwO1xuICB9XG4gIGxldCBqID0gMDtcbiAgZm9yICg7IGogPCB2c2l6ZSAtIDE7IGorKykge1xuICAgIGxldCBtdiA9IDA7XG4gICAgbGV0IHB2ID0gLTE7XG4gICAgY29uc3Qgc3RhcnQgPSBqICogMzI7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0pICsgc3RhcnQ7XG4gICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICAgIHBlcVtiLmNoYXJDb2RlQXQoayldIHw9IDEgPDwgaztcbiAgICB9XG4gICAgc2NvcmUgPSBtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgcGhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgfVxuICAgICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgfVxuICAgICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgICBwdiA9IG1oIHwgfih4diB8IHBoKTtcbiAgICAgIG12ID0gcGggJiB4djtcbiAgICB9XG4gICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgICB9XG4gIH1cbiAgbGV0IG12ID0gMDtcbiAgbGV0IHB2ID0gLTE7XG4gIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICBjb25zdCBlbmQgPSBNYXRoLm1pbigzMiwgbSAtIHN0YXJ0KSArIHN0YXJ0O1xuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldIHw9IDEgPDwgaztcbiAgfVxuICBzY29yZSA9IG07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICBjb25zdCBwYiA9IChwaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgIGNvbnN0IHhoID0gKCgoKGVxIHwgbWIpICYgcHYpICsgcHYpIF4gcHYpIHwgZXEgfCBtYjtcbiAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICBzY29yZSArPSAocGggPj4+IChtIC0gMSkpICYgMTtcbiAgICBzY29yZSAtPSAobWggPj4+IChtIC0gMSkpICYgMTtcbiAgICBpZiAoKHBoID4+PiAzMSkgXiBwYikge1xuICAgICAgcGhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgIH1cbiAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgIH1cbiAgICBwaCA9IChwaCA8PCAxKSB8IHBiO1xuICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgbXYgPSBwaCAmIHh2O1xuICB9XG4gIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgcGVxW2IuY2hhckNvZGVBdChrKV0gPSAwO1xuICB9XG4gIHJldHVybiBzY29yZTtcbn07XG5cbmNvbnN0IGRpc3RhbmNlID0gKGEsIGIpID0+IHtcbiAgaWYgKGEubGVuZ3RoID4gYi5sZW5ndGgpIHtcbiAgICBjb25zdCB0bXAgPSBiO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0bXA7XG4gIH1cbiAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGIubGVuZ3RoO1xuICB9XG4gIGlmIChhLmxlbmd0aCA8PSAzMikge1xuICAgIHJldHVybiBteWVyc18zMihhLCBiKTtcbiAgfVxuICByZXR1cm4gbXllcnNfeChhLCBiKTtcbn07XG5cbmNvbnN0IGNsb3Nlc3QgPSAoc3RyLCBhcnIpID0+IHtcbiAgbGV0IG1pbl9kaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgbWluX2luZGV4ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBkaXN0ID0gZGlzdGFuY2Uoc3RyLCBhcnJbaV0pO1xuICAgIGlmIChkaXN0IDwgbWluX2Rpc3RhbmNlKSB7XG4gICAgICBtaW5fZGlzdGFuY2UgPSBkaXN0O1xuICAgICAgbWluX2luZGV4ID0gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyclttaW5faW5kZXhdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNsb3Nlc3QsIGRpc3RhbmNlXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIFJlZmVyZW5jZTogaHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvamFyby1hbmQtamFyby13aW5rbGVyLXNpbWlsYXJpdHkvXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmphcm9XaW5rbGVyID0gZXhwb3J0cy5qYXJvID0gdm9pZCAwO1xuLyoqXG4gKlxuICogQHBhcmFtIHN0cjEgU3RyaW5nIDEgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBzdHIyIFN0cmluZyAyIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gb3B0aW9ucyB0byBjb250cm9sIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpIHtcbiAgICAvLyBFeGl0IGVhcmx5IGlmIGVpdGhlciBhcmUgZW1wdHkuXG4gICAgaWYgKHN0cjEubGVuZ3RoID09PSAwIHx8IHN0cjIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IHRvIHVwcGVyIGlmIGNhc2Utc2Vuc2l0aXZlIGlzIGZhbHNlLlxuICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgc3RyMSA9IHN0cjEudG9VcHBlckNhc2UoKTtcbiAgICAgICAgc3RyMiA9IHN0cjIudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgLy8gRXhhY3QgbWF0Y2hcbiAgICBpZiAoc3RyMSA9PT0gc3RyMikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgLy8gTnVtYmVyIG9mIG1hdGNoZXNcbiAgICB2YXIgbSA9IDA7XG4gICAgLy8gTGVuZ3RoIG9mIHR3byBTdHJpbmdzXG4gICAgdmFyIGxlbjEgPSBzdHIxLmxlbmd0aDtcbiAgICB2YXIgbGVuMiA9IHN0cjIubGVuZ3RoO1xuICAgIC8vIE1heGltdW0gZGlzdGFuY2VcbiAgICB2YXIgd2luZG93ID0gTWF0aC5mbG9vcihNYXRoLm1heChsZW4xLCBsZW4yKSAvIDIpIC0gMTtcbiAgICAvLyBIYXNoIGZvciBtYXRjaGVzXG4gICAgdmFyIHN0cjFIYXNoID0gbmV3IEFycmF5KGxlbjEpO1xuICAgIHZhciBzdHIySGFzaCA9IG5ldyBBcnJheShsZW4yKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgaSAtIHdpbmRvdyk7IGogPD0gTWF0aC5taW4obGVuMiwgaSArIHdpbmRvdyArIDEpOyBqKyspIHtcbiAgICAgICAgICAgIGlmICghc3RyMUhhc2hbaV0gJiYgIXN0cjJIYXNoW2pdICYmIHN0cjFbaV0gPT09IHN0cjJbal0pIHtcbiAgICAgICAgICAgICAgICArK207XG4gICAgICAgICAgICAgICAgc3RyMUhhc2hbaV0gPSBzdHIySGFzaFtqXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdCBlYXJseSBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQuXG4gICAgaWYgKG0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIC8vIENvdW50IHRoZSB0cmFuc3Bvc2l0aW9ucy5cbiAgICB2YXIgdCA9IDA7XG4gICAgdmFyIHBvaW50ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgICAgICBpZiAoc3RyMUhhc2hbaV0pIHtcbiAgICAgICAgICAgIHdoaWxlICghc3RyMkhhc2hbcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHIxLmNoYXJBdChpKSAhPT0gc3RyMi5jaGFyQXQocG9pbnQrKykpIHtcbiAgICAgICAgICAgICAgICB0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdCAvPSAyO1xuICAgIHJldHVybiAobSAvIGxlbjEgKyBtIC8gbGVuMiArIChtIC0gdCkgLyBtKSAvIDM7XG59XG5leHBvcnRzLmphcm8gPSBqYXJvO1xuLyoqXG4gKlxuICogQHBhcmFtIHN0cjEgU3RyaW5nIDEgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBzdHIyIFN0cmluZyAyIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gb3B0aW9ucyB0byBjb250cm9sIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBqYXJvV2lua2xlcihzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gSmFybyBEaXN0YW5jZVxuICAgIHZhciBqYXJvRGlzdCA9IGphcm8oc3RyMSwgc3RyMiwgb3B0aW9ucyk7XG4gICAgLy8gU2FtZSBwcmVmaXggbGVuZ3RoLCBtYXhpdW0gaXMgNFxuICAgIHZhciBwcmVmaXggPSAwO1xuICAgIGlmIChqYXJvRGlzdCA+IDAuNykge1xuICAgICAgICB2YXIgbWluSW5kZXggPSBNYXRoLm1pbihzdHIxLmxlbmd0aCwgc3RyMi5sZW5ndGgpO1xuICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgIHdoaWxlIChzdHIxW2ldID09PSBzdHIyW2ldICYmIGkgPCA0ICYmIGkgPCBtaW5JbmRleCkge1xuICAgICAgICAgICAgKytwcmVmaXg7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgamFyb0Rpc3QgKz0gMC4xICogcHJlZml4ICogKDEgLSBqYXJvRGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBqYXJvRGlzdDtcbn1cbmV4cG9ydHMuamFyb1dpbmtsZXIgPSBqYXJvV2lua2xlcjtcbiIsImNsYXNzIENlbGwge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wYXJlbnRJID0gMDtcbiAgICAgICAgdGhpcy5wYXJlbnRKID0gMDtcbiAgICB9XG59XG47XG5leHBvcnQgY2xhc3MgQWxpZ25lZCB7XG4gICAgY29uc3RydWN0b3Ioc2VxMV8sIHNlcTJfLCBzY29yZV8pIHtcbiAgICAgICAgdGhpcy5zZXExID0gc2VxMV87XG4gICAgICAgIHRoaXMuc2VxMiA9IHNlcTJfO1xuICAgICAgICB0aGlzLnNjb3JlID0gc2NvcmVfO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZUFsaWdubWVudCB7XG4gICAgY29uc3RydWN0b3Ioc2VxMV8sIHNlcTJfLCBnYXBfLCBhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICB0aGlzLnNlcTEgPSAnJztcbiAgICAgICAgdGhpcy5zZXEyID0gJyc7XG4gICAgICAgIHRoaXMuZ2FwID0gMTtcbiAgICAgICAgdGhpcy5sZW4xID0gMDtcbiAgICAgICAgdGhpcy5sZW4yID0gMDtcbiAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSBbXTtcbiAgICAgICAgdGhpcy5zY29yZXMgPSBbXTtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLkJMT1NVTTQ1ID0gW1s1LCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgMCwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgMCwgLTEsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAzLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMSwgLTIsIC0xLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCA2LCAyLCAtMiwgMCwgMCwgMCwgMSwgLTIsIC0zLCAwLCAtMiwgLTIsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCA0LCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgMiwgNywgLTMsIDAsIDIsIC0xLCAwLCAtNCwgLTMsIDAsIC0zLCAtNCwgLTEsIDAsIC0xLCAtNCwgLTIsIC0zLCA1LCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0zLCAxMiwgLTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTQsIC0xLCAtMSwgLTUsIC0zLCAtMSwgLTIsIC0zLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNiwgMiwgLTIsIDEsIC0yLCAtMiwgMSwgMCwgLTQsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMywgMCwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTMsIDIsIDYsIC0yLCAwLCAtMywgLTIsIDEsIC0yLCAtMywgMCwgMCwgLTEsIC0zLCAtMiwgLTMsIDEsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA3LCAtMiwgLTQsIC0zLCAtMiwgLTIsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgMCwgLTMsIDEsIDAsIC0yLCAxMCwgLTMsIC0yLCAtMSwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMywgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtNCwgLTMsIC0yLCAtMywgLTQsIC0zLCA1LCAyLCAtMywgMiwgMCwgLTIsIC0yLCAtMSwgLTIsIDAsIDMsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0zLCAtMywgLTIsIC0yLCAtMiwgLTMsIC0yLCAyLCA1LCAtMywgMiwgMSwgLTMsIC0zLCAtMSwgLTIsIDAsIDEsIC0zLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgMCwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0zLCA1LCAtMSwgLTMsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTIsIDAsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIDAsIDIsIDIsIC0xLCA2LCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMSwgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTIsIC00LCAtMiwgLTQsIC0zLCAtMywgLTIsIDAsIDEsIC0zLCAwLCA4LCAtMywgLTIsIC0xLCAxLCAzLCAwLCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC00LCAtMSwgMCwgLTIsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTMsIDksIC0xLCAtMSwgLTMsIC0zLCAtMywgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMywgLTEsIC0yLCAtMiwgLTEsIDQsIDIsIC00LCAtMiwgLTEsIDAsIDAsIDAsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMiwgNSwgLTMsIC0xLCAwLCAwLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTQsIC00LCAtNSwgLTIsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTIsIC0yLCAxLCAtMywgLTQsIC0zLCAxNSwgMywgLTMsIC00LCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTMsIDIsIDAsIDAsIC0xLCAwLCAzLCAtMywgLTIsIC0xLCAzLCA4LCAtMSwgLTIsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTMsIC0xLCAtMywgLTMsIC0zLCAtMywgMywgMSwgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTMsIC0xLCA1LCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCA0LCA1LCAtMiwgMCwgMSwgLTEsIDAsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMCwgMCwgLTQsIC0yLCAtMywgNCwgMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDQsIDQsIC0yLCAwLCAtMywgLTIsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMiwgLTIsIC0zLCAyLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTUwID0gW1s1LCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0zLCAtMSwgMSwgMCwgLTMsIC0yLCAwLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDcsIC0xLCAtMiwgLTQsIDEsIDAsIC0zLCAwLCAtNCwgLTMsIDMsIC0yLCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMywgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCA3LCAyLCAtMiwgMCwgMCwgMCwgMSwgLTMsIC00LCAwLCAtMiwgLTQsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCA0LCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgMiwgOCwgLTQsIDAsIDIsIC0xLCAtMSwgLTQsIC00LCAtMSwgLTQsIC01LCAtMSwgMCwgLTEsIC01LCAtMywgLTQsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMiwgLTQsIDEzLCAtMywgLTMsIC0zLCAtMywgLTIsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMywgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA3LCAyLCAtMiwgMSwgLTMsIC0yLCAyLCAwLCAtNCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTMsIDAsIC00LCAtMywgMSwgLTIsIC0zLCAtMSwgLTEsIC0xLCAtMywgLTIsIC0zLCAxLCA1LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtMSwgLTMsIC0yLCAtMywgOCwgLTIsIC00LCAtNCwgLTIsIC0zLCAtNCwgLTIsIDAsIC0yLCAtMywgLTMsIC00LCAtMSwgLTIsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIC0xLCAtMywgMSwgMCwgLTIsIDEwLCAtNCwgLTMsIDAsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTMsIDIsIC00LCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTMsIC00LCAtMiwgLTMsIC00LCAtNCwgLTQsIDUsIDIsIC0zLCAyLCAwLCAtMywgLTMsIC0xLCAtMywgLTEsIDQsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTQsIC0zLCAyLCA1LCAtMywgMywgMSwgLTQsIC0zLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIC0xLCAtMywgMiwgMSwgLTIsIDAsIC0zLCAtMywgNiwgLTIsIC00LCAtMSwgMCwgLTEsIC0zLCAtMiwgLTMsIDAsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTQsIC0yLCAwLCAtMiwgLTMsIC0xLCAyLCAzLCAtMiwgNywgMCwgLTMsIC0yLCAtMSwgLTEsIDAsIDEsIC0zLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTIsIC00LCAtMywgLTQsIC0xLCAwLCAxLCAtNCwgMCwgOCwgLTQsIC0zLCAtMiwgMSwgNCwgLTEsIC00LCAtNCwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtMSwgLTQsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTQsIC0xLCAtMywgLTQsIDEwLCAtMSwgLTEsIC00LCAtMywgLTMsIC0yLCAtMSwgLTIsIC01XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIC0xLCAwLCAtMSwgLTMsIC0zLCAwLCAtMiwgLTMsIC0xLCA1LCAyLCAtNCwgLTIsIC0yLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAyLCA1LCAtMywgLTIsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTUsIC01LCAtMSwgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTEsIDEsIC00LCAtNCwgLTMsIDE1LCAyLCAtMywgLTUsIC0yLCAtMywgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgMiwgLTEsIC0xLCAtMiwgMCwgNCwgLTMsIC0yLCAtMiwgMiwgOCwgLTEsIC0zLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC00LCAtMSwgLTMsIC0zLCAtNCwgLTQsIDQsIDEsIC0zLCAxLCAtMSwgLTMsIC0yLCAwLCAtMywgLTEsIDUsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDQsIDUsIC0zLCAwLCAxLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0yLCAwLCAwLCAtNSwgLTMsIC00LCA1LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC00LCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIDAsIC0zLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU02MiA9IFtbNCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgMCwgLTMsIC0yLCAwLCAtMiwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMSwgNSwgMCwgLTIsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAyLCAtMSwgLTMsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAwLCA2LCAxLCAtMywgMCwgMCwgMCwgMSwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCAzLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMiwgMSwgNiwgLTMsIDAsIDIsIC0xLCAtMSwgLTMsIC00LCAtMSwgLTMsIC0zLCAtMSwgMCwgLTEsIC00LCAtMywgLTMsIDQsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtMywgOSwgLTMsIC00LCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMiwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTMsIC0zLCAtMiwgLTRdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNSwgMiwgLTIsIDAsIC0zLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMiwgMCwgMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTQsIDIsIDUsIC0yLCAwLCAtMywgLTMsIDEsIC0yLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNiwgLTIsIC00LCAtNCwgLTIsIC0zLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIC0xLCAtMywgMCwgMCwgLTIsIDgsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTIsIC0xLCAtMiwgLTIsIDIsIC0zLCAwLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtMSwgLTMsIC0zLCAtNCwgLTMsIDQsIDIsIC0zLCAxLCAwLCAtMywgLTIsIC0xLCAtMywgLTEsIDMsIC0zLCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0zLCAtNCwgLTEsIC0yLCAtMywgLTQsIC0zLCAyLCA0LCAtMiwgMiwgMCwgLTMsIC0yLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDIsIDAsIC0xLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTIsIDUsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAwLCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTIsIC0zLCAtMSwgMCwgLTIsIC0zLCAtMiwgMSwgMiwgLTEsIDUsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgMSwgLTMsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0zLCAtMywgLTEsIDAsIDAsIC0zLCAwLCA2LCAtNCwgLTIsIC0yLCAxLCAzLCAtMSwgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0xLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtNCwgNywgLTEsIC0xLCAtNCwgLTMsIC0yLCAtMiwgLTEsIC0yLCAtNF0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0yLCAwLCAtMSwgLTIsIC0xLCA0LCAxLCAtMywgLTIsIC0yLCAwLCAwLCAwLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDUsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTQsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTMsIC0yLCAtMywgLTEsIDEsIC00LCAtMywgLTIsIDExLCAyLCAtMywgLTQsIC0zLCAtMiwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTIsIC0zLCAtMiwgLTEsIC0yLCAtMywgMiwgLTEsIC0xLCAtMiwgLTEsIDMsIC0zLCAtMiwgLTIsIDIsIDcsIC0xLCAtMywgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgLTMsIC0zLCAzLCAxLCAtMiwgMSwgLTEsIC0yLCAtMiwgMCwgLTMsIC0xLCA0LCAtMywgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0xLCAzLCA0LCAtMywgMCwgMSwgLTEsIDAsIC0zLCAtNCwgMCwgLTMsIC0zLCAtMiwgMCwgLTEsIC00LCAtMywgLTMsIDQsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCAzLCA0LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU04MCA9IFtbNywgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtNCwgLTEsIDIsIDAsIC01LCAtNCwgLTEsIC0zLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMywgOSwgLTEsIC0zLCAtNiwgMSwgLTEsIC00LCAwLCAtNSwgLTQsIDMsIC0zLCAtNSwgLTMsIC0yLCAtMiwgLTUsIC00LCAtNCwgLTIsIDAsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0xLCA5LCAyLCAtNSwgMCwgLTEsIC0xLCAxLCAtNiwgLTYsIDAsIC00LCAtNiwgLTQsIDEsIDAsIC03LCAtNCwgLTUsIDUsIC0xLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMywgMiwgMTAsIC03LCAtMSwgMiwgLTMsIC0yLCAtNywgLTcsIC0yLCAtNiwgLTYsIC0zLCAtMSwgLTIsIC04LCAtNiwgLTYsIDYsIDEsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC02LCAtNSwgLTcsIDEzLCAtNSwgLTcsIC02LCAtNywgLTIsIC0zLCAtNiwgLTMsIC00LCAtNiwgLTIsIC0yLCAtNSwgLTUsIC0yLCAtNiwgLTcsIC00LCAtOF0sXG4gICAgICAgICAgICBbLTIsIDEsIDAsIC0xLCAtNSwgOSwgMywgLTQsIDEsIC01LCAtNCwgMiwgLTEsIC01LCAtMywgLTEsIC0xLCAtNCwgLTMsIC00LCAtMSwgNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0xLCAyLCAtNywgMywgOCwgLTQsIDAsIC02LCAtNiwgMSwgLTQsIC02LCAtMiwgLTEsIC0yLCAtNiwgLTUsIC00LCAxLCA2LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC00LCAtMSwgLTMsIC02LCAtNCwgLTQsIDksIC00LCAtNywgLTcsIC0zLCAtNSwgLTYsIC01LCAtMSwgLTMsIC02LCAtNiwgLTYsIC0yLCAtNCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMywgMCwgMSwgLTIsIC03LCAxLCAwLCAtNCwgMTIsIC02LCAtNSwgLTEsIC00LCAtMiwgLTQsIC0yLCAtMywgLTQsIDMsIC01LCAtMSwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTUsIC02LCAtNywgLTIsIC01LCAtNiwgLTcsIC02LCA3LCAyLCAtNSwgMiwgLTEsIC01LCAtNCwgLTIsIC01LCAtMywgNCwgLTYsIC02LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTYsIC03LCAtMywgLTQsIC02LCAtNywgLTUsIDIsIDYsIC00LCAzLCAwLCAtNSwgLTQsIC0zLCAtNCwgLTIsIDEsIC03LCAtNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTIsIC02LCAyLCAxLCAtMywgLTEsIC01LCAtNCwgOCwgLTMsIC01LCAtMiwgLTEsIC0xLCAtNiwgLTQsIC00LCAtMSwgMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNiwgLTMsIC0xLCAtNCwgLTUsIC00LCAyLCAzLCAtMywgOSwgMCwgLTQsIC0zLCAtMSwgLTMsIC0zLCAxLCAtNSwgLTMsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNiwgLTYsIC00LCAtNSwgLTYsIC02LCAtMiwgLTEsIDAsIC01LCAwLCAxMCwgLTYsIC00LCAtNCwgMCwgNCwgLTIsIC02LCAtNiwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC00LCAtMywgLTYsIC0zLCAtMiwgLTUsIC00LCAtNSwgLTUsIC0yLCAtNCwgLTYsIDEyLCAtMiwgLTMsIC03LCAtNiwgLTQsIC00LCAtMiwgLTMsIC04XSxcbiAgICAgICAgICAgIFsyLCAtMiwgMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMiwgLTQsIC00LCAtMSwgLTMsIC00LCAtMiwgNywgMiwgLTYsIC0zLCAtMywgMCwgLTEsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0yLCAtMiwgLTEsIC0yLCAtMywgLTMsIC0yLCAtMywgLTEsIC0xLCAtNCwgLTMsIDIsIDgsIC01LCAtMywgMCwgLTEsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTcsIC04LCAtNSwgLTQsIC02LCAtNiwgLTQsIC01LCAtNCwgLTYsIC0zLCAwLCAtNywgLTYsIC01LCAxNiwgMywgLTUsIC04LCAtNSwgLTUsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC00LCAtNiwgLTUsIC0zLCAtNSwgLTYsIDMsIC0zLCAtMiwgLTQsIC0zLCA0LCAtNiwgLTMsIC0zLCAzLCAxMSwgLTMsIC01LCAtNCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC01LCAtNiwgLTIsIC00LCAtNCwgLTYsIC01LCA0LCAxLCAtNCwgMSwgLTIsIC00LCAtMywgMCwgLTUsIC0zLCA3LCAtNiwgLTQsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0yLCA1LCA2LCAtNiwgLTEsIDEsIC0yLCAtMSwgLTYsIC03LCAtMSwgLTUsIC02LCAtNCwgMCwgLTEsIC04LCAtNSwgLTYsIDYsIDAsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTIsIDAsIC0xLCAxLCAtNywgNSwgNiwgLTQsIDAsIC02LCAtNSwgMSwgLTMsIC02LCAtMiwgLTEsIC0yLCAtNSwgLTQsIC00LCAwLCA2LCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMSwgLTUsIC0zLCAtMiwgLTMsIC0xLCAtMiwgLThdLFxuICAgICAgICAgICAgWy04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTkwID0gW1s1LCAtMiwgLTIsIC0zLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMSwgMSwgMCwgLTQsIC0zLCAtMSwgLTIsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCA2LCAtMSwgLTMsIC01LCAxLCAtMSwgLTMsIDAsIC00LCAtMywgMiwgLTIsIC00LCAtMywgLTEsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDcsIDEsIC00LCAwLCAtMSwgLTEsIDAsIC00LCAtNCwgMCwgLTMsIC00LCAtMywgMCwgMCwgLTUsIC0zLCAtNCwgNCwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC0zLCAxLCA3LCAtNSwgLTEsIDEsIC0yLCAtMiwgLTUsIC01LCAtMSwgLTQsIC01LCAtMywgLTEsIC0yLCAtNiwgLTQsIC01LCA0LCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTQsIC01LCA5LCAtNCwgLTYsIC00LCAtNSwgLTIsIC0yLCAtNCwgLTIsIC0zLCAtNCwgLTIsIC0yLCAtNCwgLTQsIC0yLCAtNCwgLTUsIC0zLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIC0xLCAtNCwgNywgMiwgLTMsIDEsIC00LCAtMywgMSwgMCwgLTQsIC0yLCAtMSwgLTEsIC0zLCAtMywgLTMsIC0xLCA0LCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDEsIC02LCAyLCA2LCAtMywgLTEsIC00LCAtNCwgMCwgLTMsIC01LCAtMiwgLTEsIC0xLCAtNSwgLTQsIC0zLCAwLCA0LCAtMiwgLTZdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIDYsIC0zLCAtNSwgLTUsIC0yLCAtNCwgLTUsIC0zLCAtMSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgMCwgMCwgLTIsIC01LCAxLCAtMSwgLTMsIDgsIC00LCAtNCwgLTEsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTMsIDEsIC00LCAtMSwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC00LCAtNSwgLTIsIC00LCAtNCwgLTUsIC00LCA1LCAxLCAtNCwgMSwgLTEsIC00LCAtMywgLTEsIC00LCAtMiwgMywgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC01LCAtMiwgLTMsIC00LCAtNSwgLTQsIDEsIDUsIC0zLCAyLCAwLCAtNCwgLTMsIC0yLCAtMywgLTIsIDAsIC01LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC00LCAxLCAwLCAtMiwgLTEsIC00LCAtMywgNiwgLTIsIC00LCAtMiwgLTEsIC0xLCAtNSwgLTMsIC0zLCAtMSwgMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0zLCAtNCwgLTIsIDAsIC0zLCAtNCwgLTMsIDEsIDIsIC0yLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0yLCAwLCAtNCwgLTIsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNCwgLTUsIC0zLCAtNCwgLTUsIC01LCAtMiwgLTEsIDAsIC00LCAtMSwgNywgLTQsIC0zLCAtMywgMCwgMywgLTIsIC00LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0zLCAtMywgLTQsIC0yLCAtMiwgLTMsIC0zLCAtNCwgLTQsIC0yLCAtMywgLTQsIDgsIC0yLCAtMiwgLTUsIC00LCAtMywgLTMsIC0yLCAtMiwgLTZdLFxuICAgICAgICAgICAgWzEsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTMsIC0yLCA1LCAxLCAtNCwgLTMsIC0yLCAwLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0zLCAtMiwgMSwgNiwgLTQsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTUsIC02LCAtNCwgLTMsIC01LCAtNCwgLTMsIC00LCAtMywgLTUsIC0yLCAwLCAtNSwgLTQsIC00LCAxMSwgMiwgLTMsIC02LCAtNCwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIC0zLCAtNCwgLTQsIC0zLCAtNCwgLTUsIDEsIC0yLCAtMiwgLTMsIC0yLCAzLCAtNCwgLTMsIC0yLCAyLCA4LCAtMywgLTQsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC01LCAtMiwgLTMsIC0zLCAtNSwgLTQsIDMsIDAsIC0zLCAwLCAtMiwgLTMsIC0yLCAtMSwgLTMsIC0zLCA1LCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0yLCA0LCA0LCAtNCwgLTEsIDAsIC0yLCAtMSwgLTUsIC01LCAtMSwgLTQsIC00LCAtMywgMCwgLTEsIC02LCAtNCwgLTQsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDAsIC0xLCAwLCAtNSwgNCwgNCwgLTMsIDAsIC00LCAtNCwgMSwgLTIsIC00LCAtMiwgLTEsIC0xLCAtNCwgLTMsIC0zLCAwLCA0LCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgMV1dO1xuICAgICAgICB0aGlzLk5VQ0xFT1RJREVTID0gW1sxLCAtMSwgLTEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgMSwgLTEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgLTEsIDEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAxXV07XG4gICAgICAgIHRoaXMuUEFNMzAgPSBbWzYsIC03LCAtNCwgLTMsIC02LCAtNCwgLTIsIC0yLCAtNywgLTUsIC02LCAtNywgLTUsIC04LCAtMiwgMCwgLTEsIC0xMywgLTgsIC0yLCAtMywgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy03LCA4LCAtNiwgLTEwLCAtOCwgLTIsIC05LCAtOSwgLTIsIC01LCAtOCwgMCwgLTQsIC05LCAtNCwgLTMsIC02LCAtMiwgLTEwLCAtOCwgLTcsIC00LCAtNiwgLTE3XSxcbiAgICAgICAgICAgIFstNCwgLTYsIDgsIDIsIC0xMSwgLTMsIC0yLCAtMywgMCwgLTUsIC03LCAtMSwgLTksIC05LCAtNiwgMCwgLTIsIC04LCAtNCwgLTgsIDYsIC0zLCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTEwLCAyLCA4LCAtMTQsIC0yLCAyLCAtMywgLTQsIC03LCAtMTIsIC00LCAtMTEsIC0xNSwgLTgsIC00LCAtNSwgLTE1LCAtMTEsIC04LCA2LCAxLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC0xMSwgLTE0LCAxMCwgLTE0LCAtMTQsIC05LCAtNywgLTYsIC0xNSwgLTE0LCAtMTMsIC0xMywgLTgsIC0zLCAtOCwgLTE1LCAtNCwgLTYsIC0xMiwgLTE0LCAtOSwgLTE3XSxcbiAgICAgICAgICAgIFstNCwgLTIsIC0zLCAtMiwgLTE0LCA4LCAxLCAtNywgMSwgLTgsIC01LCAtMywgLTQsIC0xMywgLTMsIC01LCAtNSwgLTEzLCAtMTIsIC03LCAtMywgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC05LCAtMiwgMiwgLTE0LCAxLCA4LCAtNCwgLTUsIC01LCAtOSwgLTQsIC03LCAtMTQsIC01LCAtNCwgLTYsIC0xNywgLTgsIC02LCAxLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0zLCAtMywgLTksIC03LCAtNCwgNiwgLTksIC0xMSwgLTEwLCAtNywgLTgsIC05LCAtNiwgLTIsIC02LCAtMTUsIC0xNCwgLTUsIC0zLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTcsIC0yLCAwLCAtNCwgLTcsIDEsIC01LCAtOSwgOSwgLTksIC02LCAtNiwgLTEwLCAtNiwgLTQsIC02LCAtNywgLTcsIC0zLCAtNiwgLTEsIC0xLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNywgLTYsIC04LCAtNSwgLTExLCAtOSwgOCwgLTEsIC02LCAtMSwgLTIsIC04LCAtNywgLTIsIC0xNCwgLTYsIDIsIC02LCAtNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTYsIC04LCAtNywgLTEyLCAtMTUsIC01LCAtOSwgLTEwLCAtNiwgLTEsIDcsIC04LCAxLCAtMywgLTcsIC04LCAtNywgLTYsIC03LCAtMiwgLTksIC03LCAtNiwgLTE3XSxcbiAgICAgICAgICAgIFstNywgMCwgLTEsIC00LCAtMTQsIC0zLCAtNCwgLTcsIC02LCAtNiwgLTgsIDcsIC0yLCAtMTQsIC02LCAtNCwgLTMsIC0xMiwgLTksIC05LCAtMiwgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNCwgLTksIC0xMSwgLTEzLCAtNCwgLTcsIC04LCAtMTAsIC0xLCAxLCAtMiwgMTEsIC00LCAtOCwgLTUsIC00LCAtMTMsIC0xMSwgLTEsIC0xMCwgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy04LCAtOSwgLTksIC0xNSwgLTEzLCAtMTMsIC0xNCwgLTksIC02LCAtMiwgLTMsIC0xNCwgLTQsIDksIC0xMCwgLTYsIC05LCAtNCwgMiwgLTgsIC0xMCwgLTEzLCAtOCwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC02LCAtOCwgLTgsIC0zLCAtNSwgLTYsIC00LCAtOCwgLTcsIC02LCAtOCwgLTEwLCA4LCAtMiwgLTQsIC0xNCwgLTEzLCAtNiwgLTcsIC00LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFswLCAtMywgMCwgLTQsIC0zLCAtNSwgLTQsIC0yLCAtNiwgLTcsIC04LCAtNCwgLTUsIC02LCAtMiwgNiwgMCwgLTUsIC03LCAtNiwgLTEsIC01LCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC0yLCAtNSwgLTgsIC01LCAtNiwgLTYsIC03LCAtMiwgLTcsIC0zLCAtNCwgLTksIC00LCAwLCA3LCAtMTMsIC02LCAtMywgLTMsIC02LCAtNCwgLTE3XSxcbiAgICAgICAgICAgIFstMTMsIC0yLCAtOCwgLTE1LCAtMTUsIC0xMywgLTE3LCAtMTUsIC03LCAtMTQsIC02LCAtMTIsIC0xMywgLTQsIC0xNCwgLTUsIC0xMywgMTMsIC01LCAtMTUsIC0xMCwgLTE0LCAtMTEsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC0xMCwgLTQsIC0xMSwgLTQsIC0xMiwgLTgsIC0xNCwgLTMsIC02LCAtNywgLTksIC0xMSwgMiwgLTEzLCAtNywgLTYsIC01LCAxMCwgLTcsIC02LCAtOSwgLTcsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC04LCAtOCwgLTgsIC02LCAtNywgLTYsIC01LCAtNiwgMiwgLTIsIC05LCAtMSwgLTgsIC02LCAtNiwgLTMsIC0xNSwgLTcsIDcsIC04LCAtNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC03LCA2LCA2LCAtMTIsIC0zLCAxLCAtMywgLTEsIC02LCAtOSwgLTIsIC0xMCwgLTEwLCAtNywgLTEsIC0zLCAtMTAsIC02LCAtOCwgNiwgMCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgMSwgLTE0LCA2LCA2LCAtNSwgLTEsIC02LCAtNywgLTQsIC01LCAtMTMsIC00LCAtNSwgLTYsIC0xNCwgLTksIC02LCAwLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTYsIC0zLCAtNSwgLTksIC01LCAtNSwgLTUsIC01LCAtNSwgLTYsIC01LCAtNSwgLTgsIC01LCAtMywgLTQsIC0xMSwgLTcsIC01LCAtNSwgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAxXV07XG4gICAgICAgIHRoaXMuUEFNNzAgPSBbWzUsIC00LCAtMiwgLTEsIC00LCAtMiwgLTEsIDAsIC00LCAtMiwgLTQsIC00LCAtMywgLTYsIDAsIDEsIDEsIC05LCAtNSwgLTEsIC0xLCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDgsIC0zLCAtNiwgLTUsIDAsIC01LCAtNiwgMCwgLTMsIC02LCAyLCAtMiwgLTcsIC0yLCAtMSwgLTQsIDAsIC03LCAtNSwgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIDYsIDMsIC03LCAtMSwgMCwgLTEsIDEsIC0zLCAtNSwgMCwgLTUsIC02LCAtMywgMSwgMCwgLTYsIC0zLCAtNSwgNSwgLTEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNiwgMywgNiwgLTksIDAsIDMsIC0xLCAtMSwgLTUsIC04LCAtMiwgLTcsIC0xMCwgLTQsIC0xLCAtMiwgLTEwLCAtNywgLTUsIDUsIDIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNSwgLTcsIC05LCA5LCAtOSwgLTksIC02LCAtNSwgLTQsIC0xMCwgLTksIC05LCAtOCwgLTUsIC0xLCAtNSwgLTExLCAtMiwgLTQsIC04LCAtOSwgLTYsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIDAsIC0xLCAwLCAtOSwgNywgMiwgLTQsIDIsIC01LCAtMywgLTEsIC0yLCAtOSwgLTEsIC0zLCAtMywgLTgsIC04LCAtNCwgLTEsIDUsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgMCwgMywgLTksIDIsIDYsIC0yLCAtMiwgLTQsIC02LCAtMiwgLTQsIC05LCAtMywgLTIsIC0zLCAtMTEsIC02LCAtNCwgMiwgNSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbMCwgLTYsIC0xLCAtMSwgLTYsIC00LCAtMiwgNiwgLTYsIC02LCAtNywgLTUsIC02LCAtNywgLTMsIDAsIC0zLCAtMTAsIC05LCAtMywgLTEsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgMCwgMSwgLTEsIC01LCAyLCAtMiwgLTYsIDgsIC02LCAtNCwgLTMsIC02LCAtNCwgLTIsIC0zLCAtNCwgLTUsIC0xLCAtNCwgMCwgMSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTUsIC00LCAtNSwgLTQsIC02LCAtNiwgNywgMSwgLTQsIDEsIDAsIC01LCAtNCwgLTEsIC05LCAtNCwgMywgLTQsIC00LCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgLTYsIC01LCAtOCwgLTEwLCAtMywgLTYsIC03LCAtNCwgMSwgNiwgLTUsIDIsIC0xLCAtNSwgLTYsIC00LCAtNCwgLTQsIDAsIC02LCAtNCwgLTQsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDIsIDAsIC0yLCAtOSwgLTEsIC0yLCAtNSwgLTMsIC00LCAtNSwgNiwgMCwgLTksIC00LCAtMiwgLTEsIC03LCAtNywgLTYsIC0xLCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTMsIC0yLCAtNSwgLTcsIC05LCAtMiwgLTQsIC02LCAtNiwgMSwgMiwgMCwgMTAsIC0yLCAtNSwgLTMsIC0yLCAtOCwgLTcsIDAsIC02LCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTYsIC03LCAtNiwgLTEwLCAtOCwgLTksIC05LCAtNywgLTQsIDAsIC0xLCAtOSwgLTIsIDgsIC03LCAtNCwgLTYsIC0yLCA0LCAtNSwgLTcsIC05LCAtNSwgLTExXSxcbiAgICAgICAgICAgIFswLCAtMiwgLTMsIC00LCAtNSwgLTEsIC0zLCAtMywgLTIsIC01LCAtNSwgLTQsIC01LCAtNywgNywgMCwgLTIsIC05LCAtOSwgLTMsIC00LCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIC0xLCAtMSwgLTMsIC0yLCAwLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAwLCA1LCAyLCAtMywgLTUsIC0zLCAwLCAtMiwgLTEsIC0xMV0sXG4gICAgICAgICAgICBbMSwgLTQsIDAsIC0yLCAtNSwgLTMsIC0zLCAtMywgLTQsIC0xLCAtNCwgLTEsIC0yLCAtNiwgLTIsIDIsIDYsIC04LCAtNCwgLTEsIC0xLCAtMywgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTksIDAsIC02LCAtMTAsIC0xMSwgLTgsIC0xMSwgLTEwLCAtNSwgLTksIC00LCAtNywgLTgsIC0yLCAtOSwgLTMsIC04LCAxMywgLTMsIC0xMCwgLTcsIC0xMCwgLTcsIC0xMV0sXG4gICAgICAgICAgICBbLTUsIC03LCAtMywgLTcsIC0yLCAtOCwgLTYsIC05LCAtMSwgLTQsIC00LCAtNywgLTcsIDQsIC05LCAtNSwgLTQsIC0zLCA5LCAtNSwgLTQsIC03LCAtNSwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTUsIC01LCAtNSwgLTQsIC00LCAtNCwgLTMsIC00LCAzLCAwLCAtNiwgMCwgLTUsIC0zLCAtMywgLTEsIC0xMCwgLTUsIDYsIC01LCAtNCwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC00LCA1LCA1LCAtOCwgLTEsIDIsIC0xLCAwLCAtNCwgLTYsIC0xLCAtNiwgLTcsIC00LCAwLCAtMSwgLTcsIC00LCAtNSwgNSwgMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMSwgMiwgLTksIDUsIDUsIC0zLCAxLCAtNCwgLTQsIC0yLCAtMywgLTksIC0yLCAtMiwgLTMsIC0xMCwgLTcsIC00LCAxLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0yLCAtMywgLTYsIC0yLCAtMywgLTMsIC0zLCAtMywgLTQsIC0zLCAtMywgLTUsIC0zLCAtMSwgLTIsIC03LCAtNSwgLTIsIC0yLCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0yNTAgPSBbWzIsIC0yLCAwLCAwLCAtMiwgMCwgMCwgMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMywgMSwgMSwgMSwgLTYsIC0zLCAwLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbLTIsIDYsIDAsIC0xLCAtNCwgMSwgLTEsIC0zLCAyLCAtMiwgLTMsIDMsIDAsIC00LCAwLCAwLCAtMSwgMiwgLTQsIC0yLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAwLCAyLCAyLCAtNCwgMSwgMSwgMCwgMiwgLTIsIC0zLCAxLCAtMiwgLTMsIDAsIDEsIDAsIC00LCAtMiwgLTIsIDIsIDEsIDAsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMiwgNCwgLTUsIDIsIDMsIDEsIDEsIC0yLCAtNCwgMCwgLTMsIC02LCAtMSwgMCwgMCwgLTcsIC00LCAtMiwgMywgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC00LCAtNSwgMTIsIC01LCAtNSwgLTMsIC0zLCAtMiwgLTYsIC01LCAtNSwgLTQsIC0zLCAwLCAtMiwgLTgsIDAsIC0yLCAtNCwgLTUsIC0zLCAtOF0sXG4gICAgICAgICAgICBbMCwgMSwgMSwgMiwgLTUsIDQsIDIsIC0xLCAzLCAtMiwgLTIsIDEsIC0xLCAtNSwgMCwgLTEsIC0xLCAtNSwgLTQsIC0yLCAxLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAxLCAzLCAtNSwgMiwgNCwgMCwgMSwgLTIsIC0zLCAwLCAtMiwgLTUsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzEsIC0zLCAwLCAxLCAtMywgLTEsIDAsIDUsIC0yLCAtMywgLTQsIC0yLCAtMywgLTUsIDAsIDEsIDAsIC03LCAtNSwgLTEsIDAsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDIsIDIsIDEsIC0zLCAzLCAxLCAtMiwgNiwgLTIsIC0yLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgLTMsIDAsIC0yLCAxLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMywgLTIsIDUsIDIsIC0yLCAyLCAxLCAtMiwgLTEsIDAsIC01LCAtMSwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC00LCAtNiwgLTIsIC0zLCAtNCwgLTIsIDIsIDYsIC0zLCA0LCAyLCAtMywgLTMsIC0yLCAtMiwgLTEsIDIsIC0zLCAtMywgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMywgMSwgMCwgLTUsIDEsIDAsIC0yLCAwLCAtMiwgLTMsIDUsIDAsIC01LCAtMSwgMCwgMCwgLTMsIC00LCAtMiwgMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTIsIC0zLCAtNSwgLTEsIC0yLCAtMywgLTIsIDIsIDQsIDAsIDYsIDAsIC0yLCAtMiwgLTEsIC00LCAtMiwgMiwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTMsIC02LCAtNCwgLTUsIC01LCAtNSwgLTIsIDEsIDIsIC01LCAwLCA5LCAtNSwgLTMsIC0zLCAwLCA3LCAtMSwgLTQsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWzEsIDAsIDAsIC0xLCAtMywgMCwgLTEsIDAsIDAsIC0yLCAtMywgLTEsIC0yLCAtNSwgNiwgMSwgMCwgLTYsIC01LCAtMSwgLTEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMSwgMCwgMCwgLTEsIDAsIDEsIC0xLCAtMSwgLTMsIDAsIC0yLCAtMywgMSwgMiwgMSwgLTIsIC0zLCAtMSwgMCwgMCwgMCwgLThdLFxuICAgICAgICAgICAgWzEsIC0xLCAwLCAwLCAtMiwgLTEsIDAsIDAsIC0xLCAwLCAtMiwgMCwgLTEsIC0zLCAwLCAxLCAzLCAtNSwgLTMsIDAsIDAsIC0xLCAwLCAtOF0sXG4gICAgICAgICAgICBbLTYsIDIsIC00LCAtNywgLTgsIC01LCAtNywgLTcsIC0zLCAtNSwgLTIsIC0zLCAtNCwgMCwgLTYsIC0yLCAtNSwgMTcsIDAsIC02LCAtNSwgLTYsIC00LCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMiwgLTQsIDAsIC00LCAtNCwgLTUsIDAsIC0xLCAtMSwgLTQsIC0yLCA3LCAtNSwgLTMsIC0zLCAwLCAxMCwgLTIsIC0zLCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTIsIDQsIDIsIC0yLCAyLCAtMSwgLTEsIC0xLCAwLCAtNiwgLTIsIDQsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMiwgMywgLTQsIDEsIDMsIDAsIDEsIC0yLCAtMywgMSwgLTIsIC00LCAtMSwgMCwgMCwgLTUsIC0zLCAtMiwgMywgMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAwLCAxLCAzLCAtNSwgMywgMywgMCwgMiwgLTIsIC0zLCAwLCAtMiwgLTUsIDAsIDAsIC0xLCAtNiwgLTQsIC0yLCAyLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAwLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuU0NITkVJREVSID0gW1sxMS42LCAtMi43LCA5LjcsIC0xLjcsIC0yLjcsIC02LjQsIC0zLjksIC01LjYsIDUuMSwgLTUuMCwgMy42LCAtNC4yLCAtNi4zLCAtMTMuMCwgLTcuMSwgLTExLjUsIDAuNCwgLTYuMCwgLTEuOSwgLTUuMywgLTguNSwgLTExLjIsIC04LjksIC0xMC44LCAyLjEsIDAuMCwgMS40LCAwLjIsIC0xMC4yLCAtMTMuNSwgLTEzLjAsIC0xMi41LCAtMi42LCAtOC41LCAtNS4wLCAtOC4xLCAtNi4zLCAtOS45LCAtNy41LCAtOS4wLCAtNy4xLCAtMTAuMiwgLTguMiwgLTkuMiwgLTguMiwgLTEyLjUsIC0xMS4xLCAtMTEuNCwgLTUwLjAsIC0xNC44LCAtNTAuMCwgLTEzLjgsIC03LjMsIC0xMC4xLCAtOC40LCAtOS4xLCAtNTAuMCwgLTEzLjAsIC0xMy41LCAtMTIuNCwgLTEwLjcsIC0xOC4xLCAtMTEuOCwgLTE3LjIsXSxcbiAgICAgICAgICAgIFstMi43LCAxMy4wLCAtMy4zLCAxMC45LCAtMy41LCAtMC40LCAtMy4zLCAtMS44LCAtNS40LCA0LjYsIC01LjUsIDMuMCwgLTEwLjIsIC03LjksIC05LjksIC05LjYsIC01LjAsIDAuNSwgLTUuNSwgLTEuMCwgLTEwLjMsIC04LjEsIC05LjQsIC05LjYsIC04LjEsIC01LjAsIC03LjMsIC02LjMsIC0xMy40LCAtMTEuMywgLTE0LjQsIC0xMi45LCAtNi4zLCAwLjgsIC02LjQsIC0xLjEsIC03LjQsIC01LjAsIC02LjIsIC02LjUsIC01LjYsIC0xLjYsIC00LjcsIC0zLjAsIC0xMC44LCAtOC43LCAtMTEuOSwgLTEwLjAsIC01MC4wLCAtNi4yLCAtNTAuMCwgLTcuNSwgLTYuMywgLTQuMywgLTYuMiwgLTUuNCwgLTUwLjAsIC03LjAsIC0xNi4zLCAtOC4yLCAtMTMuMiwgLTEyLjMsIC0xMy4xLCAtMTMuMyxdLFxuICAgICAgICAgICAgWzkuNywgLTMuMywgMTEuNiwgLTIuOCwgLTQuNSwgLTYuNywgLTMuMSwgLTYuOSwgMy4zLCAtNS41LCA0LjgsIC01LjEsIC04LjksIC0xMy4yLCAtNS43LCAtMTIuNiwgLTEuNSwgLTYuMSwgLTAuNiwgLTYuMSwgLTEwLjAsIC0xMS44LCAtOC42LCAtMTEuOSwgMS4yLCAwLjUsIDIuMiwgMC4xLCAtMTEuOCwgLTE0LjAsIC0xMS45LCAtMTMuNCwgLTQuOSwgLTkuMSwgLTMuNCwgLTguOSwgLTguMCwgLTEwLjAsIC03LjIsIC0xMC4wLCAtOS4xLCAtMTAuMiwgLTcuMSwgLTkuOSwgLTEwLjEsIC0xMy4wLCAtMTAuNiwgLTEyLjcsIC01MC4wLCAtMTQuOSwgLTUwLjAsIC0xNC40LCAtOC45LCAtMTAuOCwgLTguOSwgLTEwLjQsIC01MC4wLCAtMTMuMSwgLTExLjgsIC0xMy4wLCAtMTIuNCwgLTE5LjQsIC0xMS41LCAtMTcuOCxdLFxuICAgICAgICAgICAgWy0xLjcsIDEwLjksIC0yLjgsIDEyLjksIC0yLjcsIC0yLjIsIC0yLjgsIDAuMiwgLTQuOCwgMi45LCAtNS4yLCA1LjIsIC05LjEsIC05LjUsIC05LjAsIC03LjAsIC00LjAsIC0xLjAsIC01LjAsIDEuMCwgLTkuMCwgLTguOCwgLTguOSwgLTcuNywgLTcuMCwgLTYuOCwgLTcuMSwgLTQuMywgLTEyLjQsIC0xMi45LCAtMTMuOSwgLTEwLjAsIC00LjksIC0wLjcsIC01LjYsIDEuNCwgLTYuMCwgLTYuNSwgLTYuMiwgLTQuOCwgLTUuMSwgLTMuMiwgLTUuMCwgLTEuMiwgLTkuOCwgLTkuOSwgLTExLjMsIC04LjIsIC01MC4wLCAtNy42LCAtNTAuMCwgLTUuMSwgLTUuNSwgLTUuOCwgLTUuOSwgLTQuMiwgLTUwLjAsIC04LjMsIC0xNS41LCAtNS45LCAtMTEuNiwgLTE0LjIsIC0xMi4wLCAtMTEuNixdLFxuICAgICAgICAgICAgWy0yLjcsIC0zLjUsIC00LjUsIC0yLjcsIDExLjcsIDkuMCwgMTAuNiwgOS42LCAtMy4yLCAtMC43LCAtNS4xLCAtMC40LCAwLjcsIC00LjYsIC0wLjQsIC0zLjYsIC00LjgsIC04LjksIC02LjUsIC03LjgsIC0xLjQsIC00LjEsIC0yLjksIC0zLjMsIC04LjAsIC05LjEsIC04LjAsIC04LjIsIC02LjAsIC05LjMsIC03LjcsIC04LjUsIC02LjQsIC0xMC4xLCAtNy41LCAtOC42LCAyLjgsIC0wLjcsIDAuOSwgMC4xLCAtNS45LCAtNy4zLCAtNi41LCAtNi41LCAtMC40LCAtMy45LCAtMi42LCAtMy4xLCAtNTAuMCwgLTE0LjYsIC01MC4wLCAtMTIuNiwgMi45LCAwLjEsIDEuOCwgMS4wLCAtNTAuMCwgLTkuMiwgLTEzLjYsIC03LjcsIC00LjgsIC0xMi4yLCAtNi4yLCAtMTEuMCxdLFxuICAgICAgICAgICAgWy02LjQsIC0wLjQsIC02LjcsIC0yLjIsIDkuMCwgMTIuMywgOS44LCA5LjYsIC03LjEsIDIuNCwgLTcuMiwgMC4zLCAtMi45LCAtMS4yLCAtMy4wLCAtMy4zLCAtNy42LCAtNi43LCAtOC4xLCAtNy45LCAtNC45LCAtMS45LCAtNC41LCAtMy44LCAtOS41LCAtNy44LCAtOS4zLCAtOC45LCAtOS40LCAtNy4xLCAtOS4wLCAtOS4wLCAtOS40LCAtNy41LCAtOS4zLCAtOS4yLCAtMC43LCAyLjYsIDAuMiwgLTAuMSwgLTguMCwgLTQuNiwgLTcuNywgLTYuMSwgLTMuNiwgLTEuMCwgLTQuMSwgLTMuMSwgLTUwLjAsIC0xMS42LCAtNTAuMCwgLTExLjYsIDAuMiwgMi4zLCAwLjQsIDAuNSwgLTUwLjAsIC02LjUsIC0xNS4zLCAtNy44LCAtOC40LCAtOS41LCAtOC4zLCAtMTEuMSxdLFxuICAgICAgICAgICAgWy0zLjksIC0zLjMsIC0zLjEsIC0yLjgsIDEwLjYsIDkuOCwgMTIuMiwgOS44LCAtNC45LCAwLjEsIC0zLjYsIC0wLjIsIC0xLjcsIC00LjEsIDAuOSwgLTMuNSwgLTUuOSwgLTguOSwgLTUuNiwgLTguNSwgLTMuOSwgLTMuOSwgLTIuMiwgLTQuNSwgLTcuMywgLTcuNSwgLTYuNCwgLTguNSwgLTcuMSwgLTguMiwgLTYuNywgLTcuOCwgLTcuOSwgLTkuMSwgLTcuMSwgLTkuNCwgMC45LCAtMC4yLCAyLjUsIC0wLjMsIC02LjksIC02LjUsIC01LjUsIC02LjgsIC0xLjcsIC0zLjQsIC0xLjcsIC0yLjgsIC01MC4wLCAtMTMuMCwgLTUwLjAsIC0xMS41LCAxLjUsIDAuNywgMi43LCAwLjYsIC01MC4wLCAtOC45LCAtMTIuMSwgLTcuNCwgLTYuMSwgLTExLjUsIC01LjQsIC0xMC40LF0sXG4gICAgICAgICAgICBbLTUuNiwgLTEuOCwgLTYuOSwgMC4yLCA5LjYsIDkuNiwgOS44LCAxMS42LCAtNi42LCAwLjksIC03LjIsIDIuNSwgLTIuMywgLTMuNCwgLTIuMywgLTAuNiwgLTYuNSwgLTguMiwgLTguMCwgLTYuMywgLTMuNywgLTMuNSwgLTMuOSwgLTEuNiwgLTkuOSwgLTguOSwgLTkuNiwgLTcuMCwgLTguNiwgLTguOSwgLTguOCwgLTYuOCwgLTguNiwgLTguMiwgLTguOCwgLTYuOCwgMC4zLCAwLjEsIDAuMiwgMi40LCAtNy40LCAtNi4yLCAtNi45LCAtNC40LCAtMi45LCAtMi45LCAtMy41LCAtMC45LCAtNTAuMCwgLTEyLjIsIC01MC4wLCAtMTAuMSwgMS4yLCAwLjYsIDEuMiwgMi40LCAtNTAuMCwgLTcuNiwgLTE2LjEsIC01LjgsIC03LjIsIC0xMC44LCAtNy40LCAtOS4wLF0sXG4gICAgICAgICAgICBbNS4xLCAtNS40LCAzLjMsIC00LjgsIC0zLjIsIC03LjEsIC00LjksIC02LjYsIDEzLjMsIC0yLjgsIDExLjIsIC0xLjksIC01LjcsIC0xMi41LCAtNy4yLCAtMTEuNiwgLTAuNywgLTQuOCwgLTMuMSwgLTQuMywgLTEwLjAsIC0xMS42LCAtOC44LCAtMTEuNywgMTAuNSwgNy43LCA5LjEsIDguNSwgLTkuOCwgLTEyLjcsIC0xMS43LCAtMTEuOCwgLTYuMywgLTExLjQsIC04LjgsIC0xMS4wLCAtNy41LCAtMTAuMywgLTguMywgLTkuOSwgLTEuOSwgLTYuNywgLTQuMSwgLTYuNCwgLTcuOSwgLTEyLjUsIC0xMS40LCAtMTEuNywgLTUwLjAsIC0xNC4wLCAtNTAuMCwgLTEzLjIsIC04LjUsIC0xMC40LCAtOS4xLCAtOS42LCAtNTAuMCwgLTkuOCwgLTcuNywgLTguOCwgLTEwLjMsIC0xNy45LCAtMTEuOCwgLTE2LjAsXSxcbiAgICAgICAgICAgIFstNS4wLCA0LjYsIC01LjUsIDIuOSwgLTAuNywgMi40LCAwLjEsIDAuOSwgLTIuOCwgMTIuOCwgLTIuNiwgMTEuMCwgLTguNCwgLTYuMywgLTguMywgLTcuNywgLTYuMSwgLTIuOSwgLTYuNSwgLTQuMiwgLTguNSwgLTUuOSwgLTcuNSwgLTcuNywgLTUuNSwgLTIuNCwgLTUuNSwgLTQuMSwgLTEyLjksIC0xMC4zLCAtMTIuNywgLTExLjMsIC03LjQsIC0zLjEsIC03LjQsIC00LjksIC00LjQsIC0xLjgsIC0zLjUsIC0zLjUsIC0xLjYsIDMuMCwgLTAuOCwgMC45LCAtOC40LCAtNi4zLCAtOS42LCAtNy4zLCAtNTAuMCwgLTkuMCwgLTUwLjAsIC05LjcsIC0yLjMsIC0wLjIsIC0xLjIsIC0xLjUsIC01MC4wLCAtMC43LCAtMTMuMywgLTIuMCwgLTExLjgsIC0xMS45LCAtMTIuMywgLTEyLjcsXSxcbiAgICAgICAgICAgIFszLjYsIC01LjUsIDQuOCwgLTUuMiwgLTUuMSwgLTcuMiwgLTMuNiwgLTcuMiwgMTEuMiwgLTIuNiwgMTMuNCwgLTIuMSwgLTcuNywgLTEyLjUsIC01LjMsIC0xMS45LCAtMi4yLCAtNC40LCAtMS45LCAtNC44LCAtMTAuMiwgLTExLjUsIC04LjEsIC0xMi4wLCA5LjMsIDguMiwgMTAuMCwgOC4wLCAtMTAuOCwgLTExLjksIC0xMC43LCAtMTIuNCwgLTguMiwgLTExLjgsIC02LjksIC0xMS41LCAtOC40LCAtOS45LCAtNy4xLCAtMTAuNiwgLTQuNywgLTYuOCwgLTEuMiwgLTcuMCwgLTkuOCwgLTExLjYsIC05LjYsIC0xMi4xLCAtNTAuMCwgLTE0LjEsIC01MC4wLCAtMTIuNywgLTEwLjAsIC0xMC44LCAtOC44LCAtMTAuNSwgLTUwLjAsIC05LjIsIC00LjIsIC05LjMsIC0xMS4wLCAtMTguMiwgLTExLjEsIC0xNi4xLF0sXG4gICAgICAgICAgICBbLTQuMiwgMy4wLCAtNS4xLCA1LjIsIC0wLjQsIDAuMywgLTAuMiwgMi41LCAtMS45LCAxMS4wLCAtMi4xLCAxMy4yLCAtNy42LCAtOC41LCAtOC4wLCAtNS4zLCAtNS42LCAtNC41LCAtNi44LCAtMi40LCAtNy44LCAtNy45LCAtNy45LCAtNi4yLCAtNS43LCAtNS4xLCAtNS40LCAtMi4xLCAtMTIuNCwgLTEyLjMsIC0xMy4xLCAtMTAuMSwgLTYuNiwgLTQuNCwgLTYuOSwgLTIuNiwgLTMuNiwgLTMuOCwgLTMuNywgLTIuMCwgLTEuNCwgMC44LCAtMC45LCAzLjAsIC04LjIsIC04LjEsIC05LjIsIC01LjgsIC01MC4wLCAtMTAuMSwgLTUwLjAsIC03LjQsIC0xLjcsIC0yLjAsIC0xLjUsIC0wLjUsIC01MC4wLCAtMi4xLCAtMTIuNiwgLTAuNCwgLTExLjYsIC0xMy45LCAtMTEuNCwgLTExLjEsXSxcbiAgICAgICAgICAgIFstNi4zLCAtMTAuMiwgLTguOSwgLTkuMSwgMC43LCAtMi45LCAtMS43LCAtMi4zLCAtNS43LCAtOC40LCAtNy43LCAtNy42LCAxMy4yLCA5LjYsIDMuNSwgOS43LCAtOC43LCAtMTIuNCwgLTEwLjcsIC0xMC43LCAtNy44LCAtMTAuMiwgLTguOCwgLTkuNiwgLTkuNSwgLTExLjksIC0xMC45LCAtMTAuNSwgMi4zLCAtMC40LCAtMC4yLCAtMC4zLCAtOS43LCAtMTUuNSwgLTExLjQsIC0xMy43LCAtMy4wLCAtNi40LCAtNC4xLCAtNS40LCAtOS42LCAtMTEuOSwgLTEwLjUsIC0xMS44LCA2LjIsIDMuMywgMy43LCAzLjYsIC01MC4wLCAtMTMuNiwgLTUwLjAsIC0xMS45LCAtNS42LCAtOC44LCAtNy4yLCAtOC45LCAtNTAuMCwgLTEyLjQsIC0xNC4xLCAtMTEuNiwgMi44LCAtNi40LCAwLjUsIC01LjIsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTcuOSwgLTEzLjIsIC05LjUsIC00LjYsIC0xLjIsIC00LjEsIC0zLjQsIC0xMi41LCAtNi4zLCAtMTIuNSwgLTguNSwgOS42LCAxMi43LCAwLjIsIDEwLjUsIC0xMi40LCAtMTEuNiwgLTEzLjIsIC0xMi4wLCAtMTIuNCwgLTEwLjEsIC0xMS42LCAtMTIuMCwgLTE1LjEsIC0xMy4xLCAtMTQuMywgLTEzLjQsIC0xLjQsIDEuNCwgLTEuNiwgLTAuNSwgLTE0LjksIC0xNC4zLCAtMTUuMiwgLTE2LjgsIC03LjcsIC00LjcsIC02LjMsIC02LjYsIC0xNC42LCAtMTAuOCwgLTEyLjgsIC0xMy4wLCAyLjMsIDYuMCwgMi41LCAzLjYsIC01MC4wLCAtMTEuMiwgLTUwLjAsIC0xMS45LCAtMTAuNSwgLTkuMiwgLTEwLjUsIC0xMC41LCAtNTAuMCwgLTEwLjMsIC0xNi4yLCAtMTEuMywgLTEuNywgLTMuNywgLTIuNSwgLTUuNCxdLFxuICAgICAgICAgICAgWy03LjEsIC05LjksIC01LjcsIC05LjAsIC0wLjQsIC0zLjAsIDAuOSwgLTIuMywgLTcuMiwgLTguMywgLTUuMywgLTguMCwgMy41LCAwLjIsIDE0LjMsIDEuMCwgLTcuMywgLTExLjIsIC02LjksIC05LjcsIC04LjUsIC0xMC4yLCAtNy43LCAtOS44LCAtMTAuMCwgLTEwLjQsIC04LjQsIC0xMC4yLCAxLjAsIC0wLjYsIDEuNywgLTAuNSwgLTExLjEsIC0xNC44LCAtOS43LCAtMTQuNSwgLTMuNywgLTUuOCwgLTMuMSwgLTUuNiwgLTEwLjQsIC0xMS41LCAtOC4yLCAtMTEuMSwgMC42LCAtMS42LCAxLjYsIC0xLjEsIC01MC4wLCAtMTIuNCwgLTUwLjAsIC0xMS41LCAtNS41LCAtOC4wLCAtNC45LCAtNy4yLCAtNTAuMCwgLTEyLjQsIC0xMC4zLCAtMTEuNiwgMC43LCAtNi44LCAyLjQsIC02LjAsXSxcbiAgICAgICAgICAgIFstMTEuNSwgLTkuNiwgLTEyLjYsIC03LjAsIC0zLjYsIC0zLjMsIC0zLjUsIC0wLjYsIC0xMS42LCAtNy43LCAtMTEuOSwgLTUuMywgOS43LCAxMC41LCAxLjAsIDEyLjYsIC0xMi4wLCAtMTIuMiwgLTEyLjUsIC05LjcsIC0xMS4xLCAtMTEuMiwgLTExLjksIC05LjQsIC0xMi45LCAtMTQuMywgLTE0LjAsIC0xMS45LCAtMS4wLCAtMC40LCAtMS42LCAxLjIsIC0xMy45LCAtMTUuNCwgLTEzLjcsIC0xMi42LCAtNi4yLCAtNi43LCAtNi4zLCAtNC40LCAtMTMuMCwgLTEyLjIsIC0xMy4wLCAtMTAuNCwgMi45LCAzLjgsIDIuNSwgNS44LCAtNTAuMCwgLTEyLjUsIC01MC4wLCAtMTAuMiwgLTkuNiwgLTkuNywgLTkuNiwgLTguMywgLTUwLjAsIC0xMS42LCAtMTUuNCwgLTkuNCwgLTEuMSwgLTUuNCwgLTEuNiwgLTMuMyxdLFxuICAgICAgICAgICAgWzAuNCwgLTUuMCwgLTEuNSwgLTQuMCwgLTQuOCwgLTcuNiwgLTUuOSwgLTYuNSwgLTAuNywgLTYuMSwgLTIuMiwgLTUuNiwgLTguNywgLTEyLjQsIC03LjMsIC0xMi4wLCAxMi44LCAyLjMsIDEwLjIsIDMuMCwgMC4wLCAtMy40LCAtMC43LCAtMy4yLCAyLjUsIC0wLjgsIDAuOSwgMC4yLCAtMy4wLCAtNy4yLCAtNS43LCAtNi4xLCAtMC4yLCAtNi42LCAtMS44LCAtNi4wLCAtNS4zLCAtOC4yLCAtNS43LCAtNy42LCAtNi43LCAtOS42LCAtNy41LCAtOS4zLCAtNy4xLCAtMTAuNSwgLTkuNiwgLTkuNCwgLTUwLjAsIC04LjEsIC01MC4wLCAtNy4yLCAtNC4zLCAtNi44LCAtNS43LCAtNi4zLCAtNTAuMCwgLTkuNSwgLTkuNiwgLTguOSwgLTYuMiwgLTEyLjgsIC02LjgsIC0xMS44LF0sXG4gICAgICAgICAgICBbLTYuMCwgMC41LCAtNi4xLCAtMS4wLCAtOC45LCAtNi43LCAtOC45LCAtOC4yLCAtNC44LCAtMi45LCAtNC40LCAtNC41LCAtMTIuNCwgLTExLjYsIC0xMS4yLCAtMTIuMiwgMi4zLCAxNC42LCAxLjksIDEyLjksIC01LjUsIC0yLjYsIC00LjEsIC00LjcsIC0xLjIsIDMuMCwgLTEuMSwgMS42LCAtOC4wLCAtNC43LCAtOC43LCAtNi4wLCAtOC4yLCAtNC43LCAtNy44LCAtNi43LCAtMTAuMCwgLTguMywgLTguOSwgLTkuOSwgLTEwLjgsIC03LjEsIC0xMC4wLCAtOS4yLCAtMTEuNiwgLTEwLjEsIC0xMi4zLCAtMTEuOSwgLTUwLjAsIDIuMiwgLTUwLjAsIDAuOSwgLTcuOSwgLTUuOSwgLTcuNCwgLTYuOSwgLTUwLjAsIC00LjYsIC0xMS42LCAtNS42LCAtOS43LCAtNS45LCAtOS45LCAtNy4zLF0sXG4gICAgICAgICAgICBbLTEuOSwgLTUuNSwgLTAuNiwgLTUuMCwgLTYuNSwgLTguMSwgLTUuNiwgLTguMCwgLTMuMSwgLTYuNSwgLTEuOSwgLTYuOCwgLTEwLjcsIC0xMy4yLCAtNi45LCAtMTIuNSwgMTAuMiwgMS45LCAxMS45LCAyLjEsIC0yLjMsIC00LjEsIC0wLjUsIC00LjYsIC0wLjEsIC0wLjksIDIuNCwgLTAuOCwgLTUuMSwgLTYuOSwgLTQuOCwgLTYuNywgLTIuMywgLTcuMSwgLTAuOCwgLTcuMiwgLTcuMiwgLTguMCwgLTUuNiwgLTguNSwgLTkuNCwgLTkuNywgLTcuMiwgLTkuOCwgLTkuMiwgLTExLjEsIC05LjUsIC0xMC43LCAtNTAuMCwgLTguNywgLTUwLjAsIC04LjYsIC02LjEsIC03LjUsIC01LjUsIC03LjcsIC01MC4wLCAtMTAuNCwgLTcuNywgLTEwLjAsIC03LjMsIC0xMy42LCAtNi40LCAtMTMuMyxdLFxuICAgICAgICAgICAgWy01LjMsIC0xLjAsIC02LjEsIDEuMCwgLTcuOCwgLTcuOSwgLTguNSwgLTYuMywgLTQuMywgLTQuMiwgLTQuOCwgLTIuNCwgLTEwLjcsIC0xMi4wLCAtOS43LCAtOS43LCAzLjAsIDEyLjksIDIuMSwgMTQuNywgLTQuOSwgLTMuOCwgLTQuMCwgLTIuNCwgLTEuMCwgMC44LCAtMS4zLCAzLjQsIC03LjYsIC01LjcsIC04LjEsIC0zLjUsIC02LjgsIC01LjgsIC03LjIsIC00LjIsIC04LjksIC0xMC4yLCAtOC40LCAtOC4yLCAtOS45LCAtOC40LCAtOS43LCAtNi40LCAtMTEuMSwgLTExLjEsIC0xMS44LCAtMTAuMCwgLTUwLjAsIDAuNCwgLTUwLjAsIDIuNiwgLTcuMiwgLTcuMCwgLTcuNCwgLTUuMSwgLTUwLjAsIC01LjcsIC05LjgsIC0zLjIsIC04LjQsIC03LjQsIC04LjksIC01LjksXSxcbiAgICAgICAgICAgIFstOC41LCAtMTAuMywgLTEwLjAsIC05LjAsIC0xLjQsIC00LjksIC0zLjksIC0zLjcsIC0xMC4wLCAtOC41LCAtMTAuMiwgLTcuOCwgLTcuOCwgLTEyLjQsIC04LjUsIC0xMS4xLCAwLjAsIC01LjUsIC0yLjMsIC00LjksIDEyLjYsIDEwLjAsIDExLjEsIDEwLjUsIC02LjAsIC04LjMsIC02LjksIC03LjUsIC0yLjIsIC03LjQsIC01LjMsIC01LjksIC04LjksIC0xMi41LCAtOS40LCAtMTEuNiwgLTAuNywgLTMuOSwgLTIuMywgLTMuMCwgLTkuMSwgLTkuOCwgLTkuMiwgLTkuNSwgLTUuNiwgLTkuMCwgLTguMCwgLTguNSwgLTUwLjAsIC0xNS4zLCAtNTAuMCwgLTE0LjEsIDIuMywgLTEuNCwgMC4zLCAtMC41LCAtNTAuMCwgLTEzLjYsIC0xNC4zLCAtMTEuNSwgLTUuMywgLTEzLjcsIC02LjEsIC0xMi43LF0sXG4gICAgICAgICAgICBbLTExLjIsIC04LjEsIC0xMS44LCAtOC44LCAtNC4xLCAtMS45LCAtMy45LCAtMy41LCAtMTEuNiwgLTUuOSwgLTExLjUsIC03LjksIC0xMC4yLCAtMTAuMSwgLTEwLjIsIC0xMS4yLCAtMy40LCAtMi42LCAtNC4xLCAtMy44LCAxMC4wLCAxMy4xLCAxMC43LCAxMC42LCAtOC4xLCAtNS4yLCAtOC4wLCAtNi43LCAtNi4xLCAtMy43LCAtNy41LCAtNS42LCAtMTEuMSwgLTEwLjMsIC0xMC42LCAtMTEuOSwgLTMuMiwgLTEuMCwgLTIuMiwgLTIuOCwgLTEwLjUsIC04LjEsIC05LjQsIC05LjUsIC04LjMsIC02LjksIC05LjQsIC04LjgsIC01MC4wLCAtMTEuMywgLTUwLjAsIC0xMi44LCAtMC42LCAyLjIsIC0wLjMsIDAuMSwgLTUwLjAsIC0xMC4xLCAtMTcuNSwgLTExLjEsIC04LjYsIC05LjksIC04LjYsIC0xMS45LF0sXG4gICAgICAgICAgICBbLTguOSwgLTkuNCwgLTguNiwgLTguOSwgLTIuOSwgLTQuNSwgLTIuMiwgLTMuOSwgLTguOCwgLTcuNSwgLTguMSwgLTcuOSwgLTguOCwgLTExLjYsIC03LjcsIC0xMS45LCAtMC43LCAtNC4xLCAtMC41LCAtNC4wLCAxMS4xLCAxMC43LCAxMy4yLCAxMC40LCAtNS43LCAtNS44LCAtMy41LCAtNi4xLCAtMy42LCAtNi41LCAtMy4zLCAtNS41LCAtOS40LCAtMTEuMCwgLTguNywgLTExLjIsIC0xLjgsIC0yLjcsIDAuNywgLTMuMCwgLTkuMSwgLTguMiwgLTcuMywgLTkuNCwgLTcuMiwgLTguMiwgLTcuMiwgLTguMiwgLTUwLjAsIC0xMy4yLCAtNTAuMCwgLTEzLjMsIDAuNSwgLTAuOSwgMS44LCAtMC42LCAtNTAuMCwgLTExLjQsIC0xMS4xLCAtMTAuNSwgLTYuMSwgLTEyLjksIC01LjAsIC0xMS45LF0sXG4gICAgICAgICAgICBbLTEwLjgsIC05LjYsIC0xMS45LCAtNy43LCAtMy4zLCAtMy44LCAtNC41LCAtMS42LCAtMTEuNywgLTcuNywgLTEyLjAsIC02LjIsIC05LjYsIC0xMi4wLCAtOS44LCAtOS40LCAtMy4yLCAtNC43LCAtNC42LCAtMi40LCAxMC41LCAxMC42LCAxMC40LCAxMi42LCAtOC4yLCAtNy45LCAtOS4wLCAtNC43LCAtNi4xLCAtNi4wLCAtNy41LCAtMi45LCAtMTAuOSwgLTEyLjIsIC0xMS4yLCAtMTAuOSwgLTIuNCwgLTIuOSwgLTIuNywgLTAuOSwgLTEwLjQsIC05LjcsIC0xMC4yLCAtOC4wLCAtOC40LCAtOS4xLCAtOS4zLCAtNi41LCAtNTAuMCwgLTEzLjMsIC01MC4wLCAtMTEuMCwgLTAuMCwgLTAuNCwgLTAuNCwgMi4zLCAtNTAuMCwgLTEwLjksIC0xNy4yLCAtOC4zLCAtOC4zLCAtMTIuNywgLTcuOCwgLTkuMyxdLFxuICAgICAgICAgICAgWzIuMSwgLTguMSwgMS4yLCAtNy4wLCAtOC4wLCAtOS41LCAtNy4zLCAtOS45LCAxMC41LCAtNS41LCA5LjMsIC01LjcsIC05LjUsIC0xNS4xLCAtMTAuMCwgLTEyLjksIDIuNSwgLTEuMiwgLTAuMSwgLTEuMCwgLTYuMCwgLTguMSwgLTUuNywgLTguMiwgMTMuOCwgMTEuMywgMTEuOCwgMTIuMSwgLTYuMCwgLTkuMSwgLTkuMCwgLTkuNSwgLTguOSwgLTEzLjQsIC0xMC4wLCAtMTMuMSwgLTkuOSwgLTExLjcsIC05LjgsIC0xMi44LCAtNS45LCAtOS40LCAtNi41LCAtOC4xLCAtMTAuNywgLTE0LjAsIC0xMy4zLCAtMTMuOSwgLTUwLjAsIC0xMS45LCAtNTAuMCwgLTkuNywgLTguOSwgLTEwLjgsIC05LjAsIC0xMS4xLCAtNTAuMCwgLTYuNSwgLTUuMywgLTYuMywgLTEwLjUsIC0xNi4yLCAtMTAuNCwgLTE1LjIsXSxcbiAgICAgICAgICAgIFswLjAsIC01LjAsIDAuNSwgLTYuOCwgLTkuMSwgLTcuOCwgLTcuNSwgLTguOSwgNy43LCAtMi40LCA4LjIsIC01LjEsIC0xMS45LCAtMTMuMSwgLTEwLjQsIC0xNC4zLCAtMC44LCAzLjAsIC0wLjksIDAuOCwgLTguMywgLTUuMiwgLTUuOCwgLTcuOSwgMTEuMywgMTUuMCwgMTEuMiwgMTIuOCwgLTkuNywgLTUuMywgLTkuMiwgLTcuOCwgLTExLjcsIC0xMC42LCAtMTAuMSwgLTEyLjIsIC0xMS43LCAtOC44LCAtOC45LCAtMTEuOCwgLTkuMywgLTUuMCwgLTguMCwgLTguMiwgLTEzLjYsIC0xMS40LCAtMTIuOCwgLTEzLjAsIC01MC4wLCAtNy4yLCAtNTAuMCwgLTguNCwgLTExLjAsIC03LjcsIC04LjcsIC0xMC4yLCAtNTAuMCwgLTEuNSwgLTcuMSwgLTQuOSwgLTExLjIsIC0xMS42LCAtMTEuNiwgLTE1LjAsXSxcbiAgICAgICAgICAgIFsxLjQsIC03LjMsIDIuMiwgLTcuMSwgLTguMCwgLTkuMywgLTYuNCwgLTkuNiwgOS4xLCAtNS41LCAxMC4wLCAtNS40LCAtMTAuOSwgLTE0LjMsIC04LjQsIC0xNC4wLCAwLjksIC0xLjEsIDIuNCwgLTEuMywgLTYuOSwgLTguMCwgLTMuNSwgLTkuMCwgMTEuOCwgMTEuMiwgMTMuNCwgMTEuNCwgLTcuMywgLTguOCwgLTYuNSwgLTguNSwgLTEwLjAsIC0xMi41LCAtNy44LCAtMTIuNSwgLTkuNiwgLTExLjAsIC03LjEsIC0xMC43LCAtNy45LCAtOC4wLCAtNC4zLCAtOS40LCAtMTEuNCwgLTEyLjMsIC0xMC45LCAtMTIuOSwgLTUwLjAsIC0xMS44LCAtNTAuMCwgLTExLjIsIC05LjQsIC05LjgsIC03LjMsIC0xMC41LCAtNTAuMCwgLTYuMiwgLTIuMiwgLTYuNywgLTkuOCwgLTE1LjIsIC04LjUsIC0xNC45LF0sXG4gICAgICAgICAgICBbMC4yLCAtNi4zLCAwLjEsIC00LjMsIC04LjIsIC04LjksIC04LjUsIC03LjAsIDguNSwgLTQuMSwgOC4wLCAtMi4xLCAtMTAuNSwgLTEzLjQsIC0xMC4yLCAtMTEuOSwgMC4yLCAxLjYsIC0wLjgsIDMuNCwgLTcuNSwgLTYuNywgLTYuMSwgLTQuNywgMTIuMSwgMTIuOCwgMTEuNCwgMTQuNywgLTguNywgLTcuNCwgLTkuNCwgLTUuMywgLTkuOSwgLTExLjgsIC0xMC41LCAtMTAuMywgLTkuOSwgLTEwLjEsIC05LjMsIC05LjMsIC04LjEsIC03LjIsIC04LjAsIC01LjIsIC0xMi4wLCAtMTIuMSwgLTEyLjYsIC0xMC45LCAtNTAuMCwgLTcuOSwgLTUwLjAsIC01LjMsIC05LjMsIC04LjgsIC04LjksIC03LjAsIC01MC4wLCAtMy42LCAtNy4xLCAtMS4yLCAtMTAuMiwgLTEyLjcsIC05LjksIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTEwLjIsIC0xMy40LCAtMTEuOCwgLTEyLjQsIC02LjAsIC05LjQsIC03LjEsIC04LjYsIC05LjgsIC0xMi45LCAtMTAuOCwgLTEyLjQsIDIuMywgLTEuNCwgMS4wLCAtMS4wLCAtMy4wLCAtOC4wLCAtNS4xLCAtNy42LCAtMi4yLCAtNi4xLCAtMy42LCAtNi4xLCAtNi4wLCAtOS43LCAtNy4zLCAtOC43LCAxMS4yLCA3LjksIDguOSwgOC4xLCAtMTIuMSwgLTE3LjQsIC0xMy4yLCAtMTYuOCwgLTYuMywgLTkuNSwgLTcuNSwgLTguOCwgLTEyLjcsIC0xNS4yLCAtMTMuMSwgLTE0LjIsIDAuMCwgLTMuMSwgLTEuOCwgLTMuMSwgLTUwLjAsIC0xMC43LCAtNTAuMCwgLTkuMywgLTQuNiwgLTguOSwgLTUuOSwgLTguMywgLTUwLjAsIC0xMi44LCAtOS42LCAtMTAuNiwgOS41LCAtMy4yLCA4LjIsIC0yLjgsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTExLjMsIC0xNC4wLCAtMTIuOSwgLTkuMywgLTcuMSwgLTguMiwgLTguOSwgLTEyLjcsIC0xMC4zLCAtMTEuOSwgLTEyLjMsIC0wLjQsIDEuNCwgLTAuNiwgLTAuNCwgLTcuMiwgLTQuNywgLTYuOSwgLTUuNywgLTcuNCwgLTMuNywgLTYuNSwgLTYuMCwgLTkuMSwgLTUuMywgLTguOCwgLTcuNCwgNy45LCAxMS45LCA3LjgsIDkuMywgLTE1LjIsIC0xNS4xLCAtMTQuNiwgLTE3LjIsIC05LjcsIC03LjMsIC04LjIsIC05LjIsIC0xNS4wLCAtMTIuOCwgLTE0LjEsIC0xNC45LCAtMi44LCAwLjIsIC0yLjksIC0yLjMsIC01MC4wLCAtNy40LCAtNTAuMCwgLTguNywgLTkuNCwgLTcuMywgLTkuNCwgLTkuNCwgLTUwLjAsIC04LjAsIC0xMS45LCAtOS43LCA2LjUsIDAuNSwgNi40LCAtMS44LF0sXG4gICAgICAgICAgICBbLTEzLjAsIC0xNC40LCAtMTEuOSwgLTEzLjksIC03LjcsIC05LjAsIC02LjcsIC04LjgsIC0xMS43LCAtMTIuNywgLTEwLjcsIC0xMy4xLCAtMC4yLCAtMS42LCAxLjcsIC0xLjYsIC01LjcsIC04LjcsIC00LjgsIC04LjEsIC01LjMsIC03LjUsIC0zLjMsIC03LjUsIC05LjAsIC05LjIsIC02LjUsIC05LjQsIDguOSwgNy44LCAxMC4xLCA3LjgsIC0xNC4zLCAtMTcuNywgLTEzLjAsIC0xNy44LCAtOC4wLCAtOS40LCAtNi4yLCAtOS4yLCAtMTUuMSwgLTE0LjksIC0xMi4yLCAtMTQuOSwgLTEuOCwgLTMuMiwgLTAuOCwgLTMuMiwgLTUwLjAsIC0xMC44LCAtNTAuMCwgLTkuOSwgLTcuMywgLTkuNiwgLTYuNCwgLTkuNCwgLTUwLjAsIC0xMi4zLCAtOC43LCAtMTEuMywgNy42LCAtMy4zLCA4LjcsIC0yLjksXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTEyLjksIC0xMy40LCAtMTAuMCwgLTguNSwgLTkuMCwgLTcuOCwgLTYuOCwgLTExLjgsIC0xMS4zLCAtMTIuNCwgLTEwLjEsIC0wLjMsIC0wLjUsIC0wLjUsIDEuMiwgLTYuMSwgLTYuMCwgLTYuNywgLTMuNSwgLTUuOSwgLTUuNiwgLTUuNSwgLTIuOSwgLTkuNSwgLTcuOCwgLTguNSwgLTUuMywgOC4xLCA5LjMsIDcuOCwgMTEuOCwgLTE0LjQsIC0xNS43LCAtMTQuNSwgLTE0LjYsIC04LjQsIC04LjcsIC03LjksIC03LjEsIC0xNC4zLCAtMTMuOCwgLTEzLjgsIC0xMi4zLCAtMi40LCAtMi4yLCAtMi45LCAtMC4yLCAtNTAuMCwgLTguOSwgLTUwLjAsIC03LjEsIC04LjEsIC05LjEsIC04LjcsIC02LjYsIC01MC4wLCAtOS43LCAtMTEuNCwgLTguMCwgNi44LCAtMS44LCA2LjksIDAuNCxdLFxuICAgICAgICAgICAgWy0yLjYsIC02LjMsIC00LjksIC00LjksIC02LjQsIC05LjQsIC03LjksIC04LjYsIC02LjMsIC03LjQsIC04LjIsIC02LjYsIC05LjcsIC0xNC45LCAtMTEuMSwgLTEzLjksIC0wLjIsIC04LjIsIC0yLjMsIC02LjgsIC04LjksIC0xMS4xLCAtOS40LCAtMTAuOSwgLTguOSwgLTExLjcsIC0xMC4wLCAtOS45LCAtMTIuMSwgLTE1LjIsIC0xNC4zLCAtMTQuNCwgMTEuMSwgMi45LCA5LjIsIDMuNSwgLTMuMCwgLTcuMCwgLTQuMywgLTYuMiwgLTIuMiwgLTYuNiwgLTMuNywgLTUuNywgLTYuMCwgLTEwLjQsIC04LjYsIC05LjUsIC01MC4wLCAtMTUuNSwgLTUwLjAsIC0xMy45LCAtNy44LCAtMTAuNSwgLTguNywgLTkuNiwgLTUwLjAsIC0xNi41LCAtMTcuMSwgLTE0LjgsIC0xMi4xLCAtMTguOSwgLTEyLjQsIC0xNy40LF0sXG4gICAgICAgICAgICBbLTguNSwgMC44LCAtOS4xLCAtMC43LCAtMTAuMSwgLTcuNSwgLTkuMSwgLTguMiwgLTExLjQsIC0zLjEsIC0xMS44LCAtNC40LCAtMTUuNSwgLTE0LjMsIC0xNC44LCAtMTUuNCwgLTYuNiwgLTQuNywgLTcuMSwgLTUuOCwgLTEyLjUsIC0xMC4zLCAtMTEuMCwgLTEyLjIsIC0xMy40LCAtMTAuNiwgLTEyLjUsIC0xMS44LCAtMTcuNCwgLTE1LjEsIC0xNy43LCAtMTUuNywgMi45LCAxMi41LCAzLjEsIDEwLjMsIC03LjcsIC01LjIsIC02LjIsIC03LjMsIC01LjQsIC0xLjcsIC01LjQsIC0zLjcsIC0xMS42LCAtOS4xLCAtMTMuMCwgLTEwLjgsIC01MC4wLCAtMTAuMywgLTUwLjAsIC0xMS4yLCAtOS44LCAtOC4zLCAtOS4xLCAtOS43LCAtNTAuMCwgLTEyLjcsIC0yMC42LCAtMTMuMSwgLTE2LjAsIC0xNi42LCAtMTcuMCwgLTE4LjQsXSxcbiAgICAgICAgICAgIFstNS4wLCAtNi40LCAtMy40LCAtNS42LCAtNy41LCAtOS4zLCAtNy4xLCAtOC44LCAtOC44LCAtNy40LCAtNi45LCAtNi45LCAtMTEuNCwgLTE1LjIsIC05LjcsIC0xMy43LCAtMS44LCAtNy44LCAtMC44LCAtNy4yLCAtOS40LCAtMTAuNiwgLTguNywgLTExLjIsIC0xMC4wLCAtMTAuMSwgLTcuOCwgLTEwLjUsIC0xMy4yLCAtMTQuNiwgLTEzLjAsIC0xNC41LCA5LjIsIDMuMSwgMTAuOCwgMy4wLCAtNC41LCAtNi43LCAtMi43LCAtNi43LCAtNS4wLCAtNi44LCAtMi41LCAtNi43LCAtNy41LCAtMTAuNCwgLTcuNCwgLTEwLjIsIC01MC4wLCAtMTUuNSwgLTUwLjAsIC0xNC4yLCAtOC45LCAtMTAuMiwgLTguNSwgLTEwLjAsIC01MC4wLCAtMTUuNiwgLTE1LjMsIC0xNS41LCAtMTMuMCwgLTE4LjgsIC0xMi42LCAtMTguMyxdLFxuICAgICAgICAgICAgWy04LjEsIC0xLjEsIC04LjksIDEuNCwgLTguNiwgLTkuMiwgLTkuNCwgLTYuOCwgLTExLjAsIC00LjksIC0xMS41LCAtMi42LCAtMTMuNywgLTE2LjgsIC0xNC41LCAtMTIuNiwgLTYuMCwgLTYuNywgLTcuMiwgLTQuMiwgLTExLjYsIC0xMS45LCAtMTEuMiwgLTEwLjksIC0xMy4xLCAtMTIuMiwgLTEyLjUsIC0xMC4zLCAtMTYuOCwgLTE3LjIsIC0xNy44LCAtMTQuNiwgMy41LCAxMC4zLCAzLjAsIDEyLjQsIC02LjksIC03LjUsIC02LjgsIC00LjksIC01LjQsIC00LjIsIC01LjQsIC0xLjMsIC0xMC44LCAtMTEuNSwgLTEyLjQsIC04LjIsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC04LjksIC05LjIsIC0xMC4wLCAtOS40LCAtNy45LCAtNTAuMCwgLTE0LjMsIC0xOS45LCAtMTEuNCwgLTE2LjIsIC0xOS4yLCAtMTUuOCwgLTE1LjksXSxcbiAgICAgICAgICAgIFstNi4zLCAtNy40LCAtOC4wLCAtNi4wLCAyLjgsIC0wLjcsIDAuOSwgMC4zLCAtNy41LCAtNC40LCAtOC40LCAtMy42LCAtMy4wLCAtNy43LCAtMy43LCAtNi4yLCAtNS4zLCAtMTAuMCwgLTcuMiwgLTguOSwgLTAuNywgLTMuMiwgLTEuOCwgLTIuNCwgLTkuOSwgLTExLjcsIC05LjYsIC05LjksIC02LjMsIC05LjcsIC04LjAsIC04LjQsIC0zLjAsIC03LjcsIC00LjUsIC02LjksIDExLjMsIDguMiwgOS40LCA5LjEsIC0xLjAsIC0zLjMsIC0xLjgsIC0yLjQsIDEuNSwgLTIuMSwgLTAuNCwgLTEuMSwgLTUwLjAsIC0xNC41LCAtNTAuMCwgLTEyLjksIDIuOCwgLTAuMCwgMS40LCAwLjcsIC01MC4wLCAtOC43LCAtMTQuMSwgLTcuNSwgLTUuMiwgLTEyLjUsIC02LjUsIC0xMC43LF0sXG4gICAgICAgICAgICBbLTkuOSwgLTUuMCwgLTEwLjAsIC02LjUsIC0wLjcsIDIuNiwgLTAuMiwgMC4xLCAtMTAuMywgLTEuOCwgLTkuOSwgLTMuOCwgLTYuNCwgLTQuNywgLTUuOCwgLTYuNywgLTguMiwgLTguMywgLTguMCwgLTEwLjIsIC0zLjksIC0xLjAsIC0yLjcsIC0yLjksIC0xMS43LCAtOC44LCAtMTEuMCwgLTEwLjEsIC05LjUsIC03LjMsIC05LjQsIC04LjcsIC03LjAsIC01LjIsIC02LjcsIC03LjUsIDguMiwgMTEuNiwgOC44LCA5LjEsIC0zLjcsIC0wLjksIC0zLjEsIC0zLjAsIC0yLjAsIDEuMiwgLTIuMywgLTEuMywgLTUwLjAsIC0xMi4xLCAtNTAuMCwgLTEyLjYsIDAuMSwgMi41LCAwLjcsIDAuNiwgLTUwLjAsIC02LjAsIC0xNC44LCAtNy41LCAtOC42LCAtOS40LCAtOC41LCAtMTEuMixdLFxuICAgICAgICAgICAgWy03LjUsIC02LjIsIC03LjIsIC02LjIsIDAuOSwgMC4yLCAyLjUsIDAuMiwgLTguMywgLTMuNSwgLTcuMSwgLTMuNywgLTQuMSwgLTYuMywgLTMuMSwgLTYuMywgLTUuNywgLTguOSwgLTUuNiwgLTguNCwgLTIuMywgLTIuMiwgMC43LCAtMi43LCAtOS44LCAtOC45LCAtNy4xLCAtOS4zLCAtNy41LCAtOC4yLCAtNi4yLCAtNy45LCAtNC4zLCAtNi4yLCAtMi43LCAtNi44LCA5LjQsIDguOCwgMTIuMSwgOC44LCAtMi4xLCAtMi4wLCAwLjEsIC0yLjQsIDAuMCwgLTEuMSwgMS4zLCAtMC44LCAtNTAuMCwgLTExLjksIC01MC4wLCAtMTIuNiwgMS4yLCAwLjcsIDMuNSwgMC44LCAtNTAuMCwgLTcuMSwgLTEyLjQsIC03LjEsIC03LjEsIC0xMC42LCAtNS4wLCAtMTAuNixdLFxuICAgICAgICAgICAgWy05LjAsIC02LjUsIC0xMC4wLCAtNC44LCAwLjEsIC0wLjEsIC0wLjMsIDIuNCwgLTkuOSwgLTMuNSwgLTEwLjYsIC0yLjAsIC01LjQsIC02LjYsIC01LjYsIC00LjQsIC03LjYsIC05LjksIC04LjUsIC04LjIsIC0zLjAsIC0yLjgsIC0zLjAsIC0wLjksIC0xMi44LCAtMTEuOCwgLTEwLjcsIC05LjMsIC04LjgsIC05LjIsIC05LjIsIC03LjEsIC02LjIsIC03LjMsIC02LjcsIC00LjksIDkuMSwgOS4xLCA4LjgsIDExLjIsIC0zLjEsIC0zLjAsIC0zLjMsIC0xLjAsIC0xLjEsIC0xLjQsIC0yLjAsIDEuMiwgLTUwLjAsIC0xMi44LCAtNTAuMCwgLTEwLjksIDAuOCwgMC41LCAwLjcsIDIuMywgLTUwLjAsIC03LjUsIC0xNi41LCAtNS45LCAtNy44LCAtMTEuMSwgLTcuOCwgLTkuMCxdLFxuICAgICAgICAgICAgWy03LjEsIC01LjYsIC05LjEsIC01LjEsIC01LjksIC04LjAsIC02LjksIC03LjQsIC0xLjksIC0xLjYsIC00LjcsIC0xLjQsIC05LjYsIC0xNC42LCAtMTAuNCwgLTEzLjAsIC02LjcsIC0xMC44LCAtOS40LCAtOS45LCAtOS4xLCAtMTAuNSwgLTkuMSwgLTEwLjQsIC01LjksIC05LjMsIC03LjksIC04LjEsIC0xMi43LCAtMTUuMCwgLTE1LjEsIC0xNC4zLCAtMi4yLCAtNS40LCAtNS4wLCAtNS40LCAtMS4wLCAtMy43LCAtMi4xLCAtMy4xLCAxMi44LCA5LjYsIDExLjEsIDEwLjEsIC00LjgsIC05LjQsIC04LjEsIC04LjYsIC01MC4wLCAtMTguMywgLTUwLjAsIC0xNS40LCAtNS45LCAtNy41LCAtNi42LCAtNy4xLCAtNTAuMCwgLTkuNSwgLTExLjcsIC04LjQsIC0xMi41LCAtMTcuMywgLTEzLjIsIC0xNS40LF0sXG4gICAgICAgICAgICBbLTEwLjIsIC0xLjYsIC0xMC4yLCAtMy4yLCAtNy4zLCAtNC42LCAtNi41LCAtNi4yLCAtNi43LCAzLjAsIC02LjgsIDAuOCwgLTExLjksIC0xMC44LCAtMTEuNSwgLTEyLjIsIC05LjYsIC03LjEsIC05LjcsIC04LjQsIC05LjgsIC04LjEsIC04LjIsIC05LjcsIC05LjQsIC01LjAsIC04LjAsIC03LjIsIC0xNS4yLCAtMTIuOCwgLTE0LjksIC0xMy44LCAtNi42LCAtMS43LCAtNi44LCAtNC4yLCAtMy4zLCAtMC45LCAtMi4wLCAtMy4wLCA5LjYsIDEyLjgsIDkuNywgMTAuNSwgLTguNSwgLTUuNiwgLTkuMywgLTcuOCwgLTUwLjAsIC0xMi43LCAtNTAuMCwgLTEzLjgsIC02LjgsIC01LjEsIC01LjMsIC02LjUsIC01MC4wLCAtNC4xLCAtMTIuOCwgLTUuOCwgLTE0LjQsIC0xNC4xLCAtMTMuNiwgLTE0LjgsXSxcbiAgICAgICAgICAgIFstOC4yLCAtNC43LCAtNy4xLCAtNS4wLCAtNi41LCAtNy43LCAtNS41LCAtNi45LCAtNC4xLCAtMC44LCAtMS4yLCAtMC45LCAtMTAuNSwgLTEyLjgsIC04LjIsIC0xMy4wLCAtNy41LCAtMTAuMCwgLTcuMiwgLTkuNywgLTkuMiwgLTkuNCwgLTcuMywgLTEwLjIsIC02LjUsIC04LjAsIC00LjMsIC04LjAsIC0xMy4xLCAtMTQuMSwgLTEyLjIsIC0xMy44LCAtMy43LCAtNS40LCAtMi41LCAtNS40LCAtMS44LCAtMy4xLCAwLjEsIC0zLjMsIDExLjEsIDkuNywgMTIuOSwgOS44LCAtNS41LCAtOC4xLCAtNS40LCAtNy44LCAtNTAuMCwgLTE2LjQsIC01MC4wLCAtMTQuOCwgLTUuOSwgLTcuMSwgLTQuNywgLTcuMiwgLTUwLjAsIC04LjQsIC02LjQsIC04LjEsIC0xMi4xLCAtMTYuMiwgLTEwLjMsIC0xNS44LF0sXG4gICAgICAgICAgICBbLTkuMiwgLTMuMCwgLTkuOSwgLTEuMiwgLTYuNSwgLTYuMSwgLTYuOCwgLTQuNCwgLTYuNCwgMC45LCAtNy4wLCAzLjAsIC0xMS44LCAtMTMuMCwgLTExLjEsIC0xMC40LCAtOS4zLCAtOS4yLCAtOS44LCAtNi40LCAtOS41LCAtOS41LCAtOS40LCAtOC4wLCAtOC4xLCAtOC4yLCAtOS40LCAtNS4yLCAtMTQuMiwgLTE0LjksIC0xNC45LCAtMTIuMywgLTUuNywgLTMuNywgLTYuNywgLTEuMywgLTIuNCwgLTMuMCwgLTIuNCwgLTEuMCwgMTAuMSwgMTAuNSwgOS44LCAxMy4xLCAtNy4yLCAtOC4wLCAtOC40LCAtNS4wLCAtNTAuMCwgLTE0LjcsIC01MC4wLCAtMTEuNCwgLTYuMywgLTYuNywgLTUuOCwgLTUuMCwgLTUwLjAsIC02LjEsIC0xMy40LCAtMy42LCAtMTMuMCwgLTE2LjAsIC0xMy43LCAtMTMuMyxdLFxuICAgICAgICAgICAgWy04LjIsIC0xMC44LCAtMTAuMSwgLTkuOCwgLTAuNCwgLTMuNiwgLTEuNywgLTIuOSwgLTcuOSwgLTguNCwgLTkuOCwgLTguMiwgNi4yLCAyLjMsIDAuNiwgMi45LCAtNy4xLCAtMTEuNiwgLTkuMiwgLTExLjEsIC01LjYsIC04LjMsIC03LjIsIC04LjQsIC0xMC43LCAtMTMuNiwgLTExLjQsIC0xMi4wLCAwLjAsIC0yLjgsIC0xLjgsIC0yLjQsIC02LjAsIC0xMS42LCAtNy41LCAtMTAuOCwgMS41LCAtMi4wLCAwLjAsIC0xLjEsIC00LjgsIC04LjUsIC01LjUsIC03LjIsIDExLjksIDguNiwgMTAuMCwgOS4wLCAtNTAuMCwgLTE0LjIsIC01MC4wLCAtMTIuOCwgLTQuMSwgLTcuNCwgLTUuNywgLTYuNSwgLTUwLjAsIC0xMS4wLCAtMTQuMywgLTkuOSwgMS40LCAtNy45LCAtMC43LCAtNi44LF0sXG4gICAgICAgICAgICBbLTEyLjUsIC04LjcsIC0xMy4wLCAtOS45LCAtMy45LCAtMS4wLCAtMy40LCAtMi45LCAtMTIuNSwgLTYuMywgLTExLjYsIC04LjEsIDMuMywgNi4wLCAtMS42LCAzLjgsIC0xMC41LCAtMTAuMSwgLTExLjEsIC0xMS4xLCAtOS4wLCAtNi45LCAtOC4yLCAtOS4xLCAtMTQuMCwgLTExLjQsIC0xMi4zLCAtMTIuMSwgLTMuMSwgMC4yLCAtMy4yLCAtMi4yLCAtMTAuNCwgLTkuMSwgLTEwLjQsIC0xMS41LCAtMi4xLCAxLjIsIC0xLjEsIC0xLjQsIC05LjQsIC01LjYsIC04LjEsIC04LjAsIDguNiwgMTIuNCwgOC42LCA5LjUsIC01MC4wLCAtMTAuNCwgLTUwLjAsIC0xMS42LCAtNy4yLCAtNS43LCAtNy41LCAtNy40LCAtNTAuMCwgLTguNiwgLTE1LjcsIC05LjcsIC0zLjAsIC0zLjcsIC0zLjIsIC01LjksXSxcbiAgICAgICAgICAgIFstMTEuMSwgLTExLjksIC0xMC42LCAtMTEuMywgLTIuNiwgLTQuMSwgLTEuNywgLTMuNSwgLTExLjQsIC05LjYsIC05LjYsIC05LjIsIDMuNywgMi41LCAxLjYsIDIuNSwgLTkuNiwgLTEyLjMsIC05LjUsIC0xMS44LCAtOC4wLCAtOS40LCAtNy4yLCAtOS4zLCAtMTMuMywgLTEyLjgsIC0xMC45LCAtMTIuNiwgLTEuOCwgLTIuOSwgLTAuOCwgLTIuOSwgLTguNiwgLTEzLjAsIC03LjQsIC0xMi40LCAtMC40LCAtMi4zLCAxLjMsIC0yLjAsIC04LjEsIC05LjMsIC01LjQsIC04LjQsIDEwLjAsIDguNiwgMTEuNCwgOC45LCAtNTAuMCwgLTEzLjcsIC01MC4wLCAtMTMuMiwgLTYuMSwgLTguMSwgLTUuNSwgLTcuNSwgLTUwLjAsIC0xMS4zLCAtMTIuNywgLTEwLjEsIC0xLjYsIC03LjgsIC0wLjMsIC03LjIsXSxcbiAgICAgICAgICAgIFstMTEuNCwgLTEwLjAsIC0xMi43LCAtOC4yLCAtMy4xLCAtMy4xLCAtMi44LCAtMC45LCAtMTEuNywgLTcuMywgLTEyLjEsIC01LjgsIDMuNiwgMy42LCAtMS4xLCA1LjgsIC05LjQsIC0xMS45LCAtMTAuNywgLTEwLjAsIC04LjUsIC04LjgsIC04LjIsIC02LjUsIC0xMy45LCAtMTMuMCwgLTEyLjksIC0xMC45LCAtMy4xLCAtMi4zLCAtMy4yLCAtMC4yLCAtOS41LCAtMTAuOCwgLTEwLjIsIC04LjIsIC0xLjEsIC0xLjMsIC0wLjgsIDEuMiwgLTguNiwgLTcuOCwgLTcuOCwgLTUuMCwgOS4wLCA5LjUsIDguOSwgMTIuMCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTEwLjMsIC02LjIsIC03LjAsIC03LjEsIC01LjQsIC01MC4wLCAtOS4zLCAtMTQuMCwgLTguMiwgLTIuNCwgLTYuMywgLTIuNCwgLTMuOSxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMzLjMsIC01MC4wLCAzMC42LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI5LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTE0LjgsIC02LjIsIC0xNC45LCAtNy42LCAtMTQuNiwgLTExLjYsIC0xMy4wLCAtMTIuMiwgLTE0LjAsIC05LjAsIC0xNC4xLCAtMTAuMSwgLTEzLjYsIC0xMS4yLCAtMTIuNCwgLTEyLjUsIC04LjEsIDIuMiwgLTguNywgMC40LCAtMTUuMywgLTExLjMsIC0xMy4yLCAtMTMuMywgLTExLjksIC03LjIsIC0xMS44LCAtNy45LCAtMTAuNywgLTcuNCwgLTEwLjgsIC04LjksIC0xNS41LCAtMTAuMywgLTE1LjUsIC0xMi41LCAtMTQuNSwgLTEyLjEsIC0xMS45LCAtMTIuOCwgLTE4LjMsIC0xMi43LCAtMTYuNCwgLTE0LjcsIC0xNC4yLCAtMTAuNCwgLTEzLjcsIC0xMy4wLCAtNTAuMCwgMTUuMSwgLTUwLjAsIDEzLjMsIC05LjksIC01LjgsIC04LjksIC03LjYsIC01MC4wLCAtMS41LCAtNy44LCAtMy4wLCAtOC4xLCAzLjYsIC05LjQsIDIuMCxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMwLjYsIC01MC4wLCAzNS4yLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI4LjUsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTEzLjgsIC03LjUsIC0xNC40LCAtNS4xLCAtMTIuNiwgLTExLjYsIC0xMS41LCAtMTAuMSwgLTEzLjIsIC05LjcsIC0xMi43LCAtNy40LCAtMTEuOSwgLTExLjksIC0xMS41LCAtMTAuMiwgLTcuMiwgMC45LCAtOC42LCAyLjYsIC0xNC4xLCAtMTIuOCwgLTEzLjMsIC0xMS4wLCAtOS43LCAtOC40LCAtMTEuMiwgLTUuMywgLTkuMywgLTguNywgLTkuOSwgLTcuMSwgLTEzLjksIC0xMS4yLCAtMTQuMiwgLTguOSwgLTEyLjksIC0xMi42LCAtMTIuNiwgLTEwLjksIC0xNS40LCAtMTMuOCwgLTE0LjgsIC0xMS40LCAtMTIuOCwgLTExLjYsIC0xMy4yLCAtMTAuMywgLTUwLjAsIDEzLjMsIC01MC4wLCAxNS4yLCAtOC42LCAtNy4wLCAtOC40LCAtNC44LCAtNTAuMCwgLTMuMCwgLTcuMSwgLTAuMSwgLTcuMywgMi4zLCAtOC43LCAzLjksXSxcbiAgICAgICAgICAgIFstNy4zLCAtNi4zLCAtOC45LCAtNS41LCAyLjksIDAuMiwgMS41LCAxLjIsIC04LjUsIC0yLjMsIC0xMC4wLCAtMS43LCAtNS42LCAtMTAuNSwgLTUuNSwgLTkuNiwgLTQuMywgLTcuOSwgLTYuMSwgLTcuMiwgMi4zLCAtMC42LCAwLjUsIC0wLjAsIC04LjksIC0xMS4wLCAtOS40LCAtOS4zLCAtNC42LCAtOS40LCAtNy4zLCAtOC4xLCAtNy44LCAtOS44LCAtOC45LCAtOS4yLCAyLjgsIDAuMSwgMS4yLCAwLjgsIC01LjksIC02LjgsIC01LjksIC02LjMsIC00LjEsIC03LjIsIC02LjEsIC02LjIsIC01MC4wLCAtOS45LCAtNTAuMCwgLTguNiwgMTIuNSwgOS40LCAxMS4wLCA5LjgsIC01MC4wLCAtNC44LCAtOC43LCAtMy41LCAtMC4wLCAtOC42LCAtMi4xLCAtNy4wLF0sXG4gICAgICAgICAgICBbLTEwLjEsIC00LjMsIC0xMC44LCAtNS44LCAwLjEsIDIuMywgMC43LCAwLjYsIC0xMC40LCAtMC4yLCAtMTAuOCwgLTIuMCwgLTguOCwgLTkuMiwgLTguMCwgLTkuNywgLTYuOCwgLTUuOSwgLTcuNSwgLTcuMCwgLTEuNCwgMi4yLCAtMC45LCAtMC40LCAtMTAuOCwgLTcuNywgLTkuOCwgLTguOCwgLTguOSwgLTcuMywgLTkuNiwgLTkuMSwgLTEwLjUsIC04LjMsIC0xMC4yLCAtMTAuMCwgLTAuMCwgMi41LCAwLjcsIDAuNSwgLTcuNSwgLTUuMSwgLTcuMSwgLTYuNywgLTcuNCwgLTUuNywgLTguMSwgLTcuMCwgLTUwLjAsIC01LjgsIC01MC4wLCAtNy4wLCA5LjQsIDEyLjcsIDEwLjEsIDEwLjAsIC01MC4wLCAtMS41LCAtMTEuMywgLTMuMywgLTUuNCwgLTQuMiwgLTUuNiwgLTYuOCxdLFxuICAgICAgICAgICAgWy04LjQsIC02LjIsIC04LjksIC01LjksIDEuOCwgMC40LCAyLjcsIDEuMiwgLTkuMSwgLTEuMiwgLTguOCwgLTEuNSwgLTcuMiwgLTEwLjUsIC00LjksIC05LjYsIC01LjcsIC03LjQsIC01LjUsIC03LjQsIDAuMywgLTAuMywgMS44LCAtMC40LCAtOS4wLCAtOC43LCAtNy4zLCAtOC45LCAtNS45LCAtOS40LCAtNi40LCAtOC43LCAtOC43LCAtOS4xLCAtOC41LCAtOS40LCAxLjQsIDAuNywgMy41LCAwLjcsIC02LjYsIC01LjMsIC00LjcsIC01LjgsIC01LjcsIC03LjUsIC01LjUsIC03LjEsIC01MC4wLCAtOC45LCAtNTAuMCwgLTguNCwgMTEuMCwgMTAuMSwgMTMuMiwgMTAuMiwgLTUwLjAsIC00LjIsIC02LjEsIC0zLjYsIC0zLjUsIC04LjQsIC0xLjIsIC02LjgsXSxcbiAgICAgICAgICAgIFstOS4xLCAtNS40LCAtMTAuNCwgLTQuMiwgMS4wLCAwLjUsIDAuNiwgMi40LCAtOS42LCAtMS41LCAtMTAuNSwgLTAuNSwgLTguOSwgLTEwLjUsIC03LjIsIC04LjMsIC02LjMsIC02LjksIC03LjcsIC01LjEsIC0wLjUsIDAuMSwgLTAuNiwgMi4zLCAtMTEuMSwgLTEwLjIsIC0xMC41LCAtNy4wLCAtOC4zLCAtOS40LCAtOS40LCAtNi42LCAtOS42LCAtOS43LCAtMTAuMCwgLTcuOSwgMC43LCAwLjYsIDAuOCwgMi4zLCAtNy4xLCAtNi41LCAtNy4yLCAtNS4wLCAtNi41LCAtNy40LCAtNy41LCAtNS40LCAtNTAuMCwgLTcuNiwgLTUwLjAsIC00LjgsIDkuOCwgMTAuMCwgMTAuMiwgMTIuMSwgLTUwLjAsIC0zLjEsIC0xMS40LCAtMC43LCAtNC42LCAtNi42LCAtNC45LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIDI4LjUsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTcuMCwgLTEzLjEsIC04LjMsIC05LjIsIC02LjUsIC04LjksIC03LjYsIC05LjgsIC0wLjcsIC05LjIsIC0yLjEsIC0xMi40LCAtMTAuMywgLTEyLjQsIC0xMS42LCAtOS41LCAtNC42LCAtMTAuNCwgLTUuNywgLTEzLjYsIC0xMC4xLCAtMTEuNCwgLTEwLjksIC02LjUsIC0xLjUsIC02LjIsIC0zLjYsIC0xMi44LCAtOC4wLCAtMTIuMywgLTkuNywgLTE2LjUsIC0xMi43LCAtMTUuNiwgLTE0LjMsIC04LjcsIC02LjAsIC03LjEsIC03LjUsIC05LjUsIC00LjEsIC04LjQsIC02LjEsIC0xMS4wLCAtOC42LCAtMTEuMywgLTkuMywgLTUwLjAsIC0xLjUsIC01MC4wLCAtMy4wLCAtNC44LCAtMS41LCAtNC4yLCAtMy4xLCAtNTAuMCwgMTYuNCwgLTUuMSwgMTQuMiwgLTEwLjEsIC00LjMsIC0xMC4wLCAtNS40LF0sXG4gICAgICAgICAgICBbLTEzLjUsIC0xNi4zLCAtMTEuOCwgLTE1LjUsIC0xMy42LCAtMTUuMywgLTEyLjEsIC0xNi4xLCAtNy43LCAtMTMuMywgLTQuMiwgLTEyLjYsIC0xNC4xLCAtMTYuMiwgLTEwLjMsIC0xNS40LCAtOS42LCAtMTEuNiwgLTcuNywgLTkuOCwgLTE0LjMsIC0xNy41LCAtMTEuMSwgLTE3LjIsIC01LjMsIC03LjEsIC0yLjIsIC03LjEsIC05LjYsIC0xMS45LCAtOC43LCAtMTEuNCwgLTE3LjEsIC0yMC42LCAtMTUuMywgLTE5LjksIC0xNC4xLCAtMTQuOCwgLTEyLjQsIC0xNi41LCAtMTEuNywgLTEyLjgsIC02LjQsIC0xMy40LCAtMTQuMywgLTE1LjcsIC0xMi43LCAtMTQuMCwgLTUwLjAsIC03LjgsIC01MC4wLCAtNy4xLCAtOC43LCAtMTEuMywgLTYuMSwgLTExLjQsIC01MC4wLCAtNS4xLCAxOC42LCAtNC44LCAtOC42LCAtOC4xLCAtNC41LCAtNy4zLF0sXG4gICAgICAgICAgICBbLTEyLjQsIC04LjIsIC0xMy4wLCAtNS45LCAtNy43LCAtNy44LCAtNy40LCAtNS44LCAtOC44LCAtMi4wLCAtOS4zLCAtMC40LCAtMTEuNiwgLTExLjMsIC0xMS42LCAtOS40LCAtOC45LCAtNS42LCAtMTAuMCwgLTMuMiwgLTExLjUsIC0xMS4xLCAtMTAuNSwgLTguMywgLTYuMywgLTQuOSwgLTYuNywgLTEuMiwgLTEwLjYsIC05LjcsIC0xMS4zLCAtOC4wLCAtMTQuOCwgLTEzLjEsIC0xNS41LCAtMTEuNCwgLTcuNSwgLTcuNSwgLTcuMSwgLTUuOSwgLTguNCwgLTUuOCwgLTguMSwgLTMuNiwgLTkuOSwgLTkuNywgLTEwLjEsIC04LjIsIC01MC4wLCAtMy4wLCAtNTAuMCwgLTAuMSwgLTMuNSwgLTMuMywgLTMuNiwgLTAuNywgLTUwLjAsIDE0LjIsIC00LjgsIDE2LjQsIC04LjksIC01LjgsIC04LjksIC0zLjQsXSxcbiAgICAgICAgICAgIFstMTAuNywgLTEzLjIsIC0xMi40LCAtMTEuNiwgLTQuOCwgLTguNCwgLTYuMSwgLTcuMiwgLTEwLjMsIC0xMS44LCAtMTEuMCwgLTExLjYsIDIuOCwgLTEuNywgMC43LCAtMS4xLCAtNi4yLCAtOS43LCAtNy4zLCAtOC40LCAtNS4zLCAtOC42LCAtNi4xLCAtOC4zLCAtMTAuNSwgLTExLjIsIC05LjgsIC0xMC4yLCA5LjUsIDYuNSwgNy42LCA2LjgsIC0xMi4xLCAtMTYuMCwgLTEzLjAsIC0xNi4yLCAtNS4yLCAtOC42LCAtNy4xLCAtNy44LCAtMTIuNSwgLTE0LjQsIC0xMi4xLCAtMTMuMCwgMS40LCAtMy4wLCAtMS42LCAtMi40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjMsIC0wLjAsIC01LjQsIC0zLjUsIC00LjYsIC01MC4wLCAtMTAuMSwgLTguNiwgLTguOSwgMTMuMiwgLTAuOSwgOS43LCAtMC4zLF0sXG4gICAgICAgICAgICBbLTE4LjEsIC0xMi4zLCAtMTkuNCwgLTE0LjIsIC0xMi4yLCAtOS41LCAtMTEuNSwgLTEwLjgsIC0xNy45LCAtMTEuOSwgLTE4LjIsIC0xMy45LCAtNi40LCAtMy43LCAtNi44LCAtNS40LCAtMTIuOCwgLTUuOSwgLTEzLjYsIC03LjQsIC0xMy43LCAtOS45LCAtMTIuOSwgLTEyLjcsIC0xNi4yLCAtMTEuNiwgLTE1LjIsIC0xMi43LCAtMy4yLCAwLjUsIC0zLjMsIC0xLjgsIC0xOC45LCAtMTYuNiwgLTE4LjgsIC0xOS4yLCAtMTIuNSwgLTkuNCwgLTEwLjYsIC0xMS4xLCAtMTcuMywgLTE0LjEsIC0xNi4yLCAtMTYuMCwgLTcuOSwgLTMuNywgLTcuOCwgLTYuMywgLTUwLjAsIDMuNiwgLTUwLjAsIDIuMywgLTguNiwgLTQuMiwgLTguNCwgLTYuNiwgLTUwLjAsIC00LjMsIC04LjEsIC01LjgsIC0wLjksIDE0LjIsIC0xLjgsIDExLjYsXSxcbiAgICAgICAgICAgIFstMTEuOCwgLTEzLjEsIC0xMS41LCAtMTIuMCwgLTYuMiwgLTguMywgLTUuNCwgLTcuNCwgLTExLjgsIC0xMi4zLCAtMTEuMSwgLTExLjQsIDAuNSwgLTIuNSwgMi40LCAtMS42LCAtNi44LCAtOS45LCAtNi40LCAtOC45LCAtNi4xLCAtOC42LCAtNS4wLCAtNy44LCAtMTAuNCwgLTExLjYsIC04LjUsIC05LjksIDguMiwgNi40LCA4LjcsIDYuOSwgLTEyLjQsIC0xNy4wLCAtMTIuNiwgLTE1LjgsIC02LjUsIC04LjUsIC01LjAsIC03LjgsIC0xMy4yLCAtMTMuNiwgLTEwLjMsIC0xMy43LCAtMC43LCAtMy4yLCAtMC4zLCAtMi40LCAtNTAuMCwgLTkuNCwgLTUwLjAsIC04LjcsIC0yLjEsIC01LjYsIC0xLjIsIC00LjksIC01MC4wLCAtMTAuMCwgLTQuNSwgLTguOSwgOS43LCAtMS44LCAxMS4zLCAtMC45LF0sXG4gICAgICAgICAgICBbLTE3LjIsIC0xMy4zLCAtMTcuOCwgLTExLjYsIC0xMS4wLCAtMTEuMSwgLTEwLjQsIC05LjAsIC0xNi4wLCAtMTIuNywgLTE2LjEsIC0xMS4xLCAtNS4yLCAtNS40LCAtNi4wLCAtMy4zLCAtMTEuOCwgLTcuMywgLTEzLjMsIC01LjksIC0xMi43LCAtMTEuOSwgLTExLjksIC05LjMsIC0xNS4yLCAtMTUuMCwgLTE0LjksIC0xMS4wLCAtMi44LCAtMS44LCAtMi45LCAwLjQsIC0xNy40LCAtMTguNCwgLTE4LjMsIC0xNS45LCAtMTAuNywgLTExLjIsIC0xMC42LCAtOS4wLCAtMTUuNCwgLTE0LjgsIC0xNS44LCAtMTMuMywgLTYuOCwgLTUuOSwgLTcuMiwgLTMuOSwgLTUwLjAsIDIuMCwgLTUwLjAsIDMuOSwgLTcuMCwgLTYuOCwgLTYuOCwgLTMuOSwgLTUwLjAsIC01LjQsIC03LjMsIC0zLjQsIC0wLjMsIDExLjYsIC0wLjksIDE0LjEsXV07XG4gICAgICAgIHRoaXMuVFJBTlMgPSBbWzUsIDAsIDAsIDRdLFxuICAgICAgICAgICAgWzAsIDUsIDQsIDBdLFxuICAgICAgICAgICAgWzAsIDQsIDUsIDBdLFxuICAgICAgICAgICAgWzQsIDAsIDAsIDVdXTtcbiAgICAgICAgdGhpcy5DT05CTE8gPSB7ICdBJzogMCwgJ1InOiAxLCAnTic6IDIsICdEJzogMywgJ0MnOiA0LCAnUSc6IDUsICdFJzogNiwgJ0cnOiA3LCAnSCc6IDgsICdJJzogOSwgJ0wnOiAxMCwgJ0snOiAxMSwgJ00nOiAxMiwgJ0YnOiAxMywgJ1AnOiAxNCwgJ1MnOiAxNSwgJ1QnOiAxNiwgJ1cnOiAxNywgJ1knOiAxOCwgJ1YnOiAxOSwgJ0InOiAyMCwgJ1onOiAyMSwgJ1gnOiAyMiwgJyonOiAyMyB9O1xuICAgICAgICB0aGlzLkNPTk5VQ0wgPSB7ICdBJzogMCwgJ1QnOiAxLCAnQyc6IDIsICdHJzogMyB9O1xuICAgICAgICB0aGlzLkNPTlNDSE4gPSB7ICdBQUEnOiAwLCAnQUFDJzogMSwgJ0FBRyc6IDIsICdBQVQnOiAzLCAnQUNBJzogNCwgJ0FDQyc6IDUsICdBQ0cnOiA2LCAnQUNUJzogNywgJ0FHQSc6IDgsICdBR0MnOiA5LCAnQUdHJzogMTAsICdBR1QnOiAxMSwgJ0FUQSc6IDEyLCAnQVRDJzogMTMsICdBVEcnOiAxNCwgJ0FUVCc6IDE1LCAnQ0FBJzogMTYsICdDQUMnOiAxNywgJ0NBRyc6IDE4LCAnQ0FUJzogMTksICdDQ0EnOiAyMCwgJ0NDQyc6IDIxLCAnQ0NHJzogMjIsICdDQ1QnOiAyMywgJ0NHQSc6IDI0LCAnQ0dDJzogMjUsICdDR0cnOiAyNiwgJ0NHVCc6IDI3LCAnQ1RBJzogMjgsICdDVEMnOiAyOSwgJ0NURyc6IDMwLCAnQ1RUJzogMzEsICdHQUEnOiAzMiwgJ0dBQyc6IDMzLCAnR0FHJzogMzQsICdHQVQnOiAzNSwgJ0dDQSc6IDM2LCAnR0NDJzogMzcsICdHQ0cnOiAzOCwgJ0dDVCc6IDM5LCAnR0dBJzogNDAsICdHR0MnOiA0MSwgJ0dHRyc6IDQyLCAnR0dUJzogNDMsICdHVEEnOiA0NCwgJ0dUQyc6IDQ1LCAnR1RHJzogNDYsICdHVFQnOiA0NywgJ1RBQSc6IDQ4LCAnVEFDJzogNDksICdUQUcnOiA1MCwgJ1RBVCc6IDUxLCAnVENBJzogNTIsICdUQ0MnOiA1MywgJ1RDRyc6IDU0LCAnVENUJzogNTUsICdUR0EnOiA1NiwgJ1RHQyc6IDU3LCAnVEdHJzogNTgsICdUR1QnOiA1OSwgJ1RUQSc6IDYwLCAnVFRDJzogNjEsICdUVEcnOiA2MiwgJ1RUVCc6IDYzIH07XG4gICAgICAgIHRoaXMuc2V0TWV0aG9kKGFsaWduR3JpZF8pO1xuICAgICAgICB0aGlzLnNldFNlcXVlbmNlcyhzZXExXywgc2VxMl8pO1xuICAgICAgICB0aGlzLnNldEdhcChnYXBfKTtcbiAgICB9XG4gICAgZmlsbE5lZWRsZW1hbigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnBhcmVudEogPSAwO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMjsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS52YWx1ZSA9IC1pICogdGhpcy5nYXA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEogPSBpIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaWxsT25lKGksIGopIHtcbiAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPSBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1baiAtIDFdLnZhbHVlICsgdGhpcy5zY29yZXNbaSAtIDFdW2ogLSAxXSwgTWF0aC5tYXgodGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXAsIHRoaXMuZHBHcmlkW2ldW2ogLSAxXS52YWx1ZSAtIHRoaXMuZ2FwKSk7XG4gICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9PSB0aGlzLmRwR3JpZFtpIC0gMV1baiAtIDFdLnZhbHVlICsgdGhpcy5zY29yZXNbaSAtIDFdW2ogLSAxXSkge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGogLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqXS52YWx1ZSAtIHRoaXMuZ2FwKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gajtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGogLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdyaWRGcm9tTmFtZShwYXRoKSB7XG4gICAgICAgIHN3aXRjaCAocGF0aCkge1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNDUnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU00NTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU02Mic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTYyO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNODAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU04MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTkwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNOTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU0zMCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTMwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNNzAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU03MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTI1MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTI1MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ05VQ0xFT1RJREVTJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuTlVDTEVPVElERVM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OTlVDTDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVFJBTlMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5UUkFOUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTQ0hORUlERVInOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5TQ0hORUlERVI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OU0NITjtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RSZXN1bHQoaSwgaikge1xuICAgICAgICBsZXQgcmVzMSA9IFwiXCIsIHJlczIgPSBcIlwiLCBnYXBTID0gXCJcIjtcbiAgICAgICAgbGV0IHRvdGFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGVwOyBpKyspIHtcbiAgICAgICAgICAgIGdhcFMgKz0gJ3wnO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpID4gMCB8fCBqID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPT0gaSkge1xuICAgICAgICAgICAgICAgIHJlczEgPSBnYXBTICsgcmVzMTtcbiAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPT0gaikge1xuICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgICAgICByZXMxID0gdGhpcy5zZXExLnN1YnN0cigoaSAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMxID0gdGhpcy5zZXExLnN1YnN0cigoaSAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSBnYXBTICsgcmVzMTtcbiAgICAgICAgICAgICAgICBpZiAoaiAtIDEgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmVzMiA9IHRoaXMuc2VxMi5zdWJzdHIoKGogLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczI7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gZ2FwUyArIHJlczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdGVtcEkgPSBpO1xuICAgICAgICAgICAgaSA9IHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEk7XG4gICAgICAgICAgICBqID0gdGhpcy5kcEdyaWRbdGVtcEldW2pdLnBhcmVudEo7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBbGlnbmVkKHJlczEsIHJlczIsIHRvdGFsKTtcbiAgICB9XG4gICAgZmlsbFNjb3JlcygpIHtcbiAgICAgICAgdGhpcy5zY29yZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zY29yZXMucHVzaChbXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY29yZXNbaV0ucHVzaCh0aGlzLmFsaWduR3JpZFt0aGlzLmNvbm5lY3Rpb25zW3RoaXMuc2VxMS5zdWJzdHIoaSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKV1dW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXEyLnN1YnN0cihqICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHR5cGVSZWMoKSB7XG4gICAgICAgIGlmICgvW0FUR0NdKi8udGVzdCh0aGlzLnNlcTEpICYmIC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMikpXG4gICAgICAgICAgICByZXR1cm4gXCJOVUNMRU9USURFU1wiO1xuICAgICAgICBpZiAoL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTEpICYmIC9bQVJORENRRUdISUxLTUZQU1RXWVZCWlgqXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIkJMT1NVTTYyXCI7XG4gICAgICAgIHRocm93IEVycm9yKFwiQ2FuJ3QgcmVjb2duaXplIHNlcXVlbmNlIHR5cGVcIik7XG4gICAgfVxuICAgIG5lZWRsZW1hbld1bmNoKCkge1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMSArIDE7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjIgKyAxOyBqKyspXG4gICAgICAgICAgICAgICAgcm93LnB1c2gobmV3IENlbGwoKSk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZC5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsTmVlZGxlbWFuKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbE9uZShpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQodGhpcy5sZW4xLCB0aGlzLmxlbjIpO1xuICAgIH1cbiAgICBzbWl0aFdhdGVybWFuKCkge1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMSArIDE7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjIgKyAxOyBqKyspXG4gICAgICAgICAgICAgICAgcm93LnB1c2gobmV3IENlbGwoKSk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZC5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJlc3RWYWwgPSAwO1xuICAgICAgICBsZXQgYmVzdEkgPSAwLCBiZXN0SiA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbE9uZShpLCBqKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SV1bdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50Sl0udmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA+IGJlc3RWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgYmVzdFZhbCA9IHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0SSA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RKID0gajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0UmVzdWx0KGJlc3RJLCBiZXN0Sik7XG4gICAgfVxuICAgIHNldFNlcXVlbmNlcyhzZXExXywgc2VxMl8pIHtcbiAgICAgICAgdGhpcy5zZXExID0gc2VxMV87XG4gICAgICAgIHRoaXMuc2VxMiA9IHNlcTJfO1xuICAgICAgICB0aGlzLmxlbjEgPSB0aGlzLnNlcTEubGVuZ3RoIC8gdGhpcy5zdGVwO1xuICAgICAgICB0aGlzLmxlbjIgPSB0aGlzLnNlcTIubGVuZ3RoIC8gdGhpcy5zdGVwO1xuICAgICAgICB0aGlzLmZpbGxTY29yZXMoKTtcbiAgICB9XG4gICAgc2V0R2FwKGdhcF8pIHtcbiAgICAgICAgdGhpcy5nYXAgPSBnYXBfO1xuICAgIH1cbiAgICBzZXRNZXRob2QoYWxpZ25HcmlkXyA9IFwiXCIpIHtcbiAgICAgICAgaWYgKGFsaWduR3JpZF8gPT0gXCJBVVRPXCIpIHtcbiAgICAgICAgICAgIGFsaWduR3JpZF8gPSB0aGlzLnR5cGVSZWMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRGcm9tTmFtZShhbGlnbkdyaWRfKTtcbiAgICB9XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hY3JvTW9sKG1vbm9tZXJzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBjb25zdCBtb2R1bGVSZGtpdCA9IHlpZWxkIGdyb2suZnVuY3Rpb25zLmNhbGwoJ0NoZW06Z2V0UmRLaXRNb2R1bGUnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb25vbWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVyc1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbCA9IG1vZHVsZVJka2l0LmdldF9tb2wobW9ub21lcnNbaV1bal1bJ21vbGZpbGUnXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IG1vbC5nZXRfdjNLbW9sYmxvY2soKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRpY2VzID0gZ2V0SW5kaWNlcyhtb25vbWVyc1tpXVtqXSwgYSk7XG4gICAgICAgICAgICAgICAgbW9ub21lcnNbaV1bal1bJ2luZGljZXMnXSA9IGluZGljZXM7XG4gICAgICAgICAgICAgICAgbW9ub21lcnNbaV1bal1bJ21vbGZpbGUnXSA9IHlpZWxkIHJvdGF0ZUJhY2tib25lVjMwMDAoYSwgaW5kaWNlcyk7XG4gICAgICAgICAgICAgICAgbW9sID09PSBudWxsIHx8IG1vbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogbW9sLmRlbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobGlua1YzMDAwKG1vbm9tZXJzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldEluZGljZXMobW9ub21lciwgbW9sVjMwMDApIHtcbiAgICBjb25zdCBtb2xmaWxlID0gbW9ub21lcltcIm1vbGZpbGVcIl07XG4gICAgbGV0IGluZGV4U3RhcnQgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFJHUCcsIDApICsgODtcbiAgICBsZXQgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4U3RhcnQpO1xuICAgIGNvbnN0IGluZGljZXNEYXRhID0gbW9sZmlsZS5zdWJzdHJpbmcoaW5kZXhTdGFydCwgaW5kZXhFbmQpLnJlcGxhY2VBbGwoJyAgJywgJyAnKS5yZXBsYWNlQWxsKCcgICcsICcgJyk7XG4gICAgbGV0IHBhcnNlZERhdGEgPSBpbmRpY2VzRGF0YS5zcGxpdCgnICcpO1xuICAgIGNvbnN0IHJlbUZpcnN0ID0gcGFyc2VkRGF0YVsyXSA9PSAnMScgPyBwYXJzZUludChwYXJzZWREYXRhWzFdKSA6IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgIGNvbnN0IHJlbUxhc3QgPSBwYXJzZWREYXRhWzJdID09ICcyJyA/IHBhcnNlSW50KHBhcnNlZERhdGFbMV0pIDogcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbFYzMDAwKTtcbiAgICBsZXQgaW5kZXhCb25kcyA9IG1vbFYzMDAwLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBCT05EJyk7IC8vIFYzMDAwIGluZGV4IGZvciBib25kc1xuICAgIGluZGV4Qm9uZHMgPSBtb2xWMzAwMC5pbmRleE9mKCdcXG4nLCBpbmRleEJvbmRzKTtcbiAgICBpbmRleFN0YXJ0ID0gaW5kZXhCb25kcztcbiAgICBpbmRleEVuZCA9IGluZGV4Qm9uZHM7XG4gICAgbGV0IGZpcnN0ID0gMDtcbiAgICBsZXQgbGFzdCA9IDA7XG4gICAgbGV0IHJlbUJvbmRGaXJzdCA9IDA7XG4gICAgbGV0IHJlbUJvbmRMYXN0ID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bWJlcnMubmJvbmQ7IGorKykge1xuICAgICAgICBpZiAoZmlyc3QgPT0gMCB8fCBsYXN0ID09IDApIHtcbiAgICAgICAgICAgIGluZGV4U3RhcnQgPSBtb2xWMzAwMC5pbmRleE9mKCdWMzAnLCBpbmRleFN0YXJ0KSArIDQ7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbFYzMDAwLmluZGV4T2YoJ1xcbicsIGluZGV4U3RhcnQpO1xuICAgICAgICAgICAgY29uc3QgYm9uZERhdGEgPSBtb2xWMzAwMC5zdWJzdHJpbmcoaW5kZXhTdGFydCwgaW5kZXhFbmQpLnJlcGxhY2VBbGwoJyAgJywgJyAnKS5yZXBsYWNlQWxsKCcgICcsICcgJyk7XG4gICAgICAgICAgICBwYXJzZWREYXRhID0gYm9uZERhdGEuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgIGlmIChwYXJzZUludChwYXJzZWREYXRhWzJdKSA9PSByZW1GaXJzdCkge1xuICAgICAgICAgICAgICAgIGZpcnN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZEZpcnN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXJzZUludChwYXJzZWREYXRhWzNdKSA9PSByZW1GaXJzdCkge1xuICAgICAgICAgICAgICAgIGZpcnN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVsyXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZEZpcnN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXJzZUludChwYXJzZWREYXRhWzJdKSA9PSByZW1MYXN0KSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbM10pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRMYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChwYXJzZUludChwYXJzZWREYXRhWzNdKSA9PSByZW1MYXN0KSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHBhcnNlSW50KHBhcnNlZERhdGFbMl0pO1xuICAgICAgICAgICAgICAgIHJlbUJvbmRMYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZmlyc3QsIGxhc3QsIHJlbUZpcnN0LCByZW1MYXN0LCByZW1Cb25kRmlyc3QsIHJlbUJvbmRMYXN0IH07XG59XG5mdW5jdGlvbiByb3RhdGVCYWNrYm9uZVYzMDAwKG1vbEJsb2NrLCBpbmRpY2VzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xCbG9jayk7XG4gICAgICAgIGNvbnN0IG5hdG9tID0gY29vcmRpbmF0ZXMuYXRvbUluZGV4Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBpbmRpY2VzWydmaXJzdCddO1xuICAgICAgICBjb25zdCBsYXN0ID0gaW5kaWNlc1snbGFzdCddO1xuICAgICAgICBjb25zdCB4Q2VudGVyID0gKGNvb3JkaW5hdGVzLnhbbGFzdF0gKyBjb29yZGluYXRlcy54W2ZpcnN0XSkgLyAyO1xuICAgICAgICBjb25zdCB5Q2VudGVyID0gKGNvb3JkaW5hdGVzLnlbbGFzdF0gKyBjb29yZGluYXRlcy55W2ZpcnN0XSkgLyAyO1xuICAgICAgICAvL3BsYWNlIHRvIGNlbnRlclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geENlbnRlcjtcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnlbaV0gLT0geUNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYW5nbGUgPSAwO1xuICAgICAgICBpZiAoY29vcmRpbmF0ZXMueFtmaXJzdF0gPT0gMClcbiAgICAgICAgICAgIGFuZ2xlID0gY29vcmRpbmF0ZXMueVtmaXJzdF0gPiBjb29yZGluYXRlcy55W2xhc3RdID8gTWF0aC5QSSAvIDIgOiAzICogTWF0aC5QSSAvIDI7XG4gICAgICAgIGVsc2UgaWYgKGNvb3JkaW5hdGVzLnlbZmlyc3RdID09IDApXG4gICAgICAgICAgICBhbmdsZSA9IGNvb3JkaW5hdGVzLnhbZmlyc3RdID4gY29vcmRpbmF0ZXMueFtsYXN0XSA/IE1hdGguUEkgOiAwO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcml2YXRpdmUgPSBjb29yZGluYXRlcy55W2ZpcnN0XSAvIGNvb3JkaW5hdGVzLnhbZmlyc3RdO1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzLnhbZmlyc3RdIDwgY29vcmRpbmF0ZXMueFtsYXN0XSlcbiAgICAgICAgICAgICAgICBhbmdsZSA9IGRlcml2YXRpdmUgPiAwID8gTWF0aC5QSSAtIE1hdGguYXRhbihkZXJpdmF0aXZlKSA6IE1hdGguYXRhbihkZXJpdmF0aXZlKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBhbmdsZSA9IGRlcml2YXRpdmUgPiAwID8gTWF0aC5hdGFuKGRlcml2YXRpdmUpIDogTWF0aC5QSSAtIE1hdGguYXRhbihkZXJpdmF0aXZlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKGFuZ2xlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4QWRkID0gY29vcmRpbmF0ZXMueFtpXTtcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gPSB4QWRkICogY29zIC0gY29vcmRpbmF0ZXMueVtpXSAqIHNpbjtcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnlbaV0gPSB4QWRkICogc2luICsgY29vcmRpbmF0ZXMueVtpXSAqIGNvcztcbiAgICAgICAgfVxuICAgICAgICAvL3BsYWNlIHRvIHJpZ2h0XG4gICAgICAgIGNvbnN0IHhTaGlmdCA9IGNvb3JkaW5hdGVzLnhbZmlyc3RdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspXG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldIC09IHhTaGlmdDtcbiAgICAgICAgLy9yZXdyaXRlIG1vbEJsb2NrXG4gICAgICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KTtcbiAgICAgICAgbGV0IGluZGV4RW5kID0gaW5kZXg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXhFbmQpO1xuICAgICAgICAgICAgbW9sQmxvY2sgPSBtb2xCbG9jay5zbGljZSgwLCBpbmRleCkgK1xuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gKyAnICcgKyBjb29yZGluYXRlcy55W2ldICtcbiAgICAgICAgICAgICAgICBtb2xCbG9jay5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1vbEJsb2NrO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2spIHtcbiAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2spO1xuICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgIGxldCBpbmRleEVuZCA9IGluZGV4O1xuICAgIGNvbnN0IGluZGV4ZXMgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB0eXBlcyA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHggPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB5ID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJzLm5hdG9tOyBpKyspIHtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIGluZGV4ZXNbaV0gPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHR5cGVzW2ldID0gbW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHhbaV0gPSBwYXJzZUZsb2F0KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgeVtpXSA9IHBhcnNlRmxvYXQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgfVxuICAgIHJldHVybiB7IGF0b21JbmRleDogaW5kZXhlcywgYXRvbVR5cGU6IHR5cGVzLCB4OiB4LCB5OiB5IH07XG59XG5mdW5jdGlvbiBsaW5rVjMwMDAobW9ub21lcnMpIHtcbiAgICBsZXQgbWFjcm9Nb2xCbG9jayA9ICdcXG5EYXRhZ3JvayBtYWNyb21vbGVjdWxlIGhhbmRsZXJcXG5cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJyAgMCAgMCAgMCAgMCAgMCAgMCAgICAgICAgICAgIDk5OSBWMzAwMFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIENUQUJcXG4nO1xuICAgIGxldCBhdG9tQmxvY2sgPSAnJztcbiAgICBsZXQgYm9uZEJsb2NrID0gJyc7XG4gICAgbGV0IGNvbGxlY3Rpb25CbG9jayA9ICcnO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBbXTtcbiAgICBsZXQgbmF0b20gPSAwO1xuICAgIGxldCBuYm9uZCA9IDA7XG4gICAgbGV0IHhTaGlmdCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb25vbWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbW9sZmlsZSA9IG1vbm9tZXJzW2ldWydtb2xmaWxlJ107XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsnZmlyc3QnXTtcbiAgICAgICAgY29uc3QgbGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ2xhc3QnXTtcbiAgICAgICAgY29uc3QgcmVtRmlyc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1GaXJzdCddO1xuICAgICAgICBjb25zdCByZW1MYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsncmVtTGFzdCddO1xuICAgICAgICBjb25zdCByZW1Cb25kRmlyc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1Cb25kRmlyc3QnXTtcbiAgICAgICAgY29uc3QgcmVtQm9uZExhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1Cb25kTGFzdCddO1xuICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5yZXBsYWNlQWxsKCcoLVxcbk0gIFYzMCAnLCAnKCcpXG4gICAgICAgICAgICAucmVwbGFjZUFsbCgnLVxcbk0gIFYzMCAnLCAnJykucmVwbGFjZUFsbCgnICknLCAnKScpO1xuICAgICAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sZmlsZSk7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sZmlsZSk7XG4gICAgICAgIGxldCBpbmRleEF0b21zID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICAgICAgaW5kZXhBdG9tcyA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhBdG9tcyk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4QXRvbXM7XG4gICAgICAgIGxldCBpbmRleEVuZCA9IGluZGV4QXRvbXM7XG4gICAgICAgIGNvbnN0IHRvdGFsU2hpZnQgPSB4U2hpZnQgLSBjb29yZGluYXRlcy54W2ZpcnN0IC0gMV07XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYXRvbTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXMuYXRvbUluZGV4W2pdICE9IHJlbUZpcnN0ICYmIGNvb3JkaW5hdGVzLmF0b21JbmRleFtqXSAhPSByZW1MYXN0KSB7IC8vfHwgaSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGF0b20gbnVtYmVyXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgICAgIChhdG9tTnVtYmVyID4gcmVtRmlyc3QgfHwgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDEgOiBhdG9tTnVtYmVyO1xuICAgICAgICAgICAgICAgIGF0b21OdW1iZXIgKz0gbmF0b207XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIC8vcmV3cml0ZSBjb29yZGluYXRlc1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvb3JkaW5hdGUgPSBNYXRoLnJvdW5kKDEwMDAwICogKHBhcnNlRmxvYXQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSkgKyB0b3RhbFNoaWZ0KSkgLyAxMDAwMDtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBjb29yZGluYXRlICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGUgPSBNYXRoLnJvdW5kKDEwMDAwICogKHBhcnNlRmxvYXQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSkpKSAvIDEwMDAwO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAnLCBpbmRleCkgLSAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4QXRvbXNFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBFTkQgQVRPTScpO1xuICAgICAgICBhdG9tQmxvY2sgKz0gbW9sZmlsZS5zdWJzdHJpbmcoaW5kZXhBdG9tcyArIDEsIGluZGV4QXRvbXNFbmQpO1xuICAgICAgICBsZXQgaW5kZXhCb25kcyA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEJFR0lOIEJPTkQnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGJvbmRzXG4gICAgICAgIGluZGV4Qm9uZHMgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4Qm9uZHMpO1xuICAgICAgICBpbmRleCA9IGluZGV4Qm9uZHM7XG4gICAgICAgIGluZGV4RW5kID0gaW5kZXhCb25kcztcbiAgICAgICAgbGV0IGJvbmROdW1iZXIgPSAwO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bWJlcnMubmJvbmQ7IGorKykge1xuICAgICAgICAgICAgLy9yZXdyaXRlIGJvbmQgbnVtYmVyXG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgYm9uZE51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgaWYgKGJvbmROdW1iZXIgPT0gcmVtQm9uZEZpcnN0IHx8IGJvbmROdW1iZXIgPT0gcmVtQm9uZExhc3QpIHtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleCAtPSA3O1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm9uZE51bWJlciA9IChib25kTnVtYmVyID4gcmVtQm9uZEZpcnN0ICYmIGJvbmROdW1iZXIgPiByZW1Cb25kTGFzdCkgPyBib25kTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGJvbmROdW1iZXIgPiByZW1Cb25kRmlyc3QgfHwgYm9uZE51bWJlciA+IHJlbUJvbmRMYXN0KSA/IGJvbmROdW1iZXIgLSAxIDogYm9uZE51bWJlcjtcbiAgICAgICAgICAgIGJvbmROdW1iZXIgKz0gbmJvbmQ7XG4gICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBib25kTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAvL3Jld3JpdGUgYXRvbSBwYWlyIGluIGJvbmRcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgbGV0IGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYXRvbU51bWJlciA+IHJlbUZpcnN0IHx8IGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAxIDogYXRvbU51bWJlcjtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgKz0gbmF0b207XG4gICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IE1hdGgubWluKG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXgpLCBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkpO1xuICAgICAgICAgICAgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChhdG9tTnVtYmVyID4gcmVtRmlyc3QgfHwgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDEgOiBhdG9tTnVtYmVyO1xuICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4Qm9uZEVuZCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEVORCBCT05EJyk7XG4gICAgICAgIGJvbmRCbG9jayArPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleEJvbmRzICsgMSwgaW5kZXhCb25kRW5kKTtcbiAgICAgICAgLy9sZXQgaW5kZXhDb2xsZWN0aW9uID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJyk7IC8vIFYzMDAwIGluZGV4IGZvciBjb2xsZWN0aW9uc1xuICAgICAgICAvLyB3aGlsZSAoaW5kZXhDb2xsZWN0aW9uICE9IC0xKSB7XG4gICAgICAgIC8vICAgaW5kZXhDb2xsZWN0aW9uICs9IDI4O1xuICAgICAgICAvLyAgIGNvbnN0IGNvbGxlY3Rpb25FbmQgPSBtb2xmaWxlLmluZGV4T2YoJyknLCBpbmRleENvbGxlY3Rpb24pO1xuICAgICAgICAvLyAgIGNvbnN0IGNvbGxlY3Rpb25FbnRyaWVzID0gbW9sZmlsZS5zdWJzdHJpbmcoaW5kZXhDb2xsZWN0aW9uLCBjb2xsZWN0aW9uRW5kKS5zcGxpdCgnICcpLnNsaWNlKDEpO1xuICAgICAgICAvLyAgIGNvbGxlY3Rpb25FbnRyaWVzLmZvckVhY2goKGU6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyAgICAgY29sbGVjdGlvbi5wdXNoKHBhcnNlSW50KGUpICsgbmF0b20pO1xuICAgICAgICAvLyAgIH0pO1xuICAgICAgICAvLyAgIGluZGV4Q29sbGVjdGlvbiA9IGNvbGxlY3Rpb25FbmQ7XG4gICAgICAgIC8vICAgaW5kZXhDb2xsZWN0aW9uID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJywgaW5kZXhDb2xsZWN0aW9uKTtcbiAgICAgICAgLy8gfVxuICAgICAgICBuYXRvbSArPSBudW1iZXJzLm5hdG9tIC0gMjtcbiAgICAgICAgbmJvbmQgKz0gbnVtYmVycy5uYm9uZCAtIDI7XG4gICAgICAgIHhTaGlmdCArPSBjb29yZGluYXRlcy54W2xhc3RdIC0gY29vcmRpbmF0ZXMueFtmaXJzdF0gKyAxO1xuICAgICAgICBpZiAoaSA9PSBtb25vbWVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuYXRvbSsrO1xuICAgICAgICAgICAgY29uc3Qgc2hpZnQgPSB4U2hpZnQgKyAwLjI7XG4gICAgICAgICAgICBhdG9tQmxvY2sgKz0gJ00gIFYzMCAnICsgbmF0b20gKyAnIE8gJyArIHNoaWZ0ICsgJyAwIDAuMDAwMDAwIDBcXG4nO1xuICAgICAgICB9XG4gICAgICAgIG5ib25kKys7XG4gICAgICAgIGlmIChpID09IG1vbm9tZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VGVybWluYWwgPSAobGFzdCA+IHJlbUZpcnN0ICYmIGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAzIDpcbiAgICAgICAgICAgICAgICAobGFzdCA+IHJlbUZpcnN0IHx8IGxhc3QgPiByZW1MYXN0KSA/IGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMikgLSAyIDpcbiAgICAgICAgICAgICAgICAgICAgbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDE7XG4gICAgICAgICAgICBib25kQmxvY2sgKz0gJ00gIFYzMCAnICsgbmJvbmQgKyAnIDEgJyArIHJpZ2h0VGVybWluYWwgKyAnICcgKyBuYXRvbSArICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRUZXJtaW5hbCA9IChsYXN0ID4gcmVtRmlyc3QgJiYgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDIgOlxuICAgICAgICAgICAgICAgIChsYXN0ID4gcmVtRmlyc3QgfHwgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDEgOlxuICAgICAgICAgICAgICAgICAgICBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IG1vbm9tZXJzW2kgKyAxXVsnaW5kaWNlcyddO1xuICAgICAgICAgICAgY29uc3QgbmV4dEZpcnN0ID0gbmV4dFsnZmlyc3QnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZW1GaXJzdCA9IG5leHRbJ3JlbUZpcnN0J107XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVtTGFzdCA9IG5leHRbJ3JlbUxhc3QnXTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRUZXJtaW5hbCA9IChuZXh0Rmlyc3QgPiBuZXh0UmVtRmlyc3QgJiYgbmV4dEZpcnN0ID4gbmV4dFJlbUxhc3QpID8gbmV4dEZpcnN0ICsgbmF0b20gLSAyIDpcbiAgICAgICAgICAgICAgICAobmV4dEZpcnN0ID4gbmV4dFJlbUZpcnN0IHx8IG5leHRGaXJzdCA+IG5leHRSZW1MYXN0KSA/IG5leHRGaXJzdCArIG5hdG9tIC0gMSA6XG4gICAgICAgICAgICAgICAgICAgIG5leHRGaXJzdCArIG5hdG9tO1xuICAgICAgICAgICAgYm9uZEJsb2NrICs9ICdNICBWMzAgJyArIG5ib25kICsgJyAxICcgKyByaWdodFRlcm1pbmFsICsgJyAnICsgbGVmdFRlcm1pbmFsICsgJ1xcbic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gY29uc3QgZW50cmllcyA9IDQ7XG4gICAgLy8gY29uc3QgY29sbE51bWJlciA9IE1hdGguY2VpbChjb2xsZWN0aW9uLmxlbmd0aCAvIGVudHJpZXMpO1xuICAgIC8vIGNvbGxlY3Rpb25CbG9jayArPSAnTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcgKyBjb2xsZWN0aW9uLmxlbmd0aCArICcgLVxcbic7XG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xsTnVtYmVyOyBpKyspIHtcbiAgICAvLyAgIGNvbGxlY3Rpb25CbG9jayArPSAnTSAgVjMwICc7XG4gICAgLy8gICBjb25zdCBlbnRyaWVzQ3VycmVudCA9IGkgKyAxID09IGNvbGxOdW1iZXIgPyBjb2xsZWN0aW9uLmxlbmd0aCAtIChjb2xsTnVtYmVyIC0gMSkqZW50cmllcyA6IGVudHJpZXM7XG4gICAgLy8gICBmb3IgKGxldCBqID0gMDsgaiA8IGVudHJpZXNDdXJyZW50OyBqKyspIHtcbiAgICAvLyAgICAgY29sbGVjdGlvbkJsb2NrICs9IChqICsgMSA9PSBlbnRyaWVzQ3VycmVudCkgP1xuICAgIC8vICAgICAgIChpID09IGNvbGxOdW1iZXIgLSAxID8gY29sbGVjdGlvbltlbnRyaWVzKmkgKyBqXSArICcpXFxuJyA6IGNvbGxlY3Rpb25bZW50cmllcyppICsgal0gKyAnIC1cXG4nKSA6XG4gICAgLy8gICAgICAgY29sbGVjdGlvbltlbnRyaWVzKmkgKyBqXSArICcgJztcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy9nZW5lcmF0ZSBmaWxlXG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIENPVU5UUyAnICsgbmF0b20gKyAnICcgKyBuYm9uZCArICcgMCAwIDBcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBBVE9NXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9IGF0b21CbG9jaztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIEFUT01cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBCT05EXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9IGJvbmRCbG9jaztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIEJPTkRcXG4nO1xuICAgIC8vbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIENPTExFQ1RJT05cXG4nO1xuICAgIC8vbWFjcm9Nb2xCbG9jayArPSBjb2xsZWN0aW9uQmxvY2s7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIENPTExFQ1RJT05cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQ1RBQlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgRU5EXFxuJztcbiAgICByZXR1cm4gbWFjcm9Nb2xCbG9jaztcbn1cbmZ1bmN0aW9uIGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2NrKSB7XG4gICAgbW9sQmxvY2sgPSBtb2xCbG9jay5yZXBsYWNlQWxsKCdcXHInLCAnJyk7IC8vZXF1YWxpemUgb2xkIGFuZCBuZXcgc2RmIHN0YW5kYXJkc1xuICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ0NPVU5UUycpICsgNzsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGFuZCBib25kcyBudW1iZXJcbiAgICBsZXQgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgIGNvbnN0IGF0b21zTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICBjb25zdCBib25kc051bWJlciA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICByZXR1cm4geyBuYXRvbTogYXRvbXNOdW1iZXIsIG5ib25kOiBib25kc051bWJlciB9O1xufVxuIiwiaW1wb3J0ICogYXMgQyBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENoZW1QYWxldHRlIH0gZnJvbSBcIi4vY2hlbS1wYWxldHRlXCI7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzXCI7XG5pbXBvcnQgeyBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlc1wiO1xuaW1wb3J0IHsgVW5rbm93blNlcVBhbGV0dGVzIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duXCI7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSBcIkBkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvXCI7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuY29uc3QgbHJ1ID0gbmV3IERHLkxydUNhY2hlKCk7XG5mdW5jdGlvbiBnZXRQYWxsZXRlQnlUeXBlKHBhbGV0dGVUeXBlKSB7XG4gICAgc3dpdGNoIChwYWxldHRlVHlwZSkge1xuICAgICAgICBjYXNlICdQVCc6XG4gICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgIGNhc2UgJ05UJzpcbiAgICAgICAgICAgIHJldHVybiBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgLy8gb3RoZXJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NTZXF1ZW5jZShzdWJQYXJ0cykge1xuICAgIGNvbnN0IHNpbXBsaWZpZWQgPSAhc3ViUGFydHMuc29tZSgoYW1pbm8sIGluZGV4KSA9PiBhbWluby5sZW5ndGggPiAxICYmXG4gICAgICAgIGluZGV4ICE9IDAgJiZcbiAgICAgICAgaW5kZXggIT0gc3ViUGFydHMubGVuZ3RoIC0gMSk7XG4gICAgY29uc3QgdGV4dCA9IFtdO1xuICAgIGNvbnN0IGdhcCA9IHNpbXBsaWZpZWQgPyAnJyA6ICcgJztcbiAgICBzdWJQYXJ0cy5mb3JFYWNoKChhbWlubywgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4IDwgc3ViUGFydHMubGVuZ3RoKVxuICAgICAgICAgICAgYW1pbm8gKz0gYCR7YW1pbm8gPyAnJyA6ICctJ30ke2dhcH1gO1xuICAgICAgICB0ZXh0LnB1c2goYW1pbm8pO1xuICAgIH0pO1xuICAgIHJldHVybiBbdGV4dCwgc2ltcGxpZmllZF07XG59XG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgYSBzdHJpbmcgYWxpZ25lZCB0byBsZWZ0IG9yIGNlbnRlcmVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3IFdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IGggSGVpZ2h0LlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHByaW50LlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj1DaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvcl0gU3RyaW5nIGNvbG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwaXZvdD0wXSBQaXJ2b3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsZWZ0PWZhbHNlXSBJcyBsZWZ0IGFsaWduZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtoaWRlTW9kPWZhbHNlXSBIaWRlIGFtaW5vIGFjaWQgcmVkaWR1ZSBtb2RpZmljYXRpb25zLlxuICogQHBhcmFtIHtudW1iZXJ9IFt0cmFuc3BhcmVuY3lSYXRlPTAuMF0gVHJhbnNwYXJlbmN5IHJhdGUgd2hlcmUgMS4wIGlzIGZ1bGx5IHRyYW5zcGFyZW50XG4gKiBAcmV0dXJuIHtudW1iZXJ9IHggY29vcmRpbmF0ZSB0byBzdGFydCBwcmludGluZyBhdC5cbiAqL1xuZnVuY3Rpb24gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IENoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgaGlkZU1vZCA9IGZhbHNlLCB0cmFuc3BhcmVuY3lSYXRlID0gMS4wLCBzZXBhcmF0b3IgPSAnJykge1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBsZXQgY29sb3JQYXJ0ID0gcy5zdWJzdHJpbmcoMCk7XG4gICAgbGV0IGdyYXlQYXJ0ID0gc2VwYXJhdG9yO1xuICAgIGNvbnN0IHRleHRTaXplID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQgKyBncmF5UGFydCk7XG4gICAgY29uc3QgaW5kZW50ID0gNTtcbiAgICBjb25zdCBjb2xvclRleHRTaXplID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQpO1xuICAgIGNvbnN0IGR5ID0gKHRleHRTaXplLmZvbnRCb3VuZGluZ0JveEFzY2VudCArIHRleHRTaXplLmZvbnRCb3VuZGluZ0JveERlc2NlbnQpIC8gMjtcbiAgICBmdW5jdGlvbiBkcmF3KGR4MSwgZHgyKSB7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gY29sb3I7XG4gICAgICAgIGcuZ2xvYmFsQWxwaGEgPSB0cmFuc3BhcmVuY3lSYXRlO1xuICAgICAgICBnLmZpbGxUZXh0KGNvbG9yUGFydCwgeCArIGR4MSwgeSArIGR5KTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnIzgwODA4MCc7XG4gICAgICAgIGcuZmlsbFRleHQoZ3JheVBhcnQsIHggKyBkeDIsIHkgKyBkeSk7XG4gICAgfVxuICAgIGlmIChsZWZ0IHx8IHRleHRTaXplLndpZHRoID4gdykge1xuICAgICAgICBkcmF3KGluZGVudCwgaW5kZW50ICsgY29sb3JUZXh0U2l6ZS53aWR0aCk7XG4gICAgICAgIHJldHVybiB4ICsgY29sb3JUZXh0U2l6ZS53aWR0aCArIGcubWVhc3VyZVRleHQoZ3JheVBhcnQpLndpZHRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgZHggPSAodyAtIHRleHRTaXplLndpZHRoKSAvIDI7XG4gICAgICAgIGRyYXcoZHgsIGR4ICsgY29sb3JUZXh0U2l6ZS53aWR0aCk7XG4gICAgICAgIHJldHVybiB4ICsgZHggKyBjb2xvclRleHRTaXplLndpZHRoO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlbmRlclNlcXVlbnNlKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkO1xuICAgIGNvbnN0IGNlbGwgPSBncmlkQ2VsbC5jZWxsO1xuICAgIGNvbnN0IFt0eXBlLCBzdWJ0eXBlLCBwYWxldHRlVHlwZV0gPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUykuc3BsaXQoXCI6XCIpO1xuICAgIHcgPSBncmlkID8gTWF0aC5taW4oZ3JpZC5jYW52YXMud2lkdGggLSB4LCB3KSA6IGcuY2FudmFzLndpZHRoIC0geDtcbiAgICBnLnNhdmUoKTtcbiAgICBnLmJlZ2luUGF0aCgpO1xuICAgIGcucmVjdCh4LCB5LCB3LCBoKTtcbiAgICBnLmNsaXAoKTtcbiAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgIGcudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgY29uc3QgcyA9IChfYSA9IGNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgIC8vVE9ETzogY2FuIHRoaXMgYmUgcmVwbGFjZWQvbWVyZ2VkIHdpdGggc3BsaXRTZXF1ZW5jZT9cbiAgICBjb25zdCB1bml0cyA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICBjb25zdCBwYWxldHRlID0gZ2V0UGFsbGV0ZUJ5VHlwZShwYWxldHRlVHlwZSk7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gKF9iID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJyc7XG4gICAgY29uc3Qgc3BsaXR0ZXJGdW5jID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSk7IC8vIHNwbGl0dGVyLFxuICAgIGNvbnN0IHN1YlBhcnRzID0gc3BsaXR0ZXJGdW5jKGNlbGwudmFsdWUpO1xuICAgIGNvbnN0IHRleHRTaXplID0gZy5tZWFzdXJlVGV4dChzdWJQYXJ0cy5qb2luKCcnKSk7XG4gICAgbGV0IHgxID0gTWF0aC5tYXgoeCwgeCArICh3IC0gdGV4dFNpemUud2lkdGgpIC8gMik7XG4gICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCBbY29sb3IsIG91dGVyQW1pbm8sICwgcGl2b3RdID0gQ2hlbVBhbGV0dGUuZ2V0Q29sb3JBQVBpdm90KGFtaW5vKTtcbiAgICAgICAgY29sb3IgPSBwYWxldHRlLmdldChhbWlubyk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3I7XG4gICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYW1pbm8sIGNvbG9yLCBwaXZvdCwgdHJ1ZSwgZmFsc2UsIDEuMCwgc2VwYXJhdG9yKTtcbiAgICB9KTtcbiAgICBnLnJlc3RvcmUoKTtcbn1cbmV4cG9ydCBjbGFzcyBNYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXIgZXh0ZW5kcyBERy5HcmlkQ2VsbFJlbmRlcmVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnbWFjcm9tb2xlY3VsZVNlcXVlbmNlJzsgfVxuICAgIGdldCBjZWxsVHlwZSgpIHsgcmV0dXJuIEMuU0VNX1RZUEVTLk1hY3JvX01vbGVjdWxlOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAzMDsgfVxuICAgIGdldCBkZWZhdWx0V2lkdGgoKSB7IHJldHVybiAyMzA7IH1cbiAgICAvKipcbiAgICAgKiBDZWxsIHJlbmRlcmVyIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3IHdpZHRoIG9mIHRoZSBjZWxsLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoIGhlaWdodCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge0RHLkdyaWRDZWxsfSBncmlkQ2VsbCBHcmlkIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbFN0eWxlfSBjZWxsU3R5bGUgQ2VsbCBzdHlsZS5cbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4gICAgICovXG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgZ3JpZCA9IGdyaWRDZWxsLmdyaWQ7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBncmlkQ2VsbC5jZWxsO1xuICAgICAgICBjb25zdCB0YWcgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGlmICh0YWcgPT09ICdIRUxNJykge1xuICAgICAgICAgICAgbGV0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YWZvcm1hdCcsICdoZWxtJyk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YScsIGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgc2tpbjogXCJ3OFwiLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHZhciBmb3JtdWxhID0gY2FudmFzLmdldEZvcm11bGEodHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIWZvcm11bGEpIHtcbiAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gdWkuZGl2VGV4dChncmlkQ2VsbC5jZWxsLnZhbHVlLCB7IHN0eWxlOiB7IGNvbG9yOiAncmVkJyB9IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAgICAgdmFyIG1vbFdlaWdodCA9IE1hdGgucm91bmQoY2FudmFzLmdldE1vbFdlaWdodCgpICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgICAgICB2YXIgY29lZiA9IE1hdGgucm91bmQoY2FudmFzLmdldEV4dGluY3Rpb25Db2VmZmljaWVudCh0cnVlKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgdmFyIG1vbGZpbGUgPSBjYW52YXMuZ2V0TW9sZmlsZSgpO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBmb3JtdWxhICsgJywgJyArIG1vbFdlaWdodCArICcsICcgKyBjb2VmICsgJywgJyArIG1vbGZpbGU7XG4gICAgICAgICAgICAgICAgbHJ1LnNldChncmlkQ2VsbC5jZWxsLnZhbHVlLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3R5cGUsIHN1YnR5cGUsIHBhbGV0dGVUeXBlXSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgICB3ID0gZ3JpZCA/IE1hdGgubWluKGdyaWQuY2FudmFzLndpZHRoIC0geCwgdykgOiBnLmNhbnZhcy53aWR0aCAtIHg7XG4gICAgICAgICAgICBnLnNhdmUoKTtcbiAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICBnLnJlY3QoeCwgeSwgdywgaCk7XG4gICAgICAgICAgICBnLmNsaXAoKTtcbiAgICAgICAgICAgIGcuZm9udCA9ICcxMnB4IG1vbm9zcGFjZSc7XG4gICAgICAgICAgICBnLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgcyA9IChfYSA9IGNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgLy9UT0RPOiBjYW4gdGhpcyBiZSByZXBsYWNlZC9tZXJnZWQgd2l0aCBzcGxpdFNlcXVlbmNlP1xuICAgICAgICAgICAgY29uc3QgdW5pdHMgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICBjb25zdCBwYWxldHRlID0gZ2V0UGFsbGV0ZUJ5VHlwZShwYWxldHRlVHlwZSk7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0dGVyRnVuYyA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZygnc2VwYXJhdG9yJykpOyAvLyBzcGxpdHRlcixcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnRzID0gc3BsaXR0ZXJGdW5jKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3ViUGFydHMpO1xuICAgICAgICAgICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KHN1YlBhcnRzLmpvaW4oJycpKTtcbiAgICAgICAgICAgIGxldCB4MSA9IE1hdGgubWF4KHgsIHggKyAodyAtIHRleHRTaXplLndpZHRoKSAvIDIpO1xuICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IFtjb2xvciwgb3V0ZXJBbWlubywgLCBwaXZvdF0gPSBDaGVtUGFsZXR0ZS5nZXRDb2xvckFBUGl2b3QoYW1pbm8pO1xuICAgICAgICAgICAgICAgIGNvbG9yID0gcGFsZXR0ZS5nZXQoYW1pbm8pO1xuICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3I7XG4gICAgICAgICAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIHBpdm90LCB0cnVlLCBmYWxzZSwgMS4wLCBzZXBhcmF0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnLnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmV4cG9ydCBjbGFzcyBDaGVtUGFsZXR0ZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDaGVtUGFsZXR0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWUgQ29sb3Igc2NoZW1lIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtncm91cGluZz1mYWxzZV0gSXMgZ3JvdXBpbmcgZW5hYmxlZC5cbiAgICAgKiBAbWVtYmVyb2YgQ2hlbVBhbGV0dGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzY2hlbWUsIGdyb3VwaW5nID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5jcCA9IHt9O1xuICAgICAgICB0aGlzLmlzSW5pdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vbm9tZXJMaWIgPSBudWxsO1xuICAgICAgICBpZiAoc2NoZW1lID09ICdncm9rJylcbiAgICAgICAgICAgIHRoaXMuY3AgPSBDaGVtUGFsZXR0ZS5nZXREYXRhZ3Jvayhncm91cGluZyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgMkQgcmVwcmVzZW50YXRpb24gb2YgYSBhbWlubyBhY2lkIHJlc2lkdWUgaW4gYSB0b29sdGlwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbH0gY2VsbCBHcmlkIGNlbGwgdG8gc2hvdyB0b29sdGlwIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlIG9mIHRoZSBtb3VzZSBwb2ludGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvZiB0aGUgbW91c2UgcG9pbnRlci5cbiAgICAgKiBAcGFyYW0ge01vbm9tZXJMaWJyYXJ5fSBtb25vbWVyTGliIE1vbm9tZXIgTGlicmFyeSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHN0YXRpYyBzaG93VG9vbHRpcChjZWxsLCB4LCB5LCBtb25vbWVyTGliKSB7XG4gICAgICAgIGNvbnN0IHMgPSBjZWxsLmNlbGwudmFsdWU7XG4gICAgICAgIGxldCB0b0Rpc3BsYXkgPSBbdWkuZGl2VGV4dChzKV07XG4gICAgICAgIGNvbnN0IFssIGFhck91dGVyLCBhYXJJbm5lcl0gPSBDaGVtUGFsZXR0ZS5nZXRDb2xvckFBUGl2b3Qocyk7XG4gICAgICAgIGZvciAoY29uc3QgYWFyIG9mIFthYXJPdXRlciwgYWFySW5uZXJdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lckxpYi5tb25vbWVyTmFtZXMuaW5jbHVkZXMoYWFyKSkge1xuICAgICAgICAgICAgICAgIGlmIChhYXIgaW4gQ2hlbVBhbGV0dGUuQUFOYW1lcylcbiAgICAgICAgICAgICAgICAgICAgdG9EaXNwbGF5ID0gW3VpLmRpdlRleHQoQ2hlbVBhbGV0dGUuQUFOYW1lc1thYXJdKV07XG4gICAgICAgICAgICAgICAgaWYgKGFhciBpbiBDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lcylcbiAgICAgICAgICAgICAgICAgICAgdG9EaXNwbGF5ID0gW3VpLmRpdlRleHQoQ2hlbVBhbGV0dGUuQUFOYW1lc1tDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lc1thYXJdXSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Dcm9wOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhdXRvQ3JvcE1hcmdpbjogMCxcbiAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NDaGlyYWxUZXh0OiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tldGNoID0gZ3Jvay5jaGVtLnN2Z01vbChtb25vbWVyTGliLmdldE1vbm9tZXJNb2woYWFyKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmICh0b0Rpc3BsYXkubGVuZ3RoID09IDIpXG4gICAgICAgICAgICAgICAgICAgIHRvRGlzcGxheS5wdXNoKHVpLmRpdlRleHQoJ01vZGlmaWVkJykpO1xuICAgICAgICAgICAgICAgIHRvRGlzcGxheS5wdXNoKHNrZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdWkudG9vbHRpcC5zaG93KHVpLmRpdlYodG9EaXNwbGF5KSwgeCwgeSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVyc24gZGl2aWRlZCBhbWlubyB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29uZXRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IENoZW1QYWxldHRlLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSBDaGVtUGFsZXR0ZS5nZXRJbm5lck91dGVyKG1vbm9tZXIpO1xuICAgICAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgICAgIGlubmVyTW9ub21lciA9IChpbm5lck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke2lubmVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogaW5uZXJNb25vbWVyKTtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9hID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW0NoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXJbMF0gPT0gJ2QnICYmIG1vbm9tZXJbMV0gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDIgfHwgbW9ub21lclsyXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYiA9IG1vbm9tZXJbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFtDaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygwLCAzKSBpbiBDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IENoZW1QYWxldHRlLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gQ2hlbVBhbGV0dGUuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gNCB8fCBtb25vbWVyWzRdID09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IENoZW1QYWxldHRlLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCA0XSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBbQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtDaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgZ3JvdXBpbmcgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG4gICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb2xvciwgbW9ub21lcnNdIG9mIE9iamVjdC5lbnRyaWVzKGR0KSkge1xuICAgICAgICAgICAgbW9ub21lcnMuZm9yRWFjaCgobW9ub21lciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW2dyb3VwaW5nID8gZ3JvdXBzW2N1cnJlbnRHcm91cF0gOiBtb25vbWVyXSA9IENoZW1QYWxldHRlLmNvbG91clBhbGV0dGVbY29sb3JdW3NpbXBsaWZpZWQgPyAwIDogaW5kZXhdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjdXJyZW50R3JvdXArKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFsZXR0ZTtcbiAgICB9XG4gICAgc3RhdGljIGdldERhdGFncm9rKGdyb3VwaW5nID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIENoZW1QYWxldHRlLm1ha2VQYWxldHRlKENoZW1QYWxldHRlLmdyb2tHcm91cHMsIGZhbHNlLCBncm91cGluZyk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSkge1xuICAgICAgICBpZiAoc2NoZW1lID09ICdncm9rJylcbiAgICAgICAgICAgIHJldHVybiBDaGVtUGFsZXR0ZS5nZXREYXRhZ3JvaygpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxufVxuQ2hlbVBhbGV0dGUuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbkNoZW1QYWxldHRlLmdyb2tHcm91cHMgPSB7XG4gICAgJ3llbGxvdyc6IFsnQycsICdVJ10sXG4gICAgJ3JlZCc6IFsnRycsICdQJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsnQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ1InLCAnSCcsICdLJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsnRCcsICdFJ10sXG4gICAgJ29yYW5nZSc6IFsnUycsICdUJywgJ04nLCAnUSddLFxufTtcbkNoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQ2hlbVBhbGV0dGUuQUFOYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5DaGVtUGFsZXR0ZS5BQVNtaWxlcyA9IHtcbiAgICAnRyc6ICdOQ0MoPU8pTycsXG4gICAgJ0wnOiAnTltDQEhdKENDKEMpQylDKD1PKU8nLFxuICAgICdZJzogJ05DKENDMT1DQz1DKE8pQz1DMSlDKD1PKU8nLFxuICAgICdTJzogJ05DKENPKUMoPU8pTycsXG4gICAgJ0UnOiAnTltDQEBIXShDQ0MoTyk9TylDKD1PKU8nLFxuICAgICdRJzogJ05bQ0BASF0oQ0NDKE4pPU8pQyg9TylPJyxcbiAgICAnRCc6ICdOW0NAQEhdKENDKE8pPU8pQyg9TylPJyxcbiAgICAnTic6ICdOW0NAQEhdKENDKE4pPU8pQyg9TylPJyxcbiAgICAnRic6ICdOQyhDQzE9Q0M9Q0M9QzEpQyg9TylPJyxcbiAgICAnQSc6ICdOW0NASF0oQylDKD1PKU8nLFxuICAgICdLJzogJ05DKENDQ0NOKUMoPU8pTycsXG4gICAgJ1InOiAnTltDQEhdKENDQ05DKD1OKUMpQyg9TylPJyxcbiAgICAnSCc6ICdOQyhDQzE9Q049Q1tOXTEpQyg9TylPJyxcbiAgICAnQyc6ICdOW0NAQEhdKENTKUMoPU8pTycsXG4gICAgJ1YnOiAnTkMoQyhDKUMpQyg9TylPJyxcbiAgICAnUCc6ICdOKENDQzEpQzFDKD1PKU8nLFxuICAgICdXJzogJ05bQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSlDKD1PKU8nLFxuICAgICdJJzogJ05bQ0BIXShbQ0BIXShDKUNDKUMoPU8pTycsXG4gICAgJ00nOiAnTkMoQ0NTQylDKD1PKU8nLFxuICAgICdUJzogJ05DKEMoTylDKUMoPU8pTycsXG59O1xuQ2hlbVBhbGV0dGUuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuQ2hlbVBhbGV0dGUuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbiIsImV4cG9ydCB2YXIgQ09MVU1OU19OQU1FUztcbihmdW5jdGlvbiAoQ09MVU1OU19OQU1FUykge1xuICAgIENPTFVNTlNfTkFNRVNbXCJTUExJVF9DT0xcIl0gPSBcIn5zcGxpdFwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBQ1RJVklUWVwiXSA9IFwifmFjdGl2aXR5XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlfc2NhbGVkXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcIn5hbGlnbmVkX3NlcXVlbmNlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFNSU5PX0FDSURfUkVTSURVRVwiXSA9IFwiQUFSXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUF9WQUxVRVwiXSA9IFwicFZhbHVlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIk1FQU5fRElGRkVSRU5DRVwiXSA9IFwiTWVhbiBkaWZmZXJlbmNlXCI7XG59KShDT0xVTU5TX05BTUVTIHx8IChDT0xVTU5TX05BTUVTID0ge30pKTtcbmV4cG9ydCB2YXIgQ0FURUdPUklFUztcbihmdW5jdGlvbiAoQ0FURUdPUklFUykge1xuICAgIENBVEVHT1JJRVNbXCJPVEhFUlwiXSA9IFwiT3RoZXJcIjtcbiAgICBDQVRFR09SSUVTW1wiQUxMXCJdID0gXCJBbGxcIjtcbn0pKENBVEVHT1JJRVMgfHwgKENBVEVHT1JJRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBUQUdTO1xuKGZ1bmN0aW9uIChUQUdTKSB7XG4gICAgVEFHU1tcIkFBUlwiXSA9IFwiQUFSXCI7XG4gICAgVEFHU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBUQUdTW1wiU0VQQVJBVE9SXCJdID0gXCJtb25vbWVyLXNlcGFyYXRvclwiO1xuICAgIFRBR1NbXCJTRUxFQ1RJT05cIl0gPSBcInNlbGVjdGlvblwiO1xufSkoVEFHUyB8fCAoVEFHUyA9IHt9KSk7XG5leHBvcnQgdmFyIFNFTV9UWVBFUztcbihmdW5jdGlvbiAoU0VNX1RZUEVTKSB7XG4gICAgU0VNX1RZUEVTW1wiQU1JTk9fQUNJRFNcIl0gPSBcImFtaW5vQWNpZHNcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFXCJdID0gXCJhbGlnbmVkU2VxdWVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFX0RJRkZFUkVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZURpZmZlcmVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWVwiXSA9IFwiYWN0aXZpdHlcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWV9TQ0FMRURcIl0gPSBcImFjdGl2aXR5U2NhbGVkXCI7XG4gICAgU0VNX1RZUEVTW1wiTWFjcm9fTW9sZWN1bGVcIl0gPSBcIk1hY3JvbW9sZWN1bGVcIjtcbn0pKFNFTV9UWVBFUyB8fCAoU0VNX1RZUEVTID0ge30pKTtcbmV4cG9ydCBjb25zdCBTVEFUUyA9ICdzdGF0cyc7XG5leHBvcnQgY29uc3QgRU1CRURESU5HX1NUQVRVUyA9ICdlbWJlZGRpbmdTdGF0dXMnO1xuZXhwb3J0IGNvbnN0IFBFUFRJREVTX0FOQUxZU0lTID0gJ2lzUGVwdGlkZXNBbmFseXNpcyc7XG5leHBvcnQgdmFyIEZMQUdTO1xuKGZ1bmN0aW9uIChGTEFHUykge1xuICAgIEZMQUdTW1wiQ0VMTF9DSEFOR0lOR1wiXSA9IFwiaXNDZWxsQ2hhbmdpbmdcIjtcbn0pKEZMQUdTIHx8IChGTEFHUyA9IHt9KSk7XG5leHBvcnQgY29uc3QgYWFyR3JvdXBzID0ge1xuICAgICdSJzogJ1BDJywgJ0gnOiAnUEMnLCAnSyc6ICdQQycsXG4gICAgJ0QnOiAnTkMnLCAnRSc6ICdOQycsXG4gICAgJ1MnOiAnVScsICdUJzogJ1UnLCAnTic6ICdVJywgJ1EnOiAnVScsXG4gICAgJ0MnOiAnU0MnLCAnVSc6ICdTQycsICdHJzogJ1NDJywgJ1AnOiAnU0MnLFxuICAgICdBJzogJ0gnLCAnVic6ICdIJywgJ0knOiAnSCcsICdMJzogJ0gnLCAnTSc6ICdIJywgJ0YnOiAnSCcsICdZJzogJ0gnLCAnVyc6ICdIJyxcbiAgICAnLSc6ICctJyxcbn07XG5leHBvcnQgY29uc3QgZ3JvdXBEZXNjcmlwdGlvbiA9IHtcbiAgICAnUEMnOiB7ICdkZXNjcmlwdGlvbic6ICdQb3NpdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydSJywgJ0gnLCAnSyddIH0sXG4gICAgJ05DJzogeyAnZGVzY3JpcHRpb24nOiAnTmVnYXRpdmUgQW1pbm8gQWNpZHMsIHdpdGggRWxlY3RyaWNhbGx5IENoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnRCcsICdFJ10gfSxcbiAgICAnVSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggUG9sYXIgVW5jaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1MnLCAnVCcsICdOJywgJ1EnXSB9LFxuICAgICdTQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1NwZWNpYWwgQ2FzZXMnLCAnYW1pbm9BY2lkcyc6IFsnQycsICdVJywgJ0cnLCAnUCddIH0sXG4gICAgJ0gnOiB7XG4gICAgICAgICdkZXNjcmlwdGlvbic6ICdBbWlubyBBY2lkcyB3aXRoIEh5ZHJvcGhvYmljIFNpZGUgQ2hhaW4nLFxuICAgICAgICAnYW1pbm9BY2lkcyc6IFsnQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sXG4gICAgfSxcbiAgICAnLSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Vua25vd24gQW1pbm8gQWNpZCcsICdhbWlub0FjaWRzJzogWyctJ10gfSxcbn07XG4iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgTm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuL25vdGF0aW9uLWNvbnZlcnRlcic7XG4vKipcbiAqIENvbnZlcnRzIG5vdGF0aW9ucyBvZiBhIE1hY3JvbW9sZWN1bGUgY29sdW1uXG4gKlxuICogQHBhcmFtIHtERy5jb2x1bW59IGNvbCBDb2x1bW4gd2l0aCAnTWFjcm9tb2xlY3VsZScgc2VtYW50aWMgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydChjb2wpIHtcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCBjdXJyZW50ID0gY29udmVydGVyLnNvdXJjZU5vdGF0aW9uO1xuICAgIC8vVE9ETzogcmVhZCBhbGwgbm90YXRpb25zXG4gICAgY29uc3Qgbm90YXRpb25zID0gW1xuICAgICAgICBcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sXG4gICAgICAgIFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLFxuICAgICAgICBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovXG4gICAgXTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IG5vdGF0aW9ucy5maWx0ZXIoKGUpID0+IGUgIT09IGN1cnJlbnQpO1xuICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uSW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnQ29udmVydCB0bycsIGZpbHRlcmVkWzBdLCBmaWx0ZXJlZCk7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnc2VwYXJhdG9yJywgJy0nLCBbJy0nLCAnLicsICcvJ10pO1xuICAgIHVpLmRpYWxvZygnQ29udmVydCBzZXF1ZW5jZScpXG4gICAgICAgIC5hZGQodWkuZGl2KFtcbiAgICAgICAgdWkuaDEoJ2N1cnJlbnQgbm90YXRpb24nKSxcbiAgICAgICAgdWkuZGl2KGN1cnJlbnQpLFxuICAgICAgICB0YXJnZXROb3RhdGlvbklucHV0LnJvb3RcbiAgICBdKSlcbiAgICAgICAgLmFkZCh1aS5kaXYoW1xuICAgICAgICB1aS5oMSgnU2VwYXJhdG9yJyksXG4gICAgICAgIHNlcGFyYXRvcklucHV0LFxuICAgIF0pKVxuICAgICAgICAub25PSygoKSA9PiB7XG4gICAgICAgIC8vVE9ETzogY3JlYXRlIG5ldyBjb252ZXJ0ZWQgY29sdW1uXG4gICAgICAgIC8vY29uc3QgdGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OID0gc3RyVG9FbnVtPE5PVEFUSU9OPihOT1RBVElPTiwgdGFyZ2V0Tm90YXRpb25JbnB1dC52YWx1ZSkhO1xuICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IHRhcmdldE5vdGF0aW9uSW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcGFyYXRvcklucHV0LnZhbHVlO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBjb252ZXJ0ZXIuY29udmVydCh0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgY29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgIH0pXG4gICAgICAgIC5zaG93KCk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCBBaW9saSBmcm9tICdAYmlvd2FzbS9haW9saSc7XG5pbXBvcnQgeyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXInO1xuLyoqXG4gKiBDb252ZXJ0cyBhcnJheSBvZiBzZXF1ZW5jZXMgaW50byBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNlcXVlbmNlcyBJbnB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcykge1xuICAgIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCB2LCBpKSA9PiBhICsgYD5zYW1wbGUke2kgKyAxfVxcbiR7dn1cXG5gLCAnJyk7XG59XG4vKipcbiAqIEV4dHJhY3RzIGFycmF5IG9mIHNlcXVlbmNlcyBmcm9tIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhIEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gT3V0cHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICovXG5mdW5jdGlvbiBfZmFzdGFUb1N0cmluZ3MoZmFzdGEpIHtcbiAgICByZXR1cm4gZmFzdGEucmVwbGFjZSgvPnNhbXBsZVxcZCsoXFxyXFxufFxccnxcXG4pL2csICcnKS5zcGxpdCgnXFxuJyk7XG59XG4vKipcbiAqIFJ1bnMgQWlvbGkgZW52aXJvbm1lbnQgd2l0aCBrYWxpZ24gdG9vbC5cbiAqXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc3JjQ29sIENvbHVtbiB3aXRoIHNlcXVlbmNlcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbGlnbmVkIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBhbGlnbmVkLlxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zdCBidWYgPSB5aWVsZCBDTEkuY2F0KCdyZXN1bHQuZmFzdGEnKTtcbiAgICAgICAgY29uc29sZS53YXJuKG91dHB1dCk7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBfZmFzdGFUb1N0cmluZ3MoYnVmKS5zbGljZSgwLCBzZXF1ZW5jZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdGd0Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKGBtc2EoJHtzcmNDb2wubmFtZX0pYCwgYWxpZ25lZCk7XG4gICAgICAgIC8vIHVuaXRzXG4gICAgICAgIGNvbnN0IHNyY1VuaXRzID0gc3JjQ29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgY29uc3QgdGd0VW5pdHMgPSBzcmNVbml0cy5zcGxpdCgnOicpLm1hcCgocCwgaSkgPT4gaSA9PSAxID8gcCArICcuTVNBJyA6IHApLmpvaW4oJzonKTtcbiAgICAgICAgdGd0Q29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0Z3RVbml0cyk7XG4gICAgICAgIHRndENvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgICAgICByZXR1cm4gdGd0Q29sO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RNU0FFbm91Z2hNZW1vcnkoY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VzQ291bnQgPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHNlcXVlbmNlc0NvdW50IC8gMTAwO1xuICAgICAgICBmb3IgKGxldCBpID0gZGVsdGE7IGkgPCBzZXF1ZW5jZXNDb3VudDsgaSArPSBkZWx0YSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBydW5LYWxpZ24oREcuQ29sdW1uLmZyb21TdHJpbmdzKGNvbC5uYW1lLCBjb2wudG9MaXN0KCkuc2xpY2UoMCwgTWF0aC5yb3VuZChpKSkpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgcnVuS2FsaWduIHN1Y2NlZWRlZCBvbiAke2l9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgcnVuS2FsaWduIGZhaWxlZCBvbiAke2l9IHdpdGggJyR7ZXJyb3J9J2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbi8qKiBDbGFzcyBmb3IgaGFuZGxpbmcgY29udmVyc2lvbiBvZiBub3RhdGlvbiBzeXN0ZW1zIGluIE1hY3JvbW9sZWN1bGUgY29sdW1ucyAqL1xuZXhwb3J0IGNsYXNzIE5vdGF0aW9uQ29udmVydGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihjb2wpIHtcbiAgICAgICAgdGhpcy5fc291cmNlQ29sdW1uID0gY29sO1xuICAgICAgICB0aGlzLl9zb3VyY2VVbml0cyA9IHRoaXMuX3NvdXJjZUNvbHVtbi50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgICAgICB0aGlzLl9zb3VyY2VOb3RhdGlvbiA9IHRoaXMuZGV0ZXJtaW5lU291cmNlTm90YXRpb24oKTtcbiAgICB9XG4gICAgZ2V0IHNvdXJjZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fc291cmNlVW5pdHM7IH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICAvLyBUT0RPOiBpc1JuYVxuICAgIGlzUm5hKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdudCcpOyB9XG4gICAgaXNQZXB0aWRlKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdwdCcpOyB9XG4gICAgLyoqIEFzc29jaWF0ZSBub3RhdGlvbiB0eXBlcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVuaXRzICovXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Tk9UQVRJT059IG5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGRldGVybWluZVNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIC8vIFRPRE86IGhhbmRsZSBwb3NzaWJsZSBleGNlcHRpb25zXG4gICAgICAgICAgICByZXR1cm4gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICB9XG4gICAgLy8gVE9ETzogd3JpdGUgZG9jXG4gICAgZ2V0TmV3Q29sdW1uKHRhcmdldE5vdGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuc291cmNlQ29sdW1uO1xuICAgICAgICBjb25zdCBsZW4gPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYW1lID0gdGFyZ2V0Tm90YXRpb24gKyAnKCcgKyBjb2wubmFtZSArICcpJztcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9IGNvbC5kYXRhRnJhbWUuY29sdW1ucy5nZXRVbnVzZWROYW1lKG5hbWUpO1xuICAgICAgICAvLyBkdW1teSBjb2RlXG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgY29uc3QgbmV3VW5pdHMgPSB0aGlzLnNvdXJjZVVuaXRzLnJlcGxhY2UodGhpcy5zb3VyY2VOb3RhdGlvbi50b1N0cmluZygpLCB0YXJnZXROb3RhdGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBuZXdVbml0cyk7XG4gICAgICAgIC8vIFRPRE86IGRldGVybWluZSBhbGwgdGhlIHF1YWxpZmllcnMgKHVuaXRzLCAuLi4pLCBwZXJoYXBzLCB1c2luZyBkZXRlY3RvcnNcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLy8gVE9ETzogd3JpdGUgZG9jXG4gICAgY29udmVydEZhc3RhVG9TZXBhcmF0b3Ioc2VwYXJhdG9yKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIC8vICogc3BlY2lmeSBzZXBhcmF0b3JcbiAgICAgICAgLy8gKiBmYXN0YSBnYXAgc3ltYm9sIHNob3VsZCBOT1QgYmUgY29uc2lkZXJlZCAnLScgb25seSwgYnV0IHNldCBhcyBhIHBhcmFtZXRlclxuICAgICAgICAvLyAqIGluIGZhc3RhIGV2ZXJ5IHBvc2l0aW9uIGlzIGEgbW9ub21lciAobm8gbXVsdGktY2hhciBtb25vbWVycyksIGNhbGwgc3BsaXRUb01vbm9tZXJzKCkgbWV0aG9kXG4gICAgICAgIC8vICogaW4gdGhlIHJlc3VsdGluZyBqYWdnZWQgYXJyYXksIGV2ZXJ5IGdhcCBzeW1ib2wgaXMgdG8gYmUgcmVwbGFjZWQgYnlcbiAgICAgICAgLy8gdGhlIGVtcHR5IHN0cmluZywgd2hpbGUgdGhlIG1vbm9tZXJzLCB0byBiZSBzZXBhcmF0ZWQgYnkgdGhlIHNlcGFyYXRvclxuICAgICAgICAvLyAoc3BlY2lmaWVkIGFzIGEgcGFyYW1ldGVyKVxuICAgICAgICAvLyBPbiBzcGxpdFRvTW9ub21lcnMoKTogL2xpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvV2ViTG9nbyAtLT4gZ2V0U3BsaXR0ZXJcbiAgICAgICAgY29uc3QgZ2FwU3ltYm9sID0gJy0nOyAvLyB0byBiZSBzcGVjaWZpZWQgYXMgYW4gYXJndW1lbnRcbiAgICAgICAgY29uc3Qgc3BsaXR0ZXJBc0Zhc3RhID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgY29uc3QgbW9ub21lcnNBcnJheSA9IHNwbGl0dGVyQXNGYXN0YShzb3VyY2VQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyc0FycmF5W2ldID09PSBnYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzQXJyYXlbaV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIHdyYXBSbmFOdWNsZW90aWRlVG9IZWxtKG1vbm9tZXIpIHtcbiAgICB9XG4gICAgY29udmVydEZhc3RhVG9IZWxtKCkge1xuICAgICAgICBjb25zdCBnYXBTeW1ib2wgPSAnLSc7IC8vIHRvIGJlIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudFxuICAgICAgICBjb25zdCBzcGxpdHRlckFzRmFzdGEgPSBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJzQXJyYXkgPSBzcGxpdHRlckFzRmFzdGEoc291cmNlUG9seW1lcik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAvLyAvLyBUT0RPOiBoYW5kbGUgZ2FwIHN5bWJvbHMgLS0gcmVwbGFjZSBieSBhc3Rlcmlza1xuICAgICAgICAgICAgICAgIC8vIGlmIChtb25vbWVyc0FycmF5W2ldID09PSBnYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgLy8gICBtb25vbWVyc0FycmF5W2ldID0gJyonO1xuICAgICAgICAgICAgICAgIC8vIGVsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE86IGRldGVybWluZSBjb25kaXRpb25hbGx5IChpZiBpc0RuYSgpLCBvciBpc1JuYSgpLCBvciBpc1BlcHRpZGUoKSkgdGhlIHRlbXBsYXRlXG4gICAgICAgICAgICByZXR1cm4gbW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICAvLyAqIHNpbWlsYXJseSB0byBmYXN0YTJzZXBhcmF0b3IsIGRpdmlkZSBzdHJpbmcgaW50byBtb25vbWVyc1xuICAgICAgICAvLyAqIGFkamFjZW50IHNlcGFyYXRvcnMgaXMgYSBnYXAgKHN5bWJvbCB0byBiZSBzcGVjaWZpZWQpXG4gICAgICAgIC8vICogdGhlIG1vbm9tZXJzIE1VU1QgYmUgc2luZ2xlLWNoYXJhY3RlciBvbmxlcywgb3RoZXJ3aXNlIGZvcmJpZFxuICAgICAgICAvLyBjb252ZXJzaW9uXG4gICAgICAgIC8vZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yXG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgIH1cbiAgICBjb252ZXJ0U2VwYXJhdG9yVG9IZWxtKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9GYXN0YSgpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyk7XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9yZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICB9XG4gICAgLyoqIERpc3BhdGNoZXIgbWV0aG9kIGZvciBub3RhdGlvbiBjb252ZXJzaW9uICovXG4gICAgLy8gVE9ETzogd3JpdGUgdGhlIGJvZGllcyBvZiBjb252ZXJ0ZXIgbWV0aG9kc1xuICAgIGNvbnZlcnQodGFyZ2V0Tm90YXRpb24sIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gdGFyZ2V0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBub3RhdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvcik7IC8vIHRoZXJlIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGEgc2VwYXJhdG9yIGlzIG5lZWRlZFxuICAgICAgICBlbHNlIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvSGVsbSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RmFzdGFUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0hlbG0odGFyZ2V0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvRmFzdGEoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub1NlcGFyYXRvcigpO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcyhjb2wsIHNlcSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gY29sLnRvTGlzdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBuZXcgQXJyYXkoc3RyaW5nQXJyYXkubGVuZ3RoKS5maWxsKDAuMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBkaXN0YW5jZXNbaV0gPSBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddWydMZXZlbnNodGVpbiddKHN0cmluZ0FycmF5W2ldLCBzZXEpKTtcbiAgICAgICAgcmV0dXJuIERHLkNvbHVtbi5mcm9tTGlzdChERy5DT0xVTU5fVFlQRS5GTE9BVCwgJ2Rpc3RhbmNlcycsIGRpc3RhbmNlcyk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd1Rvb2x0aXAocGFyYW1zKSB7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXSA9IHVpLmRpdkgoW10pO1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gdWkuZGl2VihbXG4gICAgICAgIHVpLmRpdlRleHQoJ3NlcXVlbnNlJyksXG4gICAgICAgIHVpLmRpdlRleHQocGFyYW1zLmFjdGl2aXR5Lm5hbWUpLFxuICAgIF0pO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZChjb2x1bW5OYW1lcyk7XG4gICAgcGFyYW1zLmxpbmUubW9scy5mb3JFYWNoKChtb2wpID0+IHtcbiAgICAgICAgY29uc3Qgc2VxID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5zZXFDb2wubmFtZSwgbW9sKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5ID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5hY3Rpdml0eS5uYW1lLCBtb2wpLnRvRml4ZWQoMikpO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdsZWZ0JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUucGFkZGluZ0xlZnQgPSAnMzBweCc7XG4gICAgICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKHVpLmRpdlYoW1xuICAgICAgICAgICAgc2VxLFxuICAgICAgICAgICAgYWN0aXZpdHksXG4gICAgICAgIF0sIHsgc3R5bGU6IHsgcGFkZGluZ0xlZnQ6ICc1cHgnIH0gfSkpO1xuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IHsgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2Uoc3BhY2VQYXJhbXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcHJlcGFyZWREYXRhO1xuICAgICAgICBpZiAoIShzcGFjZVBhcmFtcy5zZXFDb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ0hFTE0nKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VwID0gc3BhY2VQYXJhbXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICBjb25zdCBzZXBGaW5hbCA9IHNlcCA/IHNlcCA9PT0gJy4nID8gJ1xcXFxcXC4nIDogc2VwIDogJy0nO1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcEZpbmFsLCAnZycpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddKS5pbmNsdWRlcyhzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljKSlcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXN1bHQgPSB5aWVsZCByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24ocHJlcGFyZWREYXRhLCBzcGFjZVBhcmFtcy5tZXRob2ROYW1lLCBzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljLCBzcGFjZVBhcmFtcy5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29scyA9IHNwYWNlUGFyYW1zLmVtYmVkQXhlc05hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KG5hbWUsIHNlcXVlbmNlU3BhY2VSZXN1bHQuZW1iZWRkaW5nW2luZGV4XSkpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogc2VxdWVuY2VTcGFjZVJlc3VsdC5kaXN0YW5jZSwgY29vcmRpbmF0ZXM6IG5ldyBERy5Db2x1bW5MaXN0KGNvbHMpIH07XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKSB7XG4gICAgY29uc3QgYXhlcyA9IFsnRW1iZWRfWCcsICdFbWJlZF9ZJ107XG4gICAgY29uc3QgY29sTmFtZUluZCA9IGRmLmNvbHVtbnMubmFtZXMoKS5maWx0ZXIoKGl0KSA9PiBpdC5pbmNsdWRlcyhheGVzWzBdKSkubGVuZ3RoICsgMTtcbiAgICByZXR1cm4gYXhlcy5tYXAoKGl0KSA9PiBgJHtpdH1fJHtjb2xOYW1lSW5kfWApO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX0ZJTEVOQU1FID0gJy9zYW1wbGVzL0hFTE1Db3JlTGlicmFyeS5qc29uJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX01PTk9NRVJfU1lNQk9MID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT0xGSUxFID0gJ21vbGZpbGUnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9GSUVMRFMgPSBbJ3N5bWJvbCcsICdtb2xmaWxlJywgJ3Jncm91cHMnLCAnbmFtZSddO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2wsIG1vbm9tZXJzTGliT2JqZWN0KSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICAgIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICAgICAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2xGaWxlc0ZvclNlcS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtb2xGaWxlcy5wdXNoKG1vbEZpbGVzRm9yU2VxKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vbEZpbGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vbW9tZXJzTW9sRGljdChsaWIpIHtcbiAgICBjb25zdCBkaWN0ID0ge307XG4gICAgbGliLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICAgICAgICBjb25zdCBtb25vbWVyT2JqZWN0ID0ge307XG4gICAgICAgICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgbW9ub21lck9iamVjdFtmaWVsZF0gPSBpdFtmaWVsZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpY3RbaXRbSEVMTV9DT1JFX0xJQl9NT05PTUVSX1NZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaWN0O1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFZkUmVnaW9uVHlwZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zJztcbmNvbnN0IHZydCA9IFZkUmVnaW9uVHlwZTtcbi8vIFBvc2l0aW9ucyBvZiByZWdpb25zIGZvciBudW1iZXJpbmcgc2NoZW1lc1xuLy8gaHR0cDovL3d3dy5iaW9pbmYub3JnLnVrL2Ficy9pbmZvLmh0bWxcbi8vIGNvbnN0IGltZ3RSZWdpb25zOiBWZFJlZ2lvbltdID0gW1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIxJywgJ0xpZ2h0JywgMSwgJzEnLCAnMjYnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMScsICdIZWF2eScsIDEsICcxJywgJzI2JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjEnLCAnTGlnaHQnLCAyLCAnMjcnLCAnMzgnKSwgLy8gMjctMzJcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIxJywgJ0hlYXZ5JywgMiwgJzI3JywgJzM4JyksIC8vIDI3LTMyXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIyJywgJ0xpZ2h0JywgMywgJzM5JywgJzU1JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjInLCAnSGVhdnknLCAzLCAnMzknLCAnNTUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMicsICdMaWdodCcsIDQsICc1NicsICc2NScpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjInLCAnSGVhdnknLCA0LCAnNTYnLCAnNjUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnTGlnaHQnLCA1LCAnNjYnLCAnMTA0JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnSGVhdnknLCA1LCAnNjYnLCAnMTA0JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnTGlnaHQnLCA2LCAnMTA1JywgJzExNycpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnSGVhdnknLCA2LCAnMTA1JywgJzExNycpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSNCcsICdMaWdodCcsIDcsICcxMTgnLCBudWxsLyoxMjcqLyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjQnLCAnSGVhdnknLCA3LCAnMTE4JywgbnVsbC8qMTI4Ki8pLFxuLy8gXTtcbi8qKiBWaWV3ZXIgd2l0aCB0YWJzIGJhc2VkIG9uIGRlc2NyaXB0aW9uIG9mIGNoYWluIHJlZ2lvbnMuXG4gKiAgVXNlZCB0byBkZWZpbmUgcmVnaW9ucyBvZiBhbiBpbW11bm9nbG9idWxpbiBMQy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWdpb25zRGY6IERHLkRhdGFGcmFtZTtcbiAgICAgICAgdGhpcy5yZWdpb25zRmcgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIHJlZ2lvbnNUVjogREcuVGFibGVWaWV3O1xuICAgICAgICB0aGlzLnJlZ2lvbnNSb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVnaW9ucyA9IFtdO1xuICAgICAgICAvLyAjcmVnaW9uIC0tIEhhbmRsZSBjb250cm9scycgZXZlbnRzIC0tXG4gICAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAvLyNyZWdpb24gLS0gVmlldyAtLVxuICAgICAgICB0aGlzLmhvc3QgPSBudWxsO1xuICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmxvZ29zID0gW107XG4gICAgICAgIC8vIFRvIHByZXZlbnQgYW1iaWd1b3VzIG51bWJlcmluZyBzY2hlbWUgaW4gTUxCXG4gICAgICAgIHRoaXMucmVnaW9uVHlwZXMgPSB0aGlzLnN0cmluZ0xpc3QoJ3JlZ2lvblR5cGVzJywgW3ZydC5DRFJdLCB7IGNob2ljZXM6IE9iamVjdC52YWx1ZXModnJ0KS5maWx0ZXIoKHQpID0+IHQgIT0gdnJ0LlVua25vd24pIH0pO1xuICAgICAgICB0aGlzLmNoYWlucyA9IHRoaXMuc3RyaW5nTGlzdCgnY2hhaW5zJywgWydIZWF2eScsICdMaWdodCddLCB7IGNob2ljZXM6IFsnSGVhdnknLCAnTGlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4ID0gdGhpcy5zdHJpbmcoJ3NlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXgnLCAnY2hhaW4gc2VxdWVuY2UnKTtcbiAgICB9XG4gICAgZ2V0IGRmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhRnJhbWU7XG4gICAgfVxuICAgIC8vIFRPRE86IC5vblRhYmxlQXR0YWNoZWQgaXMgbm90IGNhbGxpbmcgb24gZGF0YUZyYW1lIHNldCwgb25Qcm9wZXJ0eUNoYW5nZWQgIGFsc28gbm90IGNhbGxpbmdcbiAgICBzZXREZih2YWx1ZSwgcmVnaW9ucykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLnNldERmKCknKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgICAgIHRoaXMucmVnaW9ucyA9IHJlZ2lvbnM7XG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWlsZFZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAvLyNyZWdpb24gcmVnaW9uc0RGIHdpdGggZmlsdGVyXG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNEZiA9IERHLkRhdGFGcmFtZS5mcm9tT2JqZWN0cyh0aGlzLnJlZ2lvbnMpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRGYucm93cy5maWx0ZXIoKHJvdykgPT4gcm93Lm5hbWUgPT0gJ0NEUjEnKTtcbiAgICAgICAgICAgIC8vIC8vIFRvIGF2YWlsYWJsZSBvcHRpb25zIC9cbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0ZnID0gKGF3YWl0IHRoaXMucmVnaW9uc0RmLnBsb3QuZnJvbVR5cGUoREcuVklFV0VSLkZJTFRFUlMsIHtcbiAgICAgICAgICAgIC8vICAgLy8gY29sdW1uTmFtZXM6IFsnbmFtZScsXSxcbiAgICAgICAgICAgIC8vICAgc2hvd0ZpbHRlckNvdW50c0luZGljYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBzaG93SGVhZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgc2hvd1NlYXJjaEJveDogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIC8vICAgICB7dHlwZTogREcuRklMVEVSX1RZUEUuQ0FURUdPUklDQUwsIGNvbHVtbjogJ3R5cGUnLCBsYWJlbDogJ1JlZ2lvbiBuYW1lJywgc2hvd0hpc3RvZ3JhbTogZmFsc2V9LFxuICAgICAgICAgICAgLy8gICAgIHt0eXBlOiBERy5GSUxURVJfVFlQRS5DQVRFR09SSUNBTCwgY29sdW1uOiAnbmFtZScsIGxhYmVsOiAnUmVnaW9uIHR5cGUnLCBzaG93SGlzdG9ncmFtOiBmYWxzZX0sXG4gICAgICAgICAgICAvLyAgIF0sXG4gICAgICAgICAgICAvLyAgIHRpdGxlOiAnUmVnaW9ucyBmaWx0ZXInLFxuICAgICAgICAgICAgLy8gICBzaG93VGl0bGU6IHRydWUsXG4gICAgICAgICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGZvciByZWdpb25zIG9mIG11bHRpcGxlIGFsaWdubWVudCBieSBJTUdUIG5vbWVuY2xhdHVyZScsXG4gICAgICAgICAgICAvLyAgIHNvbWVQcm9wZXJ0eTogJ0hlbGxvJyxcbiAgICAgICAgICAgIC8vIH0pKSBhcyBERy5GaWx0ZXJHcm91cDtcbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvbiByZWdpb25zREYgd2l0aCBmaWx0ZXJcbiAgICAgICAgICAgIC8vIHRoaXMubWxiVmlldy5kb2NrTWFuYWdlci5kb2NrKHRoaXMucmVnaW9uc0ZnLnJvb3QsIERHLkRPQ0tfVFlQRS5MRUZULCByb290Tm9kZSwgJ0ZpbHRlciByZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICAvLyByeGpzLmZyb21FdmVudCh0aGlzLnJvb3QsICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUodGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1aWxkVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5pbml0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uUHJvcGVydHlDaGFuZ2VkOiB7IGdldDogKCkgPT4gc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIF9zdXBlci5vblByb3BlcnR5Q2hhbmdlZC5jYWxsKHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdpb25UeXBlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb3BlbihtbGJWaWV3KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG1sYlZpZXcuZG9ja01hbmFnZXIuZG9jayh0aGlzLnJvb3QsIERHLkRPQ0tfVFlQRS5UT1AsIG51bGwsICdSZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNob3cobWxiVmlldykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgfVxuICAgIGRlc3Ryb3lWaWV3KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8gVE9ETzogVW5zdWJzY3JpYmUgZnJvbSBhbmQgcmVtb3ZlIGFsbCB2aWV3IGVsZW1lbnRzXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBWZFJlZ2lvbnNWaWV3ZXIuZGVzdHJveVZpZXcoIG1haW5MYXlvdXQgPSAkeyF0aGlzLm1haW5MYXlvdXQgPyAnbm9uZScgOiAndmFsdWUnfSApYCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWluTGF5b3V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJvb3QucmVtb3ZlQ2hpbGQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJ1aWxkVmlldygpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5idWlsZFZpZXcoKSBzdGFydCcpO1xuICAgICAgICAgICAgY29uc3QgY29sTmFtZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi50aGlzLmNoYWlucy5tYXAoKGNoYWluKSA9PiAoeyBbY2hhaW5dOiBgJHtjaGFpbn0gJHt0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXh9YCB9KSkpO1xuICAgICAgICAgICAgY29uc3QgcmVnaW9uc0ZpbHRlcmVkID0gdGhpcy5yZWdpb25zLmZpbHRlcigocikgPT4gdGhpcy5yZWdpb25UeXBlcy5pbmNsdWRlcyhyLnR5cGUpKTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyTGlzdCA9IEFycmF5LmZyb20obmV3IFNldChyZWdpb25zRmlsdGVyZWQubWFwKChyKSA9PiByLm9yZGVyKSkpLnNvcnQoKTtcbiAgICAgICAgICAgIHRoaXMubG9nb3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG9yZGVySSA9IDA7IG9yZGVySSA8IG9yZGVyTGlzdC5sZW5ndGg7IG9yZGVySSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnaW9uQ2hhaW5zID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGFpbiBvZiB0aGlzLmNoYWlucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpb24gPSByZWdpb25zRmlsdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyKSA9PiByLm9yZGVyID09IG9yZGVyTGlzdFtvcmRlckldICYmIHIuY2hhaW4gPT0gY2hhaW4pO1xuICAgICAgICAgICAgICAgICAgICByZWdpb25DaGFpbnNbY2hhaW5dID0gKHlpZWxkIHRoaXMuZGF0YUZyYW1lLnBsb3QuZnJvbVR5cGUoJ1dlYkxvZ28nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbE5hbWVzW2NoYWluXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25OYW1lOiByZWdpb24ucG9zaXRpb25TdGFydE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbk5hbWU6IHJlZ2lvbi5wb3NpdGlvbkVuZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXhXaWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZWJMb2dvIGNyZWF0aW9uIGZpcmVzIG9uUm9vdFNpemVDaGFuZ2VkIGV2ZW50IGV2ZW4gYmVmb3JlIGNvbnRyb2wgYmVpbmcgYWRkZWQgdG8gdGhpcy5sb2dvc1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3Nbb3JkZXJJXSA9IHJlZ2lvbkNoYWlucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVpLnRhYmxlRnJvbU1hcCgpXG4gICAgICAgICAgICAvLyBERy5IdG1sVGFibGUuY3JlYXRlKClcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dCA9IHVpLnRhYmxlKHRoaXMuY2hhaW5zLCAoY2hhaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjaGFpbiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAuLi4ob3JkZXJMaXN0Lmxlbmd0aCA+IDAgPyBbdWkuZGl2KGNoYWluLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnMTJweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KV0gOiBbXSksXG4gICAgICAgICAgICAgICAgICAgIC8vIExpc3Qgd2l0aCBjb250cm9scyBmb3IgcmVnaW9uc1xuICAgICAgICAgICAgICAgICAgICAuLi5bLi4uQXJyYXkob3JkZXJMaXN0Lmxlbmd0aCkua2V5cygpXS5tYXAoKG9yZGVySSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2wgPSB0aGlzLmxvZ29zW29yZGVySV1bY2hhaW5dO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2wucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNEaXYgPSB1aS5kaXYoW3dsLnJvb3RdIC8qYCR7Y2hhaW59ICR7cmVnaW9uc0ZpbHRlcmVkW3JJXX1gKi8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNEaXY7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgICAgICAgICB9LCBbJycsIC4uLlsuLi5BcnJheShvcmRlckxpc3QubGVuZ3RoKS5rZXlzKCldLm1hcCgob3JkZXJJKSA9PiByZWdpb25zRmlsdGVyZWQuZmluZCgocikgPT4gci5vcmRlciA9PSBvcmRlckxpc3Rbb3JkZXJJXSAmJiByLmNoYWluID09IHRoaXMuY2hhaW5zWzBdKS5uYW1lIHx8ICdOYW1lJyldKTtcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dC5jbGFzc05hbWUgPSAnbWxiLXZkLXJlZ2lvbnMtdmlld2VyLXRhYmxlMic7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYmFja2dyb3VuZCA9ICcjRUVFRUZGJztcbiAgICAgICAgICAgIC8vIHRoaXMubWFpbkxheW91dC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBibGFjayc7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IGAjZmZiYiR7TWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNTUpLnRvU3RyaW5nKDE2KX1gO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuYm94KHRoaXMubWFpbkxheW91dCwgeyAvKnN0eWxlOiB7YmFja2dyb3VuZENvbG9yOiBjb2xvcn0qL30pO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8nO1xuICAgICAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLmJ1aWxkVmlldygpIGVuZCcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2FsY1NpemUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ29IZWlnaHQgPSAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIDU0KSAvIHRoaXMuY2hhaW5zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4obG9nb0hlaWdodCwgTWF0aC5tYXgoLi4udGhpcy5sb2dvcy5tYXAoKHdsRGljdCkgPT4gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyh3bERpY3QpLm1hcCgod2wpID0+IHdsLm1heEhlaWdodCkpKSkpO1xuICAgICAgICBmb3IgKGxldCBvcmRlckkgPSAwOyBvcmRlckkgPCB0aGlzLmxvZ29zLmxlbmd0aDsgb3JkZXJJKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoYWluSSA9IDA7IGNoYWluSSA8IHRoaXMuY2hhaW5zLmxlbmd0aDsgY2hhaW5JKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFpbiA9IHRoaXMuY2hhaW5zW2NoYWluSV07XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvc1tvcmRlckldW2NoYWluXS5yb290LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uIC0tIFZpZXcgLS1cbiAgICBvbk1vdXNlTW92ZVJvb3QoZSkge1xuICAgICAgICAvLyB1aS50b29sdGlwLnNob3coJ3RleHQnLCBlLnggKyA4LCBlLnkgKyA4LCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBvbk1vdXNlTW92ZVJvb3QuKCB4OiAke2UueH0sIHk6ICR7ZS55fSApYCk7XG4gICAgfVxufVxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wid3VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wid3VcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfc2xpY2VkVG9BcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1N5bWJvbCRpdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX2dldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfcmVnZW5lcmF0b3JSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciB3dSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gd3UoaXRlcmFibGUpIHtcblx0ICBpZiAoIWlzSXRlcmFibGUoaXRlcmFibGUpKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoXCJ3dTogYFwiICsgaXRlcmFibGUgKyBcImAgaXMgbm90IGl0ZXJhYmxlIVwiKTtcblx0ICB9XG5cdCAgcmV0dXJuIG5ldyBXdShpdGVyYWJsZSk7XG5cdH07XG5cblx0ZnVuY3Rpb24gV3UoaXRlcmFibGUpIHtcblx0ICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSk7XG5cdCAgdGhpcy5uZXh0ID0gaXRlcmF0b3IubmV4dC5iaW5kKGl0ZXJhdG9yKTtcblx0fVxuXHR3dS5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cblx0d3UucHJvdG90eXBlW19TeW1ib2wkaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdC8qXG5cdCAqIEludGVybmFsIHV0aWxpdGllc1xuXHQgKi9cblxuXHQvLyBBbiBpbnRlcm5hbCBwbGFjZWhvbGRlciB2YWx1ZS5cblx0dmFyIE1JU1NJTkcgPSB7fTtcblxuXHQvLyBSZXR1cm4gd2hldGhlciBhIHRoaW5nIGlzIGl0ZXJhYmxlLlxuXHR2YXIgaXNJdGVyYWJsZSA9IGZ1bmN0aW9uIGlzSXRlcmFibGUodGhpbmcpIHtcblx0ICByZXR1cm4gdGhpbmcgJiYgdHlwZW9mIHRoaW5nW19TeW1ib2wkaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG5cdH07XG5cblx0Ly8gR2V0IHRoZSBpdGVyYXRvciBmb3IgdGhlIHRoaW5nIG9yIHRocm93IGFuIGVycm9yLlxuXHR2YXIgZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiBnZXRJdGVyYXRvcih0aGluZykge1xuXHQgIGlmIChpc0l0ZXJhYmxlKHRoaW5nKSkge1xuXHQgICAgcmV0dXJuIF9nZXRJdGVyYXRvcih0aGluZyk7XG5cdCAgfVxuXHQgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJOb3QgaXRlcmFibGU6IFwiICsgdGhpbmcpO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIHN0YXRpYyBtZXRob2Qgb24gYHd1YCBhbmQgc2V0IGl0cyBwcm90b3R5cGUgdG8gdGhlIHNoYXJlZFxuXHQvLyBgV3UucHJvdG90eXBlYC5cblx0dmFyIHN0YXRpY01ldGhvZCA9IGZ1bmN0aW9uIHN0YXRpY01ldGhvZChuYW1lLCBmbikge1xuXHQgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICB3dVtuYW1lXSA9IGZuO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIGZ1bmN0aW9uIHRoYXQgaXMgYXR0YWNoZWQgYXMgYm90aCBhIGBXdS5wcm90b3R5cGVgIG1ldGhvZCBhbmQgYVxuXHQvLyBjdXJyeWFibGUgc3RhdGljIG1ldGhvZCBvbiBgd3VgIGRpcmVjdGx5IHRoYXQgdGFrZXMgYW4gaXRlcmFibGUgYXMgaXRzIGxhc3Rcblx0Ly8gcGFyYW1ldGVyLlxuXHR2YXIgcHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuKSB7XG5cdCAgdmFyIGV4cGVjdGVkQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IGZuLmxlbmd0aCA6IGFyZ3VtZW50c1syXTtcblx0ICByZXR1cm4gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICAgIFd1LnByb3RvdHlwZVtuYW1lXSA9IGZuO1xuXG5cdCAgICAvLyArMSBmb3IgdGhlIGl0ZXJhYmxlLCB3aGljaCBpcyB0aGUgYHRoaXNgIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBzbyBpdFxuXHQgICAgLy8gaXNuJ3QgcmVmbGVjdGVkIGJ5IHRoZSBsZW5ndGggcHJvcGVydHkuXG5cdCAgICBleHBlY3RlZEFyZ3MgKz0gMTtcblxuXHQgICAgd3VbbmFtZV0gPSB3dS5jdXJyeWFibGUoZnVuY3Rpb24gKCkge1xuXHQgICAgICB2YXIgX3d1O1xuXG5cdCAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3MucG9wKCk7XG5cdCAgICAgIHJldHVybiAoX3d1ID0gd3UoaXRlcmFibGUpKVtuYW1lXS5hcHBseShfd3UsIGFyZ3MpO1xuXHQgICAgfSwgZXhwZWN0ZWRBcmdzKTtcblx0ICB9KSgpO1xuXHR9O1xuXG5cdC8vIEEgZGVjb3JhdG9yIGZvciByZXdyYXBwaW5nIGEgbWV0aG9kJ3MgcmV0dXJuZWQgaXRlcmFibGUgaW4gd3UgdG8gbWFpbnRhaW5cblx0Ly8gY2hhaW5hYmlsaXR5LlxuXHR2YXIgcmV3cmFwID0gZnVuY3Rpb24gcmV3cmFwKGZuKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG5cdCAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIHd1KGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoYXJncykpKTtcblx0ICB9O1xuXHR9O1xuXG5cdHZhciByZXdyYXBTdGF0aWNNZXRob2QgPSBmdW5jdGlvbiByZXdyYXBTdGF0aWNNZXRob2QobmFtZSwgZm4pIHtcblx0ICByZXR1cm4gc3RhdGljTWV0aG9kKG5hbWUsIHJld3JhcChmbikpO1xuXHR9O1xuXHR2YXIgcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuLCBleHBlY3RlZEFyZ3MpIHtcblx0ICByZXR1cm4gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIHJld3JhcChmbiksIGV4cGVjdGVkQXJncyk7XG5cdH07XG5cblx0Ly8gUmV0dXJuIGEgd3JhcHBlZCB2ZXJzaW9uIG9mIGBmbmAgYm91bmQgd2l0aCB0aGUgaW5pdGlhbCBhcmd1bWVudHNcblx0Ly8gYC4uLmFyZ3NgLlxuXHRmdW5jdGlvbiBjdXJyeShmbiwgYXJncykge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIG1vcmVBcmdzID0gQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcblx0ICAgICAgbW9yZUFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFyZ3MpLCBtb3JlQXJncykpO1xuXHQgIH07XG5cdH1cblxuXHQvKlxuXHQgKiBQdWJsaWMgdXRpbGl0aWVzXG5cdCAqL1xuXG5cdHN0YXRpY01ldGhvZChcImN1cnJ5YWJsZVwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgZXhwZWN0ZWQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmbi5sZW5ndGggOiBhcmd1bWVudHNbMV07XG5cdCAgcmV0dXJuIChmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZigpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gYXJncy5sZW5ndGggPj0gZXhwZWN0ZWQgPyBmbi5hcHBseSh0aGlzLCBhcmdzKSA6IGN1cnJ5KGYsIGFyZ3MpO1xuXHQgICAgfTtcblx0ICB9KSgpO1xuXHR9KTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJlbnRyaWVzXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG9iaikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uLCBfZGlkSXRlcmF0b3JFcnJvciwgX2l0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvciwgX3N0ZXAsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IgPSBfZ2V0SXRlcmF0b3IoX09iamVjdCRrZXlzKG9iaikpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGsgPSBfc3RlcC52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gW2ssIG9ialtrXV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3JbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwia2V5c1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX09iamVjdCRrZXlzKG9iaiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInZhbHVlc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIsIF9kaWRJdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yRXJyb3IyLCBfaXRlcmF0b3IyLCBfc3RlcDIsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyID0gX2dldEl0ZXJhdG9yKF9PYmplY3Qka2V5cyhvYmopKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBrID0gX3N0ZXAyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBvYmpba107XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJbmZpbml0ZSBpdGVyYXRvcnNcblx0ICovXG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY3ljbGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNhdmVkLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMywgX2RpZEl0ZXJhdG9yRXJyb3IzLCBfaXRlcmF0b3JFcnJvcjMsIF9pdGVyYXRvcjMsIF9zdGVwMywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzYXZlZCA9IFtdO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yMyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gKF9zdGVwMyA9IF9pdGVyYXRvcjMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAzLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIHNhdmVkLnB1c2goeCk7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMztcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBpZiAoIXNhdmVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzYXZlZCwgXCJ0MVwiLCAzMCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiY291bnRcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMCA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgc3RlcCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IDEgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIG47XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIG4gPSBzdGFydDtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiBuO1xuXG5cdCAgICAgIGNhc2UgNDpcblx0ICAgICAgICBuICs9IHN0ZXA7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInJlcGVhdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCh0aGluZykge1xuXHQgIHZhciB0aW1lcyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IEluZmluaXR5IDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciBpO1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoISh0aW1lcyA9PT0gSW5maW5pdHkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiB0aGluZztcblxuXHQgICAgICBjYXNlIDQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgaSA9IDA7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGlmICghKGkgPCB0aW1lcykpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gdGhpbmc7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBpKys7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJdGVyYXRvcnMgdGhhdCB0ZXJtaW5hdGUgb25jZSB0aGUgaW5wdXQgc2VxdWVuY2UgaGFzIGJlZW4gZXhoYXVzdGVkXG5cdCAqL1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImNoYWluXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCxcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0LFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjQsXG5cdCAgICAgIF9sZW41LFxuXHQgICAgICBpdGVyYWJsZXMsXG5cdCAgICAgIF9rZXk1LFxuXHQgICAgICBfaXRlcmF0b3I0LFxuXHQgICAgICBfc3RlcDQsXG5cdCAgICAgIGl0LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNSA9IGFyZ3MkMSQwLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcblx0ICAgICAgICAgIGl0ZXJhYmxlc1tfa2V5NV0gPSBhcmdzJDEkMFtfa2V5NV07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yNCA9IF9nZXRJdGVyYXRvcihpdGVyYWJsZXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXA0LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGl0LCBcInQwXCIsIDkpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCAmJiBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY2h1bmtcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZW1zLCBpbmRleCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUsIF9kaWRJdGVyYXRvckVycm9yNSwgX2l0ZXJhdG9yRXJyb3I1LCBfaXRlcmF0b3I1LCBfc3RlcDUsIGl0ZW07XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBbXTtcblx0ICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3I1ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSAoX3N0ZXA1ID0gX2l0ZXJhdG9yNS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ZW0gPSBfc3RlcDUudmFsdWU7XG5cblx0ICAgICAgICBpdGVtc1tpbmRleCsrXSA9IGl0ZW07XG5cblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpdGVtcyA9IFtdO1xuXHQgICAgICAgIGluZGV4ID0gMDtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjUgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ICYmIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I1O1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICAgIGlmICghaW5kZXgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAyMCwgMjQsIDMyXSwgWzI1LCwgMjcsIDMxXV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY29uY2F0TWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242LCBfZGlkSXRlcmF0b3JFcnJvcjYsIF9pdGVyYXRvckVycm9yNiwgX2l0ZXJhdG9yNiwgX3N0ZXA2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjYgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yNiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gKF9zdGVwNiA9IF9pdGVyYXRvcjYubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA2LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGZuKHgpLCBcInQwXCIsIDgpO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTM7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiAmJiBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNjtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxNyk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxMywgMTcsIDI1XSwgWzE4LCwgMjAsIDI0XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243LCBfZGlkSXRlcmF0b3JFcnJvcjcsIF9pdGVyYXRvckVycm9yNywgX2l0ZXJhdG9yNywgX3N0ZXA3LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yNyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gKF9zdGVwNyA9IF9pdGVyYXRvcjcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA3LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCEoaSsrIDwgbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTYpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgJiYgX2l0ZXJhdG9yN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yN1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I3KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjc7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI1KTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQodGhpcywgXCJ0MVwiLCAzMSk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjgsIF9kaWRJdGVyYXRvckVycm9yOCwgX2l0ZXJhdG9yRXJyb3I4LCBfaXRlcmF0b3I4LCBfc3RlcDgsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I4ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSAoX3N0ZXA4ID0gX2l0ZXJhdG9yOC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDgudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMik7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNSk7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I4ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCAmJiBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yODtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjQpO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZCh0aGlzLCBcInQxXCIsIDMwKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE3LCAyMSwgMjldLCBbMjIsLCAyNCwgMjhdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJlbnVtZXJhdGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoW3RoaXMsIHd1LmNvdW50KCldKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmlsdGVyXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjksIF9kaWRJdGVyYXRvckVycm9yOSwgX2l0ZXJhdG9yRXJyb3I5LCBfaXRlcmF0b3I5LCBfc3RlcDksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I5ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSAoX3N0ZXA5ID0gX2l0ZXJhdG9yOS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDkudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I5ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSAmJiBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmxhdHRlblwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2hhbGxvdyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCwgX2RpZEl0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEwID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IChfc3RlcDEwID0gX2l0ZXJhdG9yMTAubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMC52YWx1ZTtcblxuXHQgICAgICAgIGlmICghKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiICYmIGlzSXRlcmFibGUoeCkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzaGFsbG93ID8geCA6IHd1KHgpLmZsYXR0ZW4oKSwgXCJ0MFwiLCA5KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwICYmIF9pdGVyYXRvcjEwW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMDtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjUpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiaW52b2tlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG5hbWUpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExLFxuXHQgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfbGVuNixcblx0ICAgICAgYXJncyxcblx0ICAgICAgX2tleTYsXG5cdCAgICAgIF9pdGVyYXRvcjExLFxuXHQgICAgICBfc3RlcDExLFxuXHQgICAgICB4LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTEgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNiA9IGFyZ3MkMSQwLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW42ID4gMSA/IF9sZW42IC0gMSA6IDApLCBfa2V5NiA9IDE7IF9rZXk2IDwgX2xlbjY7IF9rZXk2KyspIHtcblx0ICAgICAgICAgIGFyZ3NbX2tleTYgLSAxXSA9IGFyZ3MkMSQwW19rZXk2XTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3IxMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSA9IChfc3RlcDExID0gX2l0ZXJhdG9yMTEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMS52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV0uYXBwbHkoeCwgYXJncyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgJiYgX2l0ZXJhdG9yMTFbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjExW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjExKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjExO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJtYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyLCBfZGlkSXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBmbih4KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyICYmIF9pdGVyYXRvcjEyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicGx1Y2tcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobmFtZSkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMsIF9kaWRJdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvcjEzLCBfc3RlcDEzLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTMgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSAoX3N0ZXAxMyA9IF9pdGVyYXRvcjEzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTMudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyAmJiBfaXRlcmF0b3IxM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTNbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTM7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInJlZHVjdGlvbnNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciB2YWwsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCwgX2RpZEl0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yMTQsIF9zdGVwMTQsIHgsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSwgX2RpZEl0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yMTUsIF9zdGVwMTU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgdmFsID0gaW5pdGlhbDtcblxuXHQgICAgICAgIGlmICghKHZhbCA9PT0gdW5kZWZpbmVkKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IChfc3RlcDE0ID0gX2l0ZXJhdG9yMTQubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxNC52YWx1ZTtcblxuXHQgICAgICAgIHZhbCA9IHg7XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE0KTtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTQgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCAmJiBfaXRlcmF0b3IxNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTQ7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgIHJldHVybiB2YWw7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTUgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMztcblx0ICAgICAgICBfaXRlcmF0b3IxNSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSAoX3N0ZXAxNSA9IF9pdGVyYXRvcjE1Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTUudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM5O1xuXHQgICAgICAgIHJldHVybiB2YWwgPSBmbih2YWwsIHgpO1xuXG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0Mjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSA0ODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgJiYgX2l0ZXJhdG9yMTVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgNTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDUxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE1KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE1O1xuXG5cdCAgICAgIGNhc2UgNTQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCg1MSk7XG5cblx0ICAgICAgY2FzZSA1NTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDQ4KTtcblxuXHQgICAgICBjYXNlIDU2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgdmFsKTtcblxuXHQgICAgICBjYXNlIDU3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddLCBbMzMsIDQ0LCA0OCwgNTZdLCBbNDksLCA1MSwgNTVdXSk7XG5cdH0pLCAyKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJyZWplY3RcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYsIF9kaWRJdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvcjE2LCBfc3RlcDE2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTYgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSAoX3N0ZXAxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTYudmFsdWU7XG5cblx0ICAgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiAmJiBfaXRlcmF0b3IxNltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTZbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTY7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNsaWNlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDAgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIHN0b3AgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcsIF9kaWRJdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvcjE3LCBfc3RlcDE3LCBfc3RlcDE3JHZhbHVlLCB4LCBpO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKHN0b3AgPCBzdGFydCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJwYXJhbWV0ZXIgYHN0b3BgICg9IFwiICsgc3RvcCArIFwiKSBtdXN0IGJlID49IGBzdGFydGAgKD0gXCIgKyBzdGFydCArIFwiKVwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNyA9IF9nZXRJdGVyYXRvcih0aGlzLmVudW1lcmF0ZSgpKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IChfc3RlcDE3ID0gX2l0ZXJhdG9yMTcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfc3RlcDE3JHZhbHVlID0gX3NsaWNlZFRvQXJyYXkoX3N0ZXAxNy52YWx1ZSwgMik7XG5cdCAgICAgICAgeCA9IF9zdGVwMTckdmFsdWVbMF07XG5cdCAgICAgICAgaSA9IF9zdGVwMTckdmFsdWVbMV07XG5cblx0ICAgICAgICBpZiAoIShpIDwgc3RhcnQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaWYgKCEoaSA+PSBzdG9wKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDIwKTtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTcgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyAmJiBfaXRlcmF0b3IxN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjk7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTcpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTc7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI5KTtcblxuXHQgICAgICBjYXNlIDMzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzQ6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMjIsIDI2LCAzNF0sIFsyNywsIDI5LCAzM11dKTtcblx0fSksIDIpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNwcmVhZE1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTgsIF9kaWRJdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvcjE4LCBfc3RlcDE4LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTggPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTggPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSAoX3N0ZXAxOCA9IF9pdGVyYXRvcjE4Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTgudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHVuZGVmaW5lZCwgX3RvQ29uc3VtYWJsZUFycmF5KHgpKTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ICYmIF9pdGVyYXRvcjE4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxODtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSwgX2RpZEl0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yMTksIF9zdGVwMTksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEobiA8IDEpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTkgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDY7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTkgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSAoX3N0ZXAxOSA9IF9pdGVyYXRvcjE5Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTkudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgaWYgKCEoKytpID49IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNik7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ICYmIF9pdGVyYXRvcjE5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxOTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s2LCAxOSwgMjMsIDMxXSwgWzI0LCwgMjYsIDMwXV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwLCBfZGlkSXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3IyMCwgX3N0ZXAyMCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIwID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjIwID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gKF9zdGVwMjAgPSBfaXRlcmF0b3IyMC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIwLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNCk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjAgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCAmJiBfaXRlcmF0b3IyMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjApIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjA7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN11dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRhcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSwgX2RpZEl0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yMjEsIF9zdGVwMjEsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIxID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IChfc3RlcDIxID0gX2l0ZXJhdG9yMjEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMS52YWx1ZTtcblxuXHQgICAgICAgIGZuKHgpO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjEgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjEgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSAmJiBfaXRlcmF0b3IyMVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjFbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjEpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjE7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInVuaXF1ZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2VlbiwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyLCBfZGlkSXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3IyMiwgX3N0ZXAyMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzZWVuID0gbmV3IF9TZXQoKTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjIyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gKF9zdGVwMjIgPSBfaXRlcmF0b3IyMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIyLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKHNlZW4uaGFzKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBzZWVuLmFkZCh4KTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiAmJiBfaXRlcmF0b3IyMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjI7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgc2Vlbi5jbGVhcigpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTcsIDIxLCAyOV0sIFsyMiwsIDI0LCAyOF1dKTtcblx0fSkpO1xuXG5cdHZhciBfemlwID0gcmV3cmFwKF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGl0ZXJhYmxlcykge1xuXHQgIHZhciBsb25nZXN0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgaXRlcnMsIG51bUl0ZXJzLCBudW1GaW5pc2hlZCwgZmluaXNoZWQsIHppcHBlZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzLCBfZGlkSXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3IyMywgX3N0ZXAyMywgaXQsIF9pdCRuZXh0LCB2YWx1ZSwgZG9uZTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoaXRlcmFibGVzLmxlbmd0aCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpdGVycyA9IGl0ZXJhYmxlcy5tYXAoZ2V0SXRlcmF0b3IpO1xuXHQgICAgICAgIG51bUl0ZXJzID0gaXRlcmFibGVzLmxlbmd0aDtcblx0ICAgICAgICBudW1GaW5pc2hlZCA9IDA7XG5cdCAgICAgICAgZmluaXNoZWQgPSBmYWxzZTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKGZpbmlzaGVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB6aXBwZWQgPSBbXTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxMTtcblx0ICAgICAgICBfaXRlcmF0b3IyMyA9IF9nZXRJdGVyYXRvcihpdGVycyk7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gKF9zdGVwMjMgPSBfaXRlcmF0b3IyMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXAyMy52YWx1ZTtcblx0ICAgICAgICBfaXQkbmV4dCA9IGl0Lm5leHQoKTtcblx0ICAgICAgICB2YWx1ZSA9IF9pdCRuZXh0LnZhbHVlO1xuXHQgICAgICAgIGRvbmUgPSBfaXQkbmV4dC5kb25lO1xuXG5cdCAgICAgICAgaWYgKCFkb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobG9uZ2VzdCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGlmICgrK251bUZpbmlzaGVkID09IG51bUl0ZXJzKSB7XG5cdCAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgIC8vIExlYXZlIGEgaG9sZSBpbiB0aGUgYXJyYXkgc28gdGhhdCB5b3UgY2FuIGRpc3Rpbmd1aXNoIGFuIGl0ZXJhYmxlXG5cdCAgICAgICAgICAvLyB0aGF0J3MgZG9uZSAodmlhIGBpbmRleCBpbiBhcnJheSA9PSBmYWxzZWApIGZyb20gYW4gaXRlcmFibGVcblx0ICAgICAgICAgIC8vIHlpZWxkaW5nIGB1bmRlZmluZWRgLlxuXHQgICAgICAgICAgemlwcGVkLmxlbmd0aCsrO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB6aXBwZWQucHVzaCh2YWx1ZSk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDExKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzI7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMzO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgJiYgX2l0ZXJhdG9yMjNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM1O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIzO1xuXG5cdCAgICAgIGNhc2UgMzg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgzNSk7XG5cblx0ICAgICAgY2FzZSAzOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDMyKTtcblxuXHQgICAgICBjYXNlIDQwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0Mjtcblx0ICAgICAgICByZXR1cm4gemlwcGVkO1xuXG5cdCAgICAgIGNhc2UgNDI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1sxMSwgMjgsIDMyLCA0MF0sIFszMywsIDM1LCAzOV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICBmb3IgKHZhciBfbGVuNyA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW43KSwgX2tleTcgPSAwOyBfa2V5NyA8IF9sZW43OyBfa2V5NysrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleTddID0gYXJndW1lbnRzW19rZXk3XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBMb25nZXN0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIGZvciAodmFyIF9sZW44ID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjgpLCBfa2V5OCA9IDA7IF9rZXk4IDwgX2xlbjg7IF9rZXk4KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OF0gPSBhcmd1bWVudHNbX2tleThdO1xuXHQgIH1cblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKGl0ZXJhYmxlcywgdHJ1ZSksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFdpdGhcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICBmb3IgKHZhciBfbGVuOSA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW45ID4gMSA/IF9sZW45IC0gMSA6IDApLCBfa2V5OSA9IDE7IF9rZXk5IDwgX2xlbjk7IF9rZXk5KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OSAtIDFdID0gYXJndW1lbnRzW19rZXk5XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLnNwcmVhZE1hcChmbiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdC8qXG5cdCAqIEZ1bmN0aW9ucyB0aGF0IGZvcmNlIGl0ZXJhdGlvbiB0byBjb21wbGV0aW9uIGFuZCByZXR1cm4gYSB2YWx1ZS5cblx0ICovXG5cblx0Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3ZSB3aWxsIGJsb2NrIHRoZSBtYWluIHRocmVhZCBhdCBhIHRpbWVcblx0Ly8gd2hpbGUgaW4gYGFzeW5jRWFjaGAuXG5cdHd1Lk1BWF9CTE9DSyA9IDE1O1xuXHQvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB5aWVsZCB0byB0aGUgbWFpbiB0aHJlYWQgYmV0d2VlbiBidXJzdHMgb2Zcblx0Ly8gd29yay5cblx0d3UuVElNRU9VVCA9IDE7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiYXN5bmNFYWNoXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBtYXhCbG9jayA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHd1Lk1BWF9CTE9DSyA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgdGltZW91dCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHd1LlRJTUVPVVQgOiBhcmd1bWVudHNbMl07XG5cblx0ICB2YXIgaXRlciA9IGdldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgcmV0dXJuIG5ldyBfUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICAoZnVuY3Rpb24gbG9vcCgpIHtcblx0ICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuXHQgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gdHJ1ZTtcblx0ICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjQgPSBmYWxzZTtcblx0ICAgICAgdmFyIF9pdGVyYXRvckVycm9yMjQgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyNCA9IF9nZXRJdGVyYXRvcihpdGVyKSwgX3N0ZXAyNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSAoX3N0ZXAyNCA9IF9pdGVyYXRvcjI0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWUpIHtcblx0ICAgICAgICAgIHZhciB4ID0gX3N0ZXAyNC52YWx1ZTtcblxuXHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgZm4oeCk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgICAgICAgIHJlamVjdChlKTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gbWF4QmxvY2spIHtcblx0ICAgICAgICAgICAgc2V0VGltZW91dChsb29wLCB0aW1lb3V0KTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyNCA9IGVycjtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgJiYgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgICAgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjQpIHtcblx0ICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICByZXNvbHZlKCk7XG5cdCAgICB9KSgpO1xuXHQgIH0pO1xuXHR9LCAzKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJldmVyeVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI1ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI1ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI1OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IChfc3RlcDI1ID0gX2l0ZXJhdG9yMjUubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjUudmFsdWU7XG5cblx0ICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI1ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSAmJiBfaXRlcmF0b3IyNVtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI1KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiB0cnVlO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJmaW5kXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI2ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjYgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjYgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjY7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gKF9zdGVwMjYgPSBfaXRlcmF0b3IyNi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyNi52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4geDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI2ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiAmJiBfaXRlcmF0b3IyNltcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI2KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZm9yRWFjaFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNyA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI3ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI3ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI3OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IChfc3RlcDI3ID0gX2l0ZXJhdG9yMjcubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjcudmFsdWU7XG5cblx0ICAgICAgZm4oeCk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI3ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjcgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ICYmIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjcpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI3O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJoYXNcIiwgZnVuY3Rpb24gKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHRoaXMuc29tZShmdW5jdGlvbiAoeCkge1xuXHQgICAgcmV0dXJuIHggPT09IHRoaW5nO1xuXHQgIH0pO1xuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJyZWR1Y2VcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgdmFsID0gaW5pdGlhbDtcblx0ICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcblx0ICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlO1xuXHQgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjggPSBmYWxzZTtcblx0ICAgIHZhciBfaXRlcmF0b3JFcnJvcjI4ID0gdW5kZWZpbmVkO1xuXG5cdCAgICB0cnkge1xuXHQgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyOCA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyODsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSAoX3N0ZXAyOCA9IF9pdGVyYXRvcjI4Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IHRydWUpIHtcblx0ICAgICAgICB2YXIgeCA9IF9zdGVwMjgudmFsdWU7XG5cblx0ICAgICAgICB2YWwgPSB4O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyOCA9IHRydWU7XG5cdCAgICAgIF9pdGVyYXRvckVycm9yMjggPSBlcnI7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ICYmIF9pdGVyYXRvcjI4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOCkge1xuXHQgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyODtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyOSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI5ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI5ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI5OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IChfc3RlcDI5ID0gX2l0ZXJhdG9yMjkubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjkudmFsdWU7XG5cblx0ICAgICAgdmFsID0gZm4odmFsLCB4KTtcblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjkgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyOSA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgJiYgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyOVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOSkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gdmFsO1xuXHR9LCAyKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJzb21lXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjMwID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMzAgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMzAgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMzA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gKF9zdGVwMzAgPSBfaXRlcmF0b3IzMC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAzMC52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IzMCA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjMwID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCAmJiBfaXRlcmF0b3IzMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjMwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjMwKSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzMDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiBmYWxzZTtcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwidG9BcnJheVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcykpO1xuXHR9KTtcblxuXHQvKlxuXHQgKiBNZXRob2RzIHRoYXQgcmV0dXJuIGFuIGFycmF5IG9mIGl0ZXJhYmxlcy5cblx0ICovXG5cblx0dmFyIE1BWF9DQUNIRSA9IDUwMDtcblxuXHR2YXIgX3RlZSA9IHJld3JhcChfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChpdGVyYXRvciwgY2FjaGUpIHtcblx0ICB2YXIgaXRlbXMsIGluZGV4LCBfaXRlcmF0b3IkbmV4dCwgZG9uZSwgdmFsdWU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcztcblx0ICAgICAgICBpbmRleCA9IDA7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IGl0ZW1zLmxlbmd0aCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvciRuZXh0ID0gaXRlcmF0b3IubmV4dCgpO1xuXHQgICAgICAgIGRvbmUgPSBfaXRlcmF0b3IkbmV4dC5kb25lO1xuXHQgICAgICAgIHZhbHVlID0gX2l0ZXJhdG9yJG5leHQudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChjYWNoZS5yZXR1cm5lZCA9PT0gTUlTU0lORykge1xuXHQgICAgICAgICAgY2FjaGUucmV0dXJuZWQgPSB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDI1KTtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK10gPSB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBjYWNoZS50YWlsKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdmFsdWUgPSBpdGVtc1tpbmRleF07XG5cblx0ICAgICAgICBpZiAoaW5kZXggPT09IE1BWF9DQUNIRSkge1xuXHQgICAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcyA9IGl0ZW1zLnNsaWNlKGluZGV4KTtcblx0ICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAgICAgIGNhY2hlLnRhaWwgPSAwO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpdGVtc1tpbmRleF0gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBjYWNoZS50YWlsID0gKytpbmRleDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIHJldHVybiB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK107XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDI1OlxuXG5cdCAgICAgICAgaWYgKGNhY2hlLnRhaWwgPT09IGluZGV4KSB7XG5cdCAgICAgICAgICBpdGVtcy5sZW5ndGggPSAwO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgY2FjaGUucmV0dXJuZWQpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cdF90ZWUucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInRlZVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZXJhYmxlcyA9IG5ldyBBcnJheShuKTtcblx0ICB2YXIgY2FjaGUgPSB7IHRhaWw6IDAsIGl0ZW1zOiBbXSwgcmV0dXJuZWQ6IE1JU1NJTkcgfTtcblxuXHQgIHdoaWxlIChuLS0pIHtcblx0ICAgIGl0ZXJhYmxlc1tuXSA9IF90ZWUodGhpcywgY2FjaGUpO1xuXHQgIH1cblxuXHQgIHJldHVybiBpdGVyYWJsZXM7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInVuemlwXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDIgOiBhcmd1bWVudHNbMF07XG5cblx0ICByZXR1cm4gdGhpcy50ZWUobikubWFwKGZ1bmN0aW9uIChpdGVyLCBpKSB7XG5cdCAgICByZXR1cm4gaXRlci5wbHVjayhpKTtcblx0ICB9KTtcblx0fSwgMSk7XG5cblx0Lypcblx0ICogTnVtYmVyIG9mIGNoYW1iZXJzLlxuXHQgKi9cblxuXHR3dS50YW5nID0geyBjbGFuOiAzNiB9O1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYSBjYWNoZWQgaXRlbSBmb3IgdGhpcyBpbmRleCwgd2UgbmVlZCB0byBmb3JjZSBpdHNcblx0Ly8gZXZhbHVhdGlvbi5cblxuXHQvLyBJZiB3ZSBhcmUgdGhlIGxhc3QgaXRlcmF0b3IgdG8gdXNlIGEgY2FjaGVkIHZhbHVlLCBjbGVhbiB1cCBhZnRlclxuXHQvLyBvdXJzZWx2ZXMuXG5cblx0Ly8gV2UgaGF2ZSBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgdGhpcyBpbmRleCwgc28geWllbGQgaXQuXG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX0FycmF5JGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpW1wiZGVmYXVsdFwiXTtcblxuXHRleHBvcnRzW1wiZGVmYXVsdFwiXSA9IGZ1bmN0aW9uIChhcnIpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG5cdCAgICByZXR1cm4gYXJyMjtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIF9BcnJheSRmcm9tKGFycik7XG5cdCAgfVxuXHR9O1xuXG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oMyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLkFycmF5LmZyb207XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkYXQgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSh0cnVlKTtcblxuXHQvLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oOCkoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24oaXRlcmF0ZWQpe1xuXHQgIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQvLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG5cdH0sIGZ1bmN0aW9uKCl7XG5cdCAgdmFyIE8gICAgID0gdGhpcy5fdFxuXHQgICAgLCBpbmRleCA9IHRoaXMuX2lcblx0ICAgICwgcG9pbnQ7XG5cdCAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcblx0ICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG5cdCAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG5cdCAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyB0cnVlICAtPiBTdHJpbmcjYXRcblx0Ly8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBkZWZpbmVkICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRPX1NUUklORyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKHRoYXQsIHBvcyl7XG5cdCAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuXHQgICAgICAsIGkgPSB0b0ludGVnZXIocG9zKVxuXHQgICAgICAsIGwgPSBzLmxlbmd0aFxuXHQgICAgICAsIGEsIGI7XG5cdCAgICBpZihpIDwgMCB8fCBpID49IGwpcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuXHQgICAgYSA9IHMuY2hhckNvZGVBdChpKTtcblx0ICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGxcblx0ICAgICAgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG5cdCAgICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcblx0ICAgICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gNy4xLjQgVG9JbnRlZ2VyXG5cdHZhciBjZWlsICA9IE1hdGguY2VpbFxuXHQgICwgZmxvb3IgPSBNYXRoLmZsb29yO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKGl0ID09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgTElCUkFSWSAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgJGRlZiAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsICRyZWRlZiAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpXG5cdCAgLCBoaWRlICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgaGFzICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIFNZTUJPTF9JVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgQlVHR1kgICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcblx0ICAsIEZGX0lURVJBVE9SICAgICA9ICdAQGl0ZXJhdG9yJ1xuXHQgICwgS0VZUyAgICAgICAgICAgID0gJ2tleXMnXG5cdCAgLCBWQUxVRVMgICAgICAgICAgPSAndmFsdWVzJztcblx0dmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRSl7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNCkoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXHQgIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcblx0ICAgIHN3aXRjaChraW5kKXtcblx0ICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgIH07XG5cdCAgdmFyIFRBRyAgICAgID0gTkFNRSArICcgSXRlcmF0b3InXG5cdCAgICAsIHByb3RvICAgID0gQmFzZS5wcm90b3R5cGVcblx0ICAgICwgX25hdGl2ZSAgPSBwcm90b1tTWU1CT0xfSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdXG5cdCAgICAsIF9kZWZhdWx0ID0gX25hdGl2ZSB8fCBjcmVhdGVNZXRob2QoREVGQVVMVClcblx0ICAgICwgbWV0aG9kcywga2V5O1xuXHQgIC8vIEZpeCBuYXRpdmVcblx0ICBpZihfbmF0aXZlKXtcblx0ICAgIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldFByb3RvKF9kZWZhdWx0LmNhbGwobmV3IEJhc2UpKTtcblx0ICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuXHQgICAgLy8gRkYgZml4XG5cdCAgICBpZighTElCUkFSWSAmJiBoYXMocHJvdG8sIEZGX0lURVJBVE9SKSloaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBTWU1CT0xfSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuXHQgIH1cblx0ICAvLyBEZWZpbmUgaXRlcmF0b3Jcblx0ICBpZighTElCUkFSWSB8fCBGT1JDRSloaWRlKHByb3RvLCBTWU1CT0xfSVRFUkFUT1IsIF9kZWZhdWx0KTtcblx0ICAvLyBQbHVnIGZvciBsaWJyYXJ5XG5cdCAgSXRlcmF0b3JzW05BTUVdID0gX2RlZmF1bHQ7XG5cdCAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcblx0ICBpZihERUZBVUxUKXtcblx0ICAgIG1ldGhvZHMgPSB7XG5cdCAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgICAgICAgID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoS0VZUyksXG5cdCAgICAgIHZhbHVlczogIERFRkFVTFQgPT0gVkFMVUVTID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoVkFMVUVTKSxcblx0ICAgICAgZW50cmllczogREVGQVVMVCAhPSBWQUxVRVMgPyBfZGVmYXVsdCA6IGNyZWF0ZU1ldGhvZCgnZW50cmllcycpXG5cdCAgICB9O1xuXHQgICAgaWYoRk9SQ0UpZm9yKGtleSBpbiBtZXRob2RzKXtcblx0ICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKSRyZWRlZihwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuXHQgICAgfSBlbHNlICRkZWYoJGRlZi5QICsgJGRlZi5GICogQlVHR1ksIE5BTUUsIG1ldGhvZHMpO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGNvcmUgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpXG5cdCAgLCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblx0dmFyIGN0eCA9IGZ1bmN0aW9uKGZuLCB0aGF0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24oKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cdHZhciAkZGVmID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXtcblx0ICB2YXIga2V5LCBvd24sIG91dCwgZXhwXG5cdCAgICAsIGlzR2xvYmFsID0gdHlwZSAmICRkZWYuR1xuXHQgICAgLCBpc1Byb3RvICA9IHR5cGUgJiAkZGVmLlBcblx0ICAgICwgdGFyZ2V0ICAgPSBpc0dsb2JhbCA/IGdsb2JhbCA6IHR5cGUgJiAkZGVmLlNcblx0ICAgICAgICA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV1cblx0ICAgICwgZXhwb3J0cyAgPSBpc0dsb2JhbCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuXHQgIGlmKGlzR2xvYmFsKXNvdXJjZSA9IG5hbWU7XG5cdCAgZm9yKGtleSBpbiBzb3VyY2Upe1xuXHQgICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG5cdCAgICBvd24gPSAhKHR5cGUgJiAkZGVmLkYpICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0O1xuXHQgICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuXHQgICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcblx0ICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG5cdCAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcblx0ICAgIGlmKGlzR2xvYmFsICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nKWV4cCA9IHNvdXJjZVtrZXldO1xuXHQgICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcblx0ICAgIGVsc2UgaWYodHlwZSAmICRkZWYuQiAmJiBvd24pZXhwID0gY3R4KG91dCwgZ2xvYmFsKTtcblx0ICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG5cdCAgICBlbHNlIGlmKHR5cGUgJiAkZGVmLlcgJiYgdGFyZ2V0W2tleV0gPT0gb3V0KSFmdW5jdGlvbihDKXtcblx0ICAgICAgZXhwID0gZnVuY3Rpb24ocGFyYW0pe1xuXHQgICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgQyA/IG5ldyBDKHBhcmFtKSA6IEMocGFyYW0pO1xuXHQgICAgICB9O1xuXHQgICAgICBleHBbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcblx0ICAgIH0ob3V0KTtcblx0ICAgIGVsc2UgZXhwID0gaXNQcm90byAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcblx0ICAgIC8vIGV4cG9ydFxuXHQgICAgZXhwb3J0c1trZXldID0gZXhwO1xuXHQgICAgaWYoaXNQcm90bykoZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSkpW2tleV0gPSBvdXQ7XG5cdCAgfVxuXHR9O1xuXHQvLyB0eXBlIGJpdG1hcFxuXHQkZGVmLkYgPSAxOyAgLy8gZm9yY2VkXG5cdCRkZWYuRyA9IDI7ICAvLyBnbG9iYWxcblx0JGRlZi5TID0gNDsgIC8vIHN0YXRpY1xuXHQkZGVmLlAgPSA4OyAgLy8gcHJvdG9cblx0JGRlZi5CID0gMTY7IC8vIGJpbmRcblx0JGRlZi5XID0gMzI7IC8vIHdyYXBcblx0bW9kdWxlLmV4cG9ydHMgPSAkZGVmO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5cdHZhciBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblx0dmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSBVTkRFRklORUQgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuXHQgID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gVU5ERUZJTkVEICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZiA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdGlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMS4yLjAnfTtcblx0aWYodHlwZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuLyoqKi8gfSxcbi8qIDE0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIHJldHVybiAkLnNldERlc2Mob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0fSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG5cdCAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcblx0ICByZXR1cm4gb2JqZWN0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBjcmVhdGU6ICAgICAkT2JqZWN0LmNyZWF0ZSxcblx0ICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuXHQgIGlzRW51bTogICAgIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuXHQgIGdldERlc2M6ICAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHksXG5cdCAgc2V0RGVzY3M6ICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIGdldEtleXM6ICAgICRPYmplY3Qua2V5cyxcblx0ICBnZXROYW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgZ2V0U3ltYm9sczogJE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG5cdCAgZWFjaDogICAgICAgW10uZm9yRWFjaFxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYml0bWFwLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHtcblx0ICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcblx0ICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcblx0ICAgIHdyaXRhYmxlICAgIDogIShiaXRtYXAgJiA0KSxcblx0ICAgIHZhbHVlICAgICAgIDogdmFsdWVcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcblx0bW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gISFleGVjKCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwga2V5KXtcblx0ICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgc3RvcmUgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSkoJ3drcycpXG5cdCAgLCBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5TeW1ib2w7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG5cdCAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG5cdCAgICBTeW1ib2wgJiYgU3ltYm9sW25hbWVdIHx8IChTeW1ib2wgfHwgX193ZWJwYWNrX3JlcXVpcmVfXygyMikpKCdTeW1ib2wuJyArIG5hbWUpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG5cdCAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaWQgPSAwXG5cdCAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8qKiovIH0sXG4vKiAyNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG5cdC8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTQpKEl0ZXJhdG9yUHJvdG90eXBlLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuXHQgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9ICQuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogX193ZWJwYWNrX3JlcXVpcmVfXygxNikoMSxuZXh0KX0pO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBoYXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgVEFHICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCd0b1N0cmluZ1RhZycpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIHRhZywgc3RhdCl7XG5cdCAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSloaWRlKGl0LCBUQUcsIHRhZyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgJGRlZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgdG9PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXygzOCkoZnVuY3Rpb24oaXRlcil7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG5cdCAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlLyosIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKi8pe1xuXHQgICAgdmFyIE8gICAgICAgPSB0b09iamVjdChhcnJheUxpa2UpXG5cdCAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcblx0ICAgICAgLCBtYXBmbiAgID0gYXJndW1lbnRzWzFdXG5cdCAgICAgICwgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWRcblx0ICAgICAgLCBpbmRleCAgID0gMFxuXHQgICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcblx0ICAgICAgLCBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgICBpZihtYXBwaW5nKW1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuXHQgICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG5cdCAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG5cdCAgICAgIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQzsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcblx0ICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuXHQgICAgcmV0dXJuIHJlc3VsdDtcblx0ICB9XG5cdH0pO1xuXG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5cdHZhciBhRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgdGhhdCwgbGVuZ3RoKXtcblx0ICBhRnVuY3Rpb24oZm4pO1xuXHQgIGlmKHRoYXQgPT09IHVuZGVmaW5lZClyZXR1cm4gZm47XG5cdCAgc3dpdGNoKGxlbmd0aCl7XG5cdCAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG5cdCAgICB9O1xuXHQgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuXHQgICAgfTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcblx0ICAgIH07XG5cdCAgfVxuXHQgIHJldHVybiBmdW5jdGlvbigvKiAuLi5hcmdzICovKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxuXHR2YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcblx0dmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcyl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG5cdCAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcblx0ICAgIGlmKHJldCAhPT0gdW5kZWZpbmVkKWFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG5cdCAgICB0aHJvdyBlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoIWlzT2JqZWN0KGl0KSl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxuXHR2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gKEl0ZXJhdG9ycy5BcnJheSB8fCBBcnJheS5wcm90b3R5cGVbSVRFUkFUT1JdKSA9PT0gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjE1IFRvTGVuZ3RoXG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY2xhc3NvZiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZihpdCAhPSB1bmRlZmluZWQpcmV0dXJuIGl0W0lURVJBVE9SXSB8fCBpdFsnQEBpdGVyYXRvciddIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG5cdCAgLCBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgndG9TdHJpbmdUYWcnKVxuXHQgIC8vIEVTMyB3cm9uZyBoZXJlXG5cdCAgLCBBUkcgPSBjb2YoZnVuY3Rpb24oKXsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTywgVCwgQjtcblx0ICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcblx0ICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuXHQgICAgOiB0eXBlb2YgKFQgPSAoTyA9IE9iamVjdChpdCkpW1RBR10pID09ICdzdHJpbmcnID8gVFxuXHQgICAgLy8gYnVpbHRpblRhZyBjYXNlXG5cdCAgICA6IEFSRyA/IGNvZihPKVxuXHQgICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuXHQgICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU1lNQk9MX0lURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIFNBRkVfQ0xPU0lORyAgICA9IGZhbHNlO1xuXHR0cnkge1xuXHQgIHZhciByaXRlciA9IFs3XVtTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24oKXsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcblx0ICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbigpeyB0aHJvdyAyOyB9KTtcblx0fSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIGlmKCFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuXHQgIHZhciBzYWZlID0gZmFsc2U7XG5cdCAgdHJ5IHtcblx0ICAgIHZhciBhcnIgID0gWzddXG5cdCAgICAgICwgaXRlciA9IGFycltTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgICBpdGVyLm5leHQgPSBmdW5jdGlvbigpeyBzYWZlID0gdHJ1ZTsgfTtcblx0ICAgIGFycltTWU1CT0xfSVRFUkFUT1JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXI7IH07XG5cdCAgICBleGVjKGFycik7XG5cdCAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHQgIHJldHVybiBzYWZlO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfZ2V0SXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9pc0l0ZXJhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSlbXCJkZWZhdWx0XCJdO1xuXG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gKGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuXHQgICAgdmFyIF9hcnIgPSBbXTtcblx0ICAgIHZhciBfbiA9IHRydWU7XG5cdCAgICB2YXIgX2QgPSBmYWxzZTtcblx0ICAgIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuXHQgICAgdHJ5IHtcblx0ICAgICAgZm9yICh2YXIgX2kgPSBfZ2V0SXRlcmF0b3IoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcblx0ICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG5cdCAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2QgPSB0cnVlO1xuXHQgICAgICBfZSA9IGVycjtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2QpIHRocm93IF9lO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBfYXJyO1xuXHQgIH1cblxuXHQgIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICAgIHJldHVybiBhcnI7XG5cdCAgICB9IGVsc2UgaWYgKF9pc0l0ZXJhYmxlKE9iamVjdChhcnIpKSkge1xuXHQgICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoKTtcblxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg0MSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblxuLyoqKi8gfSxcbi8qIDQyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0dmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRJdGVyYXRvcnMuTm9kZUxpc3QgPSBJdGVyYXRvcnMuSFRNTENvbGxlY3Rpb24gPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8qKiovIH0sXG4vKiA0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc2V0VW5zY29wZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpXG5cdCAgLCBzdGVwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIEl0ZXJhdG9ycyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgdG9JT2JqZWN0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXG5cdC8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcblx0Ly8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcblx0Ly8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuXHQvLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4KShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuXHQgIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQgIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG5cdC8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxuXHR9LCBmdW5jdGlvbigpe1xuXHQgIHZhciBPICAgICA9IHRoaXMuX3Rcblx0ICAgICwga2luZCAgPSB0aGlzLl9rXG5cdCAgICAsIGluZGV4ID0gdGhpcy5faSsrO1xuXHQgIGlmKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKXtcblx0ICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG5cdCAgICByZXR1cm4gc3RlcCgxKTtcblx0ICB9XG5cdCAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBpbmRleCk7XG5cdCAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG5cdCAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xuXHR9LCAndmFsdWVzJyk7XG5cblx0Ly8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuXHRJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5cdHNldFVuc2NvcGUoJ2tleXMnKTtcblx0c2V0VW5zY29wZSgndmFsdWVzJyk7XG5cdHNldFVuc2NvcGUoJ2VudHJpZXMnKTtcblxuLyoqKi8gfSxcbi8qIDQ0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7IC8qIGVtcHR5ICovIH07XG5cbi8qKiovIH0sXG4vKiA0NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZX07XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXHJcblx0dmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KVxyXG5cdCAgLCBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcclxuXHQgIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGluZGV4ZWQgb2JqZWN0LCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3Ncblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IDAgaW4gT2JqZWN0KCd6JykgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCBnZXQgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuXHQgIGlmKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcblx0ICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTApLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cbi8qKiovIH0sXG4vKiA1MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGNsYXNzb2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTyA9IE9iamVjdChpdCk7XG5cdCAgcmV0dXJuIElURVJBVE9SIGluIE8gfHwgJ0BAaXRlcmF0b3InIGluIE8gfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg1MyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKTtcblxuLyoqKi8gfSxcbi8qIDU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7Ly8gVGhpcyBtZXRob2Qgb2Ygb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0IG5lZWRzIHRvIGJlXG5cdC8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xuXHR2YXIgZyA9XG5cdCAgdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG5cdCAgdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6XG5cdCAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpcztcblxuXHQvLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcblx0Ly8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLlxuXHR2YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmXG5cdCAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG5cdC8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci5cblx0dmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXG5cdC8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cblx0Zy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcblxuXHRpZiAoaGFkUnVudGltZSkge1xuXHQgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG5cdCAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBvbGRSdW50aW1lO1xuXHR9IGVsc2Uge1xuXHQgIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG5cdCAgdHJ5IHtcblx0ICAgIGRlbGV0ZSBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICB9IGNhdGNoKGUpIHtcblx0ICAgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXHQgIH1cblx0fVxuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogbW9kdWxlLmV4cG9ydHMsIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiA1NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCwgcHJvY2Vzcykgey8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG5cdCAqIGFkZGl0aW9uYWwgZ3JhbnQgb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpblxuXHQgKiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NylbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU3ltYm9sJGl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MilbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1Byb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KVtcImRlZmF1bHRcIl07XG5cblx0IShmdW5jdGlvbiAoZ2xvYmFsKSB7XG5cdCAgXCJ1c2Ugc3RyaWN0XCI7XG5cblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cblx0ICB2YXIgaXRlcmF0b3JTeW1ib2wgPSB0eXBlb2YgX1N5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIF9TeW1ib2wkaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG5cblx0ICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuXHQgIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICBpZiAocnVudGltZSkge1xuXHQgICAgaWYgKGluTW9kdWxlKSB7XG5cdCAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcblx0ICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cblx0ICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXHQgICAgfVxuXHQgICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuXHQgICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblxuXHQgIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuXHQgIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cblx0ICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuXHQgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcblx0ICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG5cdCAgICB2YXIgZ2VuZXJhdG9yID0gX09iamVjdCRjcmVhdGUoKG91dGVyRm4gfHwgR2VuZXJhdG9yKS5wcm90b3R5cGUpO1xuXG5cdCAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiB8fCBudWxsLCBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSkpO1xuXG5cdCAgICByZXR1cm4gZ2VuZXJhdG9yO1xuXHQgIH1cblx0ICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG5cdCAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG5cdCAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG5cdCAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG5cdCAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuXHQgIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcblx0ICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG5cdCAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcblx0ICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcblx0ICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG5cdCAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuXHQgIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcblx0ICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuXHQgIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cblx0ICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG5cdCAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuXHQgIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cblx0ICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcblx0ICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3Jcblx0ICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuXHQgIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cblx0ICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG5cdCAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZTtcblx0ICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cblx0ICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuXHQgIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG5cdCAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuXHQgICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuXHQgICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcblx0ICAgICAgfTtcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcblx0ICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3Rvcjtcblx0ICAgIHJldHVybiBjdG9yID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcblx0ICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cblx0ICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cblx0ICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA6IGZhbHNlO1xuXHQgIH07XG5cblx0ICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG5cdCAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG5cdCAgICBnZW5GdW4ucHJvdG90eXBlID0gX09iamVjdCRjcmVhdGUoR3ApO1xuXHQgICAgcmV0dXJuIGdlbkZ1bjtcblx0ICB9O1xuXG5cdCAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG5cdCAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3Rcblx0ICAvLyBgdmFsdWUgaW5zdGFuY2VvZiBBd2FpdEFyZ3VtZW50YCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcblx0ICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLiBTb21lIG1heSBjb25zaWRlciB0aGUgbmFtZSBvZiB0aGlzIG1ldGhvZCB0b29cblx0ICAvLyBjdXRlc3ksIGJ1dCB0aGV5IGFyZSBjdXJtdWRnZW9ucy5cblx0ICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24gKGFyZykge1xuXHQgICAgcmV0dXJuIG5ldyBBd2FpdEFyZ3VtZW50KGFyZyk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIEF3YWl0QXJndW1lbnQoYXJnKSB7XG5cdCAgICB0aGlzLmFyZyA9IGFyZztcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuXHQgICAgLy8gVGhpcyBpbnZva2UgZnVuY3Rpb24gaXMgd3JpdHRlbiBpbiBhIHN0eWxlIHRoYXQgYXNzdW1lcyBzb21lXG5cdCAgICAvLyBjYWxsaW5nIGZ1bmN0aW9uIChvciBQcm9taXNlKSB3aWxsIGhhbmRsZSBleGNlcHRpb25zLlxuXHQgICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBnZW5lcmF0b3JbbWV0aG9kXShhcmcpO1xuXHQgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG5cdCAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEF3YWl0QXJndW1lbnQgPyBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlLmFyZykudGhlbihpbnZva2VOZXh0LCBpbnZva2VUaHJvdykgOiBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uICh1bndyYXBwZWQpIHtcblx0ICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuXHQgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuXHQgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG5cdCAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcblx0ICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuXHQgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2Vcblx0ICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG5cdCAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG5cdCAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcblx0ICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcblx0ICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuXHQgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuXHQgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuXHQgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcblx0ICAgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZG9tYWluKSB7XG5cdCAgICAgIGludm9rZSA9IHByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcblx0ICAgIH1cblxuXHQgICAgdmFyIGludm9rZU5leHQgPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwibmV4dFwiKTtcblx0ICAgIHZhciBpbnZva2VUaHJvdyA9IGludm9rZS5iaW5kKGdlbmVyYXRvciwgXCJ0aHJvd1wiKTtcblx0ICAgIHZhciBpbnZva2VSZXR1cm4gPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwicmV0dXJuXCIpO1xuXHQgICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuXHQgICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuXHQgICAgICB2YXIgZW5xdWV1ZVJlc3VsdCA9XG5cdCAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcblx0ICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG5cdCAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcblx0ICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cblx0ICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG5cdCAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG5cdCAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcblx0ICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcblx0ICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcblx0ICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcblx0ICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcblx0ICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuXHQgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGludm9rZShtZXRob2QsIGFyZyk7XG5cdCAgICAgIH0pIDogbmV3IF9Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cdCAgICAgICAgcmVzb2x2ZShpbnZva2UobWV0aG9kLCBhcmcpKTtcblx0ICAgICAgfSk7XG5cblx0ICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZW5xdWV1ZVJlc3VsdCBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieVxuXHQgICAgICAvLyBsYXRlciBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG5cdCAgICAgIHByZXZpb3VzUHJvbWlzZSA9IGVucXVldWVSZXN1bHRbXCJjYXRjaFwiXShmdW5jdGlvbiAoaWdub3JlZCkge30pO1xuXG5cdCAgICAgIHJldHVybiBlbnF1ZXVlUmVzdWx0O1xuXHQgICAgfVxuXG5cdCAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuXHQgICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG5cdCAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuXHQgIH1cblxuXHQgIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG5cblx0ICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG5cdCAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG5cdCAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG5cdCAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uIChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuXHQgICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSk7XG5cblx0ICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cblx0ICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG5cdCAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuXHQgICAgfSk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuXHQgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuXHQgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgIHRocm93IGFyZztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuXHQgICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcblx0ICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuXHQgICAgICB9XG5cblx0ICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuXHQgICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuXHQgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIiB8fCBtZXRob2QgPT09IFwidGhyb3dcIiAmJiBkZWxlZ2F0ZS5pdGVyYXRvclttZXRob2RdID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgLy8gQSByZXR1cm4gb3IgdGhyb3cgKHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyB0aHJvd1xuXHQgICAgICAgICAgICAvLyBtZXRob2QpIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cblx0ICAgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cblx0ICAgICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuXHQgICAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG5cdCAgICAgICAgICAgIHZhciByZXR1cm5NZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXTtcblx0ICAgICAgICAgICAgaWYgKHJldHVybk1ldGhvZCkge1xuXHQgICAgICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChyZXR1cm5NZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBhcmcpO1xuXHQgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmV0dXJuIG1ldGhvZCB0aHJldyBhbiBleGNlcHRpb24sIGxldCB0aGF0XG5cdCAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gcHJldmFpbCBvdmVyIHRoZSBvcmlnaW5hbCByZXR1cm4gb3IgdGhyb3cuXG5cdCAgICAgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuXHQgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIG91dGVyIHJldHVybiwgbm93IHRoYXQgdGhlIGRlbGVnYXRlXG5cdCAgICAgICAgICAgICAgLy8gaXRlcmF0b3IgaGFzIGJlZW4gdGVybWluYXRlZC5cblx0ICAgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kXSwgZGVsZWdhdGUuaXRlcmF0b3IsIGFyZyk7XG5cblx0ICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIC8vIExpa2UgcmV0dXJuaW5nIGdlbmVyYXRvci50aHJvdyh1bmNhdWdodCksIGJ1dCB3aXRob3V0IHRoZVxuXHQgICAgICAgICAgICAvLyBvdmVyaGVhZCBvZiBhbiBleHRyYSBmdW5jdGlvbiBjYWxsLlxuXHQgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgIGFyZyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAvLyBEZWxlZ2F0ZSBnZW5lcmF0b3IgcmFuIGFuZCBoYW5kbGVkIGl0cyBvd24gZXhjZXB0aW9ucyBzb1xuXHQgICAgICAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBtZXRob2Qgd2FzLCB3ZSBjb250aW51ZSBhcyBpZiBpdCBpc1xuXHQgICAgICAgICAgLy8gXCJuZXh0XCIgd2l0aCBhbiB1bmRlZmluZWQgYXJnLlxuXHQgICAgICAgICAgbWV0aG9kID0gXCJuZXh0XCI7XG5cdCAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgIGlmIChpbmZvLmRvbmUpIHtcblx0ICAgICAgICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cdCAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cdCAgICAgICAgICAgIHJldHVybiBpbmZvO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IGFyZztcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcblx0ICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcblx0ICAgICAgICAgICAgdGhyb3cgYXJnO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpKSB7XG5cdCAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG5cdCAgICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG5cdCAgICAgICAgICAgIG1ldGhvZCA9IFwibmV4dFwiO1xuXHQgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGFyZyk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuXHQgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblx0ICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcblx0ICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cblx0ICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cblx0ICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lID8gR2VuU3RhdGVDb21wbGV0ZWQgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG5cdCAgICAgICAgICB2YXIgaW5mbyA9IHtcblx0ICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG5cdCAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuXHQgICAgICAgICAgfTtcblxuXHQgICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcblx0ICAgICAgICAgICAgaWYgKGNvbnRleHQuZGVsZWdhdGUgJiYgbWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG5cdCAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuXHQgICAgICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGluZm87XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuXHQgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuXHQgICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpIGNhbGwgYWJvdmUuXG5cdCAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICB9XG5cblx0ICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuXHQgIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cblx0ICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG5cdCAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHRoaXM7XG5cdCAgfTtcblxuXHQgIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG5cdCAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG5cdCAgICBpZiAoMSBpbiBsb2NzKSB7XG5cdCAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKDIgaW4gbG9jcykge1xuXHQgICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcblx0ICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuXHQgICAgfVxuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuXHQgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG5cdCAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG5cdCAgICBkZWxldGUgcmVjb3JkLmFyZztcblx0ICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuXHQgICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG5cdCAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG5cdCAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuXHQgICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuXHQgICAgdGhpcy5yZXNldCh0cnVlKTtcblx0ICB9XG5cblx0ICBydW50aW1lLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG5cdCAgICB2YXIga2V5cyA9IFtdO1xuXHQgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuXHQgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgIH1cblx0ICAgIGtleXMucmV2ZXJzZSgpO1xuXG5cdCAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuXHQgICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cblx0ICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuXHQgICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcblx0ICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuXHQgICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcblx0ICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG5cdCAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG5cdCAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuXHQgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAgIH07XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuXHQgICAgaWYgKGl0ZXJhYmxlKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcblx0ICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0ICAgICAgICByZXR1cm4gaXRlcmFibGU7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcblx0ICAgICAgICB2YXIgaSA9IC0xLFxuXHQgICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcblx0ICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuXHQgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcblx0ICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfTtcblxuXHQgICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cblx0ICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcblx0ICB9XG5cdCAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cblx0ICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuXHQgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuXHQgIH1cblxuXHQgIENvbnRleHQucHJvdG90eXBlID0ge1xuXHQgICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cblx0ICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldChza2lwVGVtcFJlc2V0KSB7XG5cdCAgICAgIHRoaXMucHJldiA9IDA7XG5cdCAgICAgIHRoaXMubmV4dCA9IDA7XG5cdCAgICAgIHRoaXMuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG5cdCAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuXHQgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuXHQgICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcblx0ICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiYgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiYgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuXHQgICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcblx0ICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuXHQgICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuXHQgICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG5cdCAgICB9LFxuXG5cdCAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZXhjZXB0aW9uKSB7XG5cdCAgICAgIGlmICh0aGlzLmRvbmUpIHtcblx0ICAgICAgICB0aHJvdyBleGNlcHRpb247XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG5cdCAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuXHQgICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG5cdCAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXHQgICAgICAgIHJldHVybiAhIWNhdWdodDtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuXHQgICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcblx0ICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuXHQgICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cblx0ICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0ICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuXHQgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG5cdCAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBhYnJ1cHQ6IGZ1bmN0aW9uIGFicnVwdCh0eXBlLCBhcmcpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJiBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChmaW5hbGx5RW50cnkgJiYgKHR5cGUgPT09IFwiYnJlYWtcIiB8fCB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcblx0ICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG5cdCAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuXHQgICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG5cdCAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cblx0ICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuY29tcGxldGUocmVjb3JkKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgfSxcblxuXHQgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlY29yZCwgYWZ0ZXJMb2MpIHtcblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHwgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICB0aGlzLnJ2YWwgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2goZmluYWxseUxvYykge1xuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcblx0ICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBcImNhdGNoXCI6IGZ1bmN0aW9uIF9jYXRjaCh0cnlMb2MpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcblx0ICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIHRocm93bjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cblx0ICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG5cdCAgICB9LFxuXG5cdCAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiBkZWxlZ2F0ZVlpZWxkKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG5cdCAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG5cdCAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcblx0ICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG5cdCAgICAgIH07XG5cblx0ICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoXG5cdC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcblx0Ly8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG5cdC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG5cdHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDogdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdW5kZWZpbmVkKTtcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSksIF9fd2VicGFja19yZXF1aXJlX18oNTYpKSlcblxuLyoqKi8gfSxcbi8qIDU2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblxuXHR2YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cdHZhciBxdWV1ZSA9IFtdO1xuXHR2YXIgZHJhaW5pbmcgPSBmYWxzZTtcblx0dmFyIGN1cnJlbnRRdWV1ZTtcblx0dmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuXHRmdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG5cdCAgICBkcmFpbmluZyA9IGZhbHNlO1xuXHQgICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICB9XG5cdCAgICBpZiAocXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgZHJhaW5RdWV1ZSgpO1xuXHQgICAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcblx0ICAgIGlmIChkcmFpbmluZykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuXHQgICAgZHJhaW5pbmcgPSB0cnVlO1xuXG5cdCAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgd2hpbGUobGVuKSB7XG5cdCAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG5cdCAgICAgICAgcXVldWUgPSBbXTtcblx0ICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG5cdCAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcblx0ICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgfVxuXHQgICAgY3VycmVudFF1ZXVlID0gbnVsbDtcblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdH1cblxuXHRwcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuXHQgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuXHQgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHQgICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcblx0ICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG5cdCAgICAgICAgc2V0VGltZW91dChkcmFpblF1ZXVlLCAwKTtcblx0ICAgIH1cblx0fTtcblxuXHQvLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5cdGZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQgICAgdGhpcy5mdW4gPSBmdW47XG5cdCAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG5cdH07XG5cdHByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5cdHByb2Nlc3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJndiA9IFtdO1xuXHRwcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcblx0cHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5cdGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5cdHByb2Nlc3Mub24gPSBub29wO1xuXHRwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5vbmNlID0gbm9vcDtcblx0cHJvY2Vzcy5vZmYgPSBub29wO1xuXHRwcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuXHRwcm9jZXNzLmVtaXQgPSBub29wO1xuXG5cdHByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cblx0cHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcblx0cHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cdHByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuLyoqKi8gfSxcbi8qIDU3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTgpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuU3ltYm9sO1xuXG4vKioqLyB9LFxuLyogNTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0Ly8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxuXHR2YXIgJCAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgZ2xvYmFsICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgaGFzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgU1VQUE9SVF9ERVNDICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuXHQgICwgJGRlZiAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgJHJlZGVmICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKVxuXHQgICwgJGZhaWxzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KVxuXHQgICwgc2hhcmVkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKVxuXHQgICwgc2V0VGFnICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KVxuXHQgICwgdWlkICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuXHQgICwgd2tzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKVxuXHQgICwga2V5T2YgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKVxuXHQgICwgJG5hbWVzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKVxuXHQgICwgZW51bUtleXMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgaXNPYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgYW5PYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9JT2JqZWN0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgY3JlYXRlRGVzYyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KVxuXHQgICwgZ2V0RGVzYyAgICAgICAgPSAkLmdldERlc2Ncblx0ICAsIHNldERlc2MgICAgICAgID0gJC5zZXREZXNjXG5cdCAgLCBfY3JlYXRlICAgICAgICA9ICQuY3JlYXRlXG5cdCAgLCBnZXROYW1lcyAgICAgICA9ICRuYW1lcy5nZXRcblx0ICAsICRTeW1ib2wgICAgICAgID0gZ2xvYmFsLlN5bWJvbFxuXHQgICwgc2V0dGVyICAgICAgICAgPSBmYWxzZVxuXHQgICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuXHQgICwgaXNFbnVtICAgICAgICAgPSAkLmlzRW51bVxuXHQgICwgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpXG5cdCAgLCBBbGxTeW1ib2xzICAgICA9IHNoYXJlZCgnc3ltYm9scycpXG5cdCAgLCB1c2VOYXRpdmUgICAgICA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbidcblx0ICAsIE9iamVjdFByb3RvICAgID0gT2JqZWN0LnByb3RvdHlwZTtcblxuXHQvLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcblx0dmFyIHNldFN5bWJvbERlc2MgPSBTVVBQT1JUX0RFU0MgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIF9jcmVhdGUoc2V0RGVzYyh7fSwgJ2EnLCB7XG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBzZXREZXNjKHRoaXMsICdhJywge3ZhbHVlOiA3fSkuYTsgfVxuXHQgIH0pKS5hICE9IDc7XG5cdH0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG5cdCAgdmFyIHByb3RvRGVzYyA9IGdldERlc2MoT2JqZWN0UHJvdG8sIGtleSk7XG5cdCAgaWYocHJvdG9EZXNjKWRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuXHQgIHNldERlc2MoaXQsIGtleSwgRCk7XG5cdCAgaWYocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bylzZXREZXNjKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG5cdH0gOiBzZXREZXNjO1xuXG5cdHZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcblx0ICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sLnByb3RvdHlwZSk7XG5cdCAgc3ltLl9rID0gdGFnO1xuXHQgIFNVUFBPUlRfREVTQyAmJiBzZXR0ZXIgJiYgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuXHQgICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHQgIHJldHVybiBzeW07XG5cdH07XG5cblx0dmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpe1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkpe1xuXHQgICAgaWYoIUQuZW51bWVyYWJsZSl7XG5cdCAgICAgIGlmKCFoYXMoaXQsIEhJRERFTikpc2V0RGVzYyhpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG5cdCAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZihoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKWl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuXHQgICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcblx0ICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG5cdCAgfSByZXR1cm4gc2V0RGVzYyhpdCwga2V5LCBEKTtcblx0fTtcblx0dmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCl7XG5cdCAgYW5PYmplY3QoaXQpO1xuXHQgIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSlcblx0ICAgICwgaSAgICA9IDBcblx0ICAgICwgbCA9IGtleXMubGVuZ3RoXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsID4gaSkkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cdHZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKXtcblx0ICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG5cdH07XG5cdHZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpe1xuXHQgIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5KTtcblx0ICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldXG5cdCAgICA/IEUgOiB0cnVlO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KXtcblx0ICB2YXIgRCA9IGdldERlc2MoaXQgPSB0b0lPYmplY3QoaXQpLCBrZXkpO1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuXHQgIHJldHVybiBEO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICB2YXIgbmFtZXMgID0gZ2V0TmFtZXModG9JT2JqZWN0KGl0KSlcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZighaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4pcmVzdWx0LnB1c2goa2V5KTtcblx0ICByZXR1cm4gcmVzdWx0O1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdldE5hbWVzKHRvSU9iamVjdChpdCkpXG5cdCAgICAsIHJlc3VsdCA9IFtdXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpaWYoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pKXJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuXHQgICAgaWYodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcblx0ICAgIHJldHVybiB3cmFwKHVpZChhcmd1bWVudHNbMF0pKTtcblx0ICB9O1xuXHQgICRyZWRlZigkU3ltYm9sLnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcblx0ICAgIHJldHVybiB0aGlzLl9rO1xuXHQgIH0pO1xuXG5cdCAgJC5jcmVhdGUgICAgID0gJGNyZWF0ZTtcblx0ICAkLmlzRW51bSAgICAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG5cdCAgJC5nZXREZXNjICAgID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblx0ICAkLnNldERlc2MgICAgPSAkZGVmaW5lUHJvcGVydHk7XG5cdCAgJC5zZXREZXNjcyAgID0gJGRlZmluZVByb3BlcnRpZXM7XG5cdCAgJC5nZXROYW1lcyAgID0gJG5hbWVzLmdldCA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXHQgICQuZ2V0U3ltYm9scyA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblx0ICBpZihTVVBQT1JUX0RFU0MgJiYgIV9fd2VicGFja19yZXF1aXJlX18oOSkpe1xuXHQgICAgJHJlZGVmKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuXHQgIH1cblx0fVxuXG5cdC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG5cdGlmKCF1c2VOYXRpdmUgfHwgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFskU3ltYm9sKCldKSAhPSAnW251bGxdJztcblx0fSkpJHJlZGVmKCRTeW1ib2wucHJvdG90eXBlLCAndG9KU09OJywgZnVuY3Rpb24gdG9KU09OKCl7XG5cdCAgaWYodXNlTmF0aXZlICYmIGlzT2JqZWN0KHRoaXMpKXJldHVybiB0aGlzO1xuXHR9KTtcblxuXHR2YXIgc3ltYm9sU3RhdGljcyA9IHtcblx0ICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcblx0ICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcblx0ICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcblx0ICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG5cdCAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcblx0ICB9LFxuXHQgIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuXHQgIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG5cdCAgICByZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG5cdCAgfSxcblx0ICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG5cdCAgdXNlU2ltcGxlOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSBmYWxzZTsgfVxuXHR9O1xuXHQvLyAxOS40LjIuMiBTeW1ib2wuaGFzSW5zdGFuY2Vcblx0Ly8gMTkuNC4yLjMgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZVxuXHQvLyAxOS40LjIuNCBTeW1ib2wuaXRlcmF0b3Jcblx0Ly8gMTkuNC4yLjYgU3ltYm9sLm1hdGNoXG5cdC8vIDE5LjQuMi44IFN5bWJvbC5yZXBsYWNlXG5cdC8vIDE5LjQuMi45IFN5bWJvbC5zZWFyY2hcblx0Ly8gMTkuNC4yLjEwIFN5bWJvbC5zcGVjaWVzXG5cdC8vIDE5LjQuMi4xMSBTeW1ib2wuc3BsaXRcblx0Ly8gMTkuNC4yLjEyIFN5bWJvbC50b1ByaW1pdGl2ZVxuXHQvLyAxOS40LjIuMTMgU3ltYm9sLnRvU3RyaW5nVGFnXG5cdC8vIDE5LjQuMi4xNCBTeW1ib2wudW5zY29wYWJsZXNcblx0JC5lYWNoLmNhbGwoKFxuXHQgICAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCwnICtcblx0ICAgICdzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuXHQgICkuc3BsaXQoJywnKSwgZnVuY3Rpb24oaXQpe1xuXHQgICAgdmFyIHN5bSA9IHdrcyhpdCk7XG5cdCAgICBzeW1ib2xTdGF0aWNzW2l0XSA9IHVzZU5hdGl2ZSA/IHN5bSA6IHdyYXAoc3ltKTtcblx0ICB9XG5cdCk7XG5cblx0c2V0dGVyID0gdHJ1ZTtcblxuXHQkZGVmKCRkZWYuRyArICRkZWYuVywge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5cdCRkZWYoJGRlZi5TLCAnU3ltYm9sJywgc3ltYm9sU3RhdGljcyk7XG5cblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhdXNlTmF0aXZlLCAnT2JqZWN0Jywge1xuXHQgIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcblx0ICBjcmVhdGU6ICRjcmVhdGUsXG5cdCAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG5cdCAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcblx0ICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuXHQgIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcblx0ICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdCAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcblx0ICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcblx0ICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdH0pO1xuXG5cdC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcblx0Ly8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuXHRzZXRUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcblx0Ly8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuXG4vKioqLyB9LFxuLyogNjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBlbCl7XG5cdCAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG5cdCAgICAsIGtleXMgICA9ICQuZ2V0S2V5cyhPKVxuXHQgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcblx0dmFyIHRvU3RyaW5nICA9IHt9LnRvU3RyaW5nXG5cdCAgLCB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgZ2V0TmFtZXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZ2V0TmFtZXM7XG5cblx0dmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuXHQgID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG5cdHZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIGdldE5hbWVzKGl0KTtcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG5cdCAgfVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzLmdldCA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuXHQgIGlmKHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nKXJldHVybiBnZXRXaW5kb3dOYW1lcyhpdCk7XG5cdCAgcmV0dXJuIGdldE5hbWVzKHRvSU9iamVjdChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBrZXlzICAgICAgID0gJC5nZXRLZXlzKGl0KVxuXHQgICAgLCBnZXRTeW1ib2xzID0gJC5nZXRTeW1ib2xzO1xuXHQgIGlmKGdldFN5bWJvbHMpe1xuXHQgICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KVxuXHQgICAgICAsIGlzRW51bSAgPSAkLmlzRW51bVxuXHQgICAgICAsIGkgICAgICAgPSAwXG5cdCAgICAgICwga2V5O1xuXHQgICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKWtleXMucHVzaChrZXkpO1xuXHQgIH1cblx0ICByZXR1cm4ga2V5cztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNjQpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA2NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCl7XG5cdCAgcmV0dXJuICQuY3JlYXRlKFAsIEQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg2NiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNjgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlByb21pc2U7XG5cbi8qKiovIH0sXG4vKiA2NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XG5cbi8qKiovIH0sXG4vKiA2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBMSUJSQVJZICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgZ2xvYmFsICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBjdHggICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGNsYXNzb2YgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgJGRlZiAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCBpc09iamVjdCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgYUZ1bmN0aW9uICA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpXG5cdCAgLCBzdHJpY3ROZXcgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSlcblx0ICAsIGZvck9mICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc2V0UHJvdG8gICA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpLnNldFxuXHQgICwgc2FtZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpXG5cdCAgLCBzcGVjaWVzICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIFNQRUNJRVMgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnc3BlY2llcycpXG5cdCAgLCBSRUNPUkQgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMikoJ3JlY29yZCcpXG5cdCAgLCBhc2FwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NClcblx0ICAsIFBST01JU0UgICAgPSAnUHJvbWlzZSdcblx0ICAsIHByb2Nlc3MgICAgPSBnbG9iYWwucHJvY2Vzc1xuXHQgICwgaXNOb2RlICAgICA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXG5cdCAgLCBQICAgICAgICAgID0gZ2xvYmFsW1BST01JU0VdXG5cdCAgLCBXcmFwcGVyO1xuXG5cdHZhciB0ZXN0UmVzb2x2ZSA9IGZ1bmN0aW9uKHN1Yil7XG5cdCAgdmFyIHRlc3QgPSBuZXcgUChmdW5jdGlvbigpe30pO1xuXHQgIGlmKHN1Yil0ZXN0LmNvbnN0cnVjdG9yID0gT2JqZWN0O1xuXHQgIHJldHVybiBQLnJlc29sdmUodGVzdCkgPT09IHRlc3Q7XG5cdH07XG5cblx0dmFyIHVzZU5hdGl2ZSA9IGZ1bmN0aW9uKCl7XG5cdCAgdmFyIHdvcmtzID0gZmFsc2U7XG5cdCAgZnVuY3Rpb24gUDIoeCl7XG5cdCAgICB2YXIgc2VsZiA9IG5ldyBQKHgpO1xuXHQgICAgc2V0UHJvdG8oc2VsZiwgUDIucHJvdG90eXBlKTtcblx0ICAgIHJldHVybiBzZWxmO1xuXHQgIH1cblx0ICB0cnkge1xuXHQgICAgd29ya3MgPSBQICYmIFAucmVzb2x2ZSAmJiB0ZXN0UmVzb2x2ZSgpO1xuXHQgICAgc2V0UHJvdG8oUDIsIFApO1xuXHQgICAgUDIucHJvdG90eXBlID0gJC5jcmVhdGUoUC5wcm90b3R5cGUsIHtjb25zdHJ1Y3Rvcjoge3ZhbHVlOiBQMn19KTtcblx0ICAgIC8vIGFjdHVhbCBGaXJlZm94IGhhcyBicm9rZW4gc3ViY2xhc3Mgc3VwcG9ydCwgdGVzdCB0aGF0XG5cdCAgICBpZighKFAyLnJlc29sdmUoNSkudGhlbihmdW5jdGlvbigpe30pIGluc3RhbmNlb2YgUDIpKXtcblx0ICAgICAgd29ya3MgPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIC8vIGFjdHVhbCBWOCBidWcsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTYyXG5cdCAgICBpZih3b3JrcyAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSl7XG5cdCAgICAgIHZhciB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSBmYWxzZTtcblx0ICAgICAgUC5yZXNvbHZlKCQuc2V0RGVzYyh7fSwgJ3RoZW4nLCB7XG5cdCAgICAgICAgZ2V0OiBmdW5jdGlvbigpeyB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSB0cnVlOyB9XG5cdCAgICAgIH0pKTtcblx0ICAgICAgd29ya3MgPSB0aGVuYWJsZVRoZW5Hb3R0ZW47XG5cdCAgICB9XG5cdCAgfSBjYXRjaChlKXsgd29ya3MgPSBmYWxzZTsgfVxuXHQgIHJldHVybiB3b3Jrcztcblx0fSgpO1xuXG5cdC8vIGhlbHBlcnNcblx0dmFyIGlzUHJvbWlzZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmICh1c2VOYXRpdmUgPyBjbGFzc29mKGl0KSA9PSAnUHJvbWlzZScgOiBSRUNPUkQgaW4gaXQpO1xuXHR9O1xuXHR2YXIgc2FtZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24oYSwgYil7XG5cdCAgLy8gbGlicmFyeSB3cmFwcGVyIHNwZWNpYWwgY2FzZVxuXHQgIGlmKExJQlJBUlkgJiYgYSA9PT0gUCAmJiBiID09PSBXcmFwcGVyKXJldHVybiB0cnVlO1xuXHQgIHJldHVybiBzYW1lKGEsIGIpO1xuXHR9O1xuXHR2YXIgZ2V0Q29uc3RydWN0b3IgPSBmdW5jdGlvbihDKXtcblx0ICB2YXIgUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdO1xuXHQgIHJldHVybiBTICE9IHVuZGVmaW5lZCA/IFMgOiBDO1xuXHR9O1xuXHR2YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgdGhlbjtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG5cdH07XG5cdHZhciBub3RpZnkgPSBmdW5jdGlvbihyZWNvcmQsIGlzUmVqZWN0KXtcblx0ICBpZihyZWNvcmQubilyZXR1cm47XG5cdCAgcmVjb3JkLm4gPSB0cnVlO1xuXHQgIHZhciBjaGFpbiA9IHJlY29yZC5jO1xuXHQgIGFzYXAoZnVuY3Rpb24oKXtcblx0ICAgIHZhciB2YWx1ZSA9IHJlY29yZC52XG5cdCAgICAgICwgb2sgICAgPSByZWNvcmQucyA9PSAxXG5cdCAgICAgICwgaSAgICAgPSAwO1xuXHQgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKHJlYWN0KXtcblx0ICAgICAgdmFyIGNiID0gb2sgPyByZWFjdC5vayA6IHJlYWN0LmZhaWxcblx0ICAgICAgICAsIHJldCwgdGhlbjtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZihjYil7XG5cdCAgICAgICAgICBpZighb2spcmVjb3JkLmggPSB0cnVlO1xuXHQgICAgICAgICAgcmV0ID0gY2IgPT09IHRydWUgPyB2YWx1ZSA6IGNiKHZhbHVlKTtcblx0ICAgICAgICAgIGlmKHJldCA9PT0gcmVhY3QuUCl7XG5cdCAgICAgICAgICAgIHJlYWN0LnJlaihUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYodGhlbiA9IGlzVGhlbmFibGUocmV0KSl7XG5cdCAgICAgICAgICAgIHRoZW4uY2FsbChyZXQsIHJlYWN0LnJlcywgcmVhY3QucmVqKTtcblx0ICAgICAgICAgIH0gZWxzZSByZWFjdC5yZXMocmV0KTtcblx0ICAgICAgICB9IGVsc2UgcmVhY3QucmVqKHZhbHVlKTtcblx0ICAgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAgIHJlYWN0LnJlaihlcnIpO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgICAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSlydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG5cdCAgICBjaGFpbi5sZW5ndGggPSAwO1xuXHQgICAgcmVjb3JkLm4gPSBmYWxzZTtcblx0ICAgIGlmKGlzUmVqZWN0KXNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWNvcmQucFxuXHQgICAgICAgICwgaGFuZGxlciwgY29uc29sZTtcblx0ICAgICAgaWYoaXNVbmhhbmRsZWQocHJvbWlzZSkpe1xuXHQgICAgICAgIGlmKGlzTm9kZSl7XG5cdCAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcblx0ICAgICAgICB9IGVsc2UgaWYoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbil7XG5cdCAgICAgICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlfSk7XG5cdCAgICAgICAgfSBlbHNlIGlmKChjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGUpICYmIGNvbnNvbGUuZXJyb3Ipe1xuXHQgICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSByZWNvcmQuYSA9IHVuZGVmaW5lZDtcblx0ICAgIH0sIDEpO1xuXHQgIH0pO1xuXHR9O1xuXHR2YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbihwcm9taXNlKXtcblx0ICB2YXIgcmVjb3JkID0gcHJvbWlzZVtSRUNPUkRdXG5cdCAgICAsIGNoYWluICA9IHJlY29yZC5hIHx8IHJlY29yZC5jXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwgcmVhY3Q7XG5cdCAgaWYocmVjb3JkLmgpcmV0dXJuIGZhbHNlO1xuXHQgIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpe1xuXHQgICAgcmVhY3QgPSBjaGFpbltpKytdO1xuXHQgICAgaWYocmVhY3QuZmFpbCB8fCAhaXNVbmhhbmRsZWQocmVhY3QuUCkpcmV0dXJuIGZhbHNlO1xuXHQgIH0gcmV0dXJuIHRydWU7XG5cdH07XG5cdHZhciAkcmVqZWN0ID0gZnVuY3Rpb24odmFsdWUpe1xuXHQgIHZhciByZWNvcmQgPSB0aGlzO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICByZWNvcmQudiA9IHZhbHVlO1xuXHQgIHJlY29yZC5zID0gMjtcblx0ICByZWNvcmQuYSA9IHJlY29yZC5jLnNsaWNlKCk7XG5cdCAgbm90aWZ5KHJlY29yZCwgdHJ1ZSk7XG5cdH07XG5cdHZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICB2YXIgcmVjb3JkID0gdGhpc1xuXHQgICAgLCB0aGVuO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICB0cnkge1xuXHQgICAgaWYodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKXtcblx0ICAgICAgYXNhcChmdW5jdGlvbigpe1xuXHQgICAgICAgIHZhciB3cmFwcGVyID0ge3I6IHJlY29yZCwgZDogZmFsc2V9OyAvLyB3cmFwXG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgY3R4KCRyZXNvbHZlLCB3cmFwcGVyLCAxKSwgY3R4KCRyZWplY3QsIHdyYXBwZXIsIDEpKTtcblx0ICAgICAgICB9IGNhdGNoKGUpe1xuXHQgICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZWNvcmQudiA9IHZhbHVlO1xuXHQgICAgICByZWNvcmQucyA9IDE7XG5cdCAgICAgIG5vdGlmeShyZWNvcmQsIGZhbHNlKTtcblx0ICAgIH1cblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgJHJlamVjdC5jYWxsKHtyOiByZWNvcmQsIGQ6IGZhbHNlfSwgZSk7IC8vIHdyYXBcblx0ICB9XG5cdH07XG5cblx0Ly8gY29uc3RydWN0b3IgcG9seWZpbGxcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcblx0ICBQID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcil7XG5cdCAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuXHQgICAgdmFyIHJlY29yZCA9IHtcblx0ICAgICAgcDogc3RyaWN0TmV3KHRoaXMsIFAsIFBST01JU0UpLCAgICAgICAgIC8vIDwtIHByb21pc2Vcblx0ICAgICAgYzogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuXHQgICAgICBhOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcblx0ICAgICAgczogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG5cdCAgICAgIGQ6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBkb25lXG5cdCAgICAgIHY6IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuXHQgICAgICBoOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gaGFuZGxlZCByZWplY3Rpb25cblx0ICAgICAgbjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIG5vdGlmeVxuXHQgICAgfTtcblx0ICAgIHRoaXNbUkVDT1JEXSA9IHJlY29yZDtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgcmVjb3JkLCAxKSwgY3R4KCRyZWplY3QsIHJlY29yZCwgMSkpO1xuXHQgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAkcmVqZWN0LmNhbGwocmVjb3JkLCBlcnIpO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoUC5wcm90b3R5cGUsIHtcblx0ICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG5cdCAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKXtcblx0ICAgICAgdmFyIFMgPSBhbk9iamVjdChhbk9iamVjdCh0aGlzKS5jb25zdHJ1Y3RvcilbU1BFQ0lFU107XG5cdCAgICAgIHZhciByZWFjdCA9IHtcblx0ICAgICAgICBvazogICB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZSxcblx0ICAgICAgICBmYWlsOiB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICA/IG9uUmVqZWN0ZWQgIDogZmFsc2Vcblx0ICAgICAgfTtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWFjdC5QID0gbmV3IChTICE9IHVuZGVmaW5lZCA/IFMgOiBQKShmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgICAgcmVhY3QucmVzID0gcmVzO1xuXHQgICAgICAgIHJlYWN0LnJlaiA9IHJlajtcblx0ICAgICAgfSk7XG5cdCAgICAgIGFGdW5jdGlvbihyZWFjdC5yZXMpO1xuXHQgICAgICBhRnVuY3Rpb24ocmVhY3QucmVqKTtcblx0ICAgICAgdmFyIHJlY29yZCA9IHRoaXNbUkVDT1JEXTtcblx0ICAgICAgcmVjb3JkLmMucHVzaChyZWFjdCk7XG5cdCAgICAgIGlmKHJlY29yZC5hKXJlY29yZC5hLnB1c2gocmVhY3QpO1xuXHQgICAgICBpZihyZWNvcmQucylub3RpZnkocmVjb3JkLCBmYWxzZSk7XG5cdCAgICAgIHJldHVybiBwcm9taXNlO1xuXHQgICAgfSxcblx0ICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG5cdCAgICAnY2F0Y2gnOiBmdW5jdGlvbihvblJlamVjdGVkKXtcblx0ICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHR9XG5cblx0Ly8gZXhwb3J0XG5cdCRkZWYoJGRlZi5HICsgJGRlZi5XICsgJGRlZi5GICogIXVzZU5hdGl2ZSwge1Byb21pc2U6IFB9KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyNSkoUCwgUFJPTUlTRSk7XG5cdHNwZWNpZXMoUCk7XG5cdHNwZWNpZXMoV3JhcHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpW1BST01JU0VdKTtcblxuXHQvLyBzdGF0aWNzXG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIXVzZU5hdGl2ZSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG5cdCAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocil7XG5cdCAgICByZXR1cm4gbmV3IHRoaXMoZnVuY3Rpb24ocmVzLCByZWopeyByZWoocik7IH0pO1xuXHQgIH1cblx0fSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogKCF1c2VOYXRpdmUgfHwgdGVzdFJlc29sdmUodHJ1ZSkpLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG5cdCAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KXtcblx0ICAgIHJldHVybiBpc1Byb21pc2UoeCkgJiYgc2FtZUNvbnN0cnVjdG9yKHguY29uc3RydWN0b3IsIHRoaXMpXG5cdCAgICAgID8geCA6IG5ldyB0aGlzKGZ1bmN0aW9uKHJlcyl7IHJlcyh4KTsgfSk7XG5cdCAgfVxuXHR9KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhKHVzZU5hdGl2ZSAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KShmdW5jdGlvbihpdGVyKXtcblx0ICBQLmFsbChpdGVyKVsnY2F0Y2gnXShmdW5jdGlvbigpe30pO1xuXHR9KSksIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcblx0ICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSl7XG5cdCAgICB2YXIgQyAgICAgID0gZ2V0Q29uc3RydWN0b3IodGhpcylcblx0ICAgICAgLCB2YWx1ZXMgPSBbXTtcblx0ICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgdmFsdWVzLnB1c2gsIHZhbHVlcyk7XG5cdCAgICAgIHZhciByZW1haW5pbmcgPSB2YWx1ZXMubGVuZ3RoXG5cdCAgICAgICAgLCByZXN1bHRzICAgPSBBcnJheShyZW1haW5pbmcpO1xuXHQgICAgICBpZihyZW1haW5pbmcpJC5lYWNoLmNhbGwodmFsdWVzLCBmdW5jdGlvbihwcm9taXNlLCBpbmRleCl7XG5cdCAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24odmFsdWUpe1xuXHQgICAgICAgICAgcmVzdWx0c1tpbmRleF0gPSB2YWx1ZTtcblx0ICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlcyhyZXN1bHRzKTtcblx0ICAgICAgICB9LCByZWopO1xuXHQgICAgICB9KTtcblx0ICAgICAgZWxzZSByZXMocmVzdWx0cyk7XG5cdCAgICB9KTtcblx0ICB9LFxuXHQgIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcblx0ICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKXtcblx0ICAgIHZhciBDID0gZ2V0Q29uc3RydWN0b3IodGhpcyk7XG5cdCAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uKHByb21pc2Upe1xuXHQgICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKHJlcywgcmVqKTtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogNjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIENvbnN0cnVjdG9yLCBuYW1lKXtcblx0ICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXRocm93IFR5cGVFcnJvcihuYW1lICsgXCI6IHVzZSB0aGUgJ25ldycgb3BlcmF0b3IhXCIpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgYW5PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oaXRlcmFibGUpXG5cdCAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgaWYodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuXHQgIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuXHQgIGlmKGlzQXJyYXlJdGVyKGl0ZXJGbikpZm9yKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgIGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcblx0ICB9IGVsc2UgZm9yKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7ICl7XG5cdCAgICBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cdHZhciBnZXREZXNjICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldERlc2Ncblx0ICAsIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdHZhciBjaGVjayA9IGZ1bmN0aW9uKE8sIHByb3RvKXtcblx0ICBhbk9iamVjdChPKTtcblx0ICBpZighaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKXRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcblx0fTtcblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXHQgICAgZnVuY3Rpb24odGVzdCwgYnVnZ3ksIHNldCl7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNykoRnVuY3Rpb24uY2FsbCwgZ2V0RGVzYyhPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcblx0ICAgICAgICBzZXQodGVzdCwgW10pO1xuXHQgICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuXHQgICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cblx0ICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKXtcblx0ICAgICAgICBjaGVjayhPLCBwcm90byk7XG5cdCAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcblx0ICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG5cdCAgICAgICAgcmV0dXJuIE87XG5cdCAgICAgIH07XG5cdCAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuXHQgIGNoZWNrOiBjaGVja1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmlzIHx8IGZ1bmN0aW9uIGlzKHgsIHkpe1xuXHQgIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgU1BFQ0lFUyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdzcGVjaWVzJyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQyl7XG5cdCAgaWYoX193ZWJwYWNrX3JlcXVpcmVfXygxNykgJiYgIShTUEVDSUVTIGluIEMpKSQuc2V0RGVzYyhDLCBTUEVDSUVTLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9XG5cdCAgfSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXHJcblx0ICAsIG1hY3JvdGFzayA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpLnNldFxyXG5cdCAgLCBPYnNlcnZlciAgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlclxyXG5cdCAgLCBwcm9jZXNzICAgPSBnbG9iYWwucHJvY2Vzc1xyXG5cdCAgLCBpc05vZGUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2VzcydcclxuXHQgICwgaGVhZCwgbGFzdCwgbm90aWZ5O1xyXG5cclxuXHR2YXIgZmx1c2ggPSBmdW5jdGlvbigpe1xyXG5cdCAgdmFyIHBhcmVudCwgZG9tYWluO1xyXG5cdCAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpe1xyXG5cdCAgICBwcm9jZXNzLmRvbWFpbiA9IG51bGw7XHJcblx0ICAgIHBhcmVudC5leGl0KCk7XHJcblx0ICB9XHJcblx0ICB3aGlsZShoZWFkKXtcclxuXHQgICAgZG9tYWluID0gaGVhZC5kb21haW47XHJcblx0ICAgIGlmKGRvbWFpbilkb21haW4uZW50ZXIoKTtcclxuXHQgICAgaGVhZC5mbi5jYWxsKCk7IC8vIDwtIGN1cnJlbnRseSB3ZSB1c2UgaXQgb25seSBmb3IgUHJvbWlzZSAtIHRyeSAvIGNhdGNoIG5vdCByZXF1aXJlZFxyXG5cdCAgICBpZihkb21haW4pZG9tYWluLmV4aXQoKTtcclxuXHQgICAgaGVhZCA9IGhlYWQubmV4dDtcclxuXHQgIH0gbGFzdCA9IHVuZGVmaW5lZDtcclxuXHQgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcclxuXHR9XHJcblxyXG5cdC8vIE5vZGUuanNcclxuXHRpZihpc05vZGUpe1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XHJcblx0ICB9O1xyXG5cdC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxyXG5cdH0gZWxzZSBpZihPYnNlcnZlcil7XHJcblx0ICB2YXIgdG9nZ2xlID0gMVxyXG5cdCAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcclxuXHQgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gLXRvZ2dsZTtcclxuXHQgIH07XHJcblx0Ly8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcclxuXHQvLyAtIHNldEltbWVkaWF0ZVxyXG5cdC8vIC0gTWVzc2FnZUNoYW5uZWxcclxuXHQvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXHJcblx0Ly8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcclxuXHQvLyAtIHNldFRpbWVvdXRcclxuXHR9IGVsc2Uge1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxyXG5cdCAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcclxuXHQgIH07XHJcblx0fVxyXG5cclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGFzYXAoZm4pe1xyXG5cdCAgdmFyIHRhc2sgPSB7Zm46IGZuLCBuZXh0OiB1bmRlZmluZWQsIGRvbWFpbjogaXNOb2RlICYmIHByb2Nlc3MuZG9tYWlufTtcclxuXHQgIGlmKGxhc3QpbGFzdC5uZXh0ID0gdGFzaztcclxuXHQgIGlmKCFoZWFkKXtcclxuXHQgICAgaGVhZCA9IHRhc2s7XHJcblx0ICAgIG5vdGlmeSgpO1xyXG5cdCAgfSBsYXN0ID0gdGFzaztcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGN0eCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBpbnZva2UgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KVxuXHQgICwgaHRtbCAgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nylcblx0ICAsIGNlbCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpXG5cdCAgLCBnbG9iYWwgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgcHJvY2VzcyAgICAgICAgICAgID0gZ2xvYmFsLnByb2Nlc3Ncblx0ICAsIHNldFRhc2sgICAgICAgICAgICA9IGdsb2JhbC5zZXRJbW1lZGlhdGVcblx0ICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuXHQgICwgTWVzc2FnZUNoYW5uZWwgICAgID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsXG5cdCAgLCBjb3VudGVyICAgICAgICAgICAgPSAwXG5cdCAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuXHQgICwgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSdcblx0ICAsIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXHR2YXIgcnVuID0gZnVuY3Rpb24oKXtcblx0ICB2YXIgaWQgPSArdGhpcztcblx0ICBpZihxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpe1xuXHQgICAgdmFyIGZuID0gcXVldWVbaWRdO1xuXHQgICAgZGVsZXRlIHF1ZXVlW2lkXTtcblx0ICAgIGZuKCk7XG5cdCAgfVxuXHR9O1xuXHR2YXIgbGlzdG5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcblx0ICBydW4uY2FsbChldmVudC5kYXRhKTtcblx0fTtcblx0Ly8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuXHRpZighc2V0VGFzayB8fCAhY2xlYXJUYXNrKXtcblx0ICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKXtcblx0ICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuXHQgICAgd2hpbGUoYXJndW1lbnRzLmxlbmd0aCA+IGkpYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcblx0ICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbigpe1xuXHQgICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG5cdCAgICB9O1xuXHQgICAgZGVmZXIoY291bnRlcik7XG5cdCAgICByZXR1cm4gY291bnRlcjtcblx0ICB9O1xuXHQgIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKXtcblx0ICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG5cdCAgfTtcblx0ICAvLyBOb2RlLmpzIDAuOC1cblx0ICBpZihfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcblx0ICAgIH07XG5cdCAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuXHQgIH0gZWxzZSBpZihNZXNzYWdlQ2hhbm5lbCl7XG5cdCAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuXHQgICAgcG9ydCAgICA9IGNoYW5uZWwucG9ydDI7XG5cdCAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RuZXI7XG5cdCAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcblx0ICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcblx0ICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuXHQgIH0gZWxzZSBpZihnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdCl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG5cdCAgICB9O1xuXHQgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0bmVyLCBmYWxzZSk7XG5cdCAgLy8gSUU4LVxuXHQgIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24oKXtcblx0ICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuXHQgICAgICAgIHJ1bi5jYWxsKGlkKTtcblx0ICAgICAgfTtcblx0ICAgIH07XG5cdCAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcblx0ICB9IGVsc2Uge1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIHNldDogICBzZXRUYXNrLFxuXHQgIGNsZWFyOiBjbGVhclRhc2tcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgYXJncywgdGhhdCl7XG5cdCAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuXHQgIHN3aXRjaChhcmdzLmxlbmd0aCl7XG5cdCAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcblx0ICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcblx0ICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcblx0ICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcblx0ICB9IHJldHVybiAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5kb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbi8qKiovIH0sXG4vKiA3OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuZG9jdW1lbnRcblx0ICAvLyBpbiBvbGQgSUUgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCdcblx0ICAsIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkcmVkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih0YXJnZXQsIHNyYyl7XG5cdCAgZm9yKHZhciBrZXkgaW4gc3JjKSRyZWRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuXHQgIHJldHVybiB0YXJnZXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogODEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLk9iamVjdC5rZXlzO1xuXG4vKioqLyB9LFxuLyogODIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxuXHR2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKSgna2V5cycsIGZ1bmN0aW9uKCRrZXlzKXtcblx0ICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCl7XG5cdCAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcblx0ICB9O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDgzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVksIGV4ZWMpe1xuXHQgIHZhciAkZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAgICwgZm4gICA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV1cblx0ICAgICwgZXhwICA9IHt9O1xuXHQgIGV4cFtLRVldID0gZXhlYyhmbik7XG5cdCAgJGRlZigkZGVmLlMgKyAkZGVmLkYgKiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KShmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4NSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5TZXQ7XG5cbi8qKiovIH0sXG4vKiA4NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc3Ryb25nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nyk7XG5cblx0Ly8gMjMuMiBTZXQgT2JqZWN0c1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KSgnU2V0JywgZnVuY3Rpb24oZ2V0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24gU2V0KCl7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzWzBdKTsgfTtcblx0fSwge1xuXHQgIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuXHQgIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKXtcblx0ICAgIHJldHVybiBzdHJvbmcuZGVmKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcblx0ICB9XG5cdH0sIHN0cm9uZyk7XG5cbi8qKiovIH0sXG4vKiA4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGhpZGUgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBjdHggICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgc3BlY2llcyAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIHN0cmljdE5ldyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpXG5cdCAgLCBkZWZpbmVkICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpXG5cdCAgLCBmb3JPZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc3RlcCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIElEICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpKCdpZCcpXG5cdCAgLCAkaGFzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgaXNPYmplY3QgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgaXNPYmplY3Rcblx0ICAsIFNVUFBPUlRfREVTQyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG5cdCAgLCBTSVpFICAgICAgICAgPSBTVVBQT1JUX0RFU0MgPyAnX3MnIDogJ3NpemUnXG5cdCAgLCBpZCAgICAgICAgICAgPSAwO1xuXG5cdHZhciBmYXN0S2V5ID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG5cdCAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuXHQgIGlmKCFpc09iamVjdChpdCkpcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcblx0ICBpZighJGhhcyhpdCwgSUQpKXtcblx0ICAgIC8vIGNhbid0IHNldCBpZCB0byBmcm96ZW4gb2JqZWN0XG5cdCAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gJ0YnO1xuXHQgICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgaWRcblx0ICAgIGlmKCFjcmVhdGUpcmV0dXJuICdFJztcblx0ICAgIC8vIGFkZCBtaXNzaW5nIG9iamVjdCBpZFxuXHQgICAgaGlkZShpdCwgSUQsICsraWQpO1xuXHQgIC8vIHJldHVybiBvYmplY3QgaWQgd2l0aCBwcmVmaXhcblx0ICB9IHJldHVybiAnTycgKyBpdFtJRF07XG5cdH07XG5cblx0dmFyIGdldEVudHJ5ID0gZnVuY3Rpb24odGhhdCwga2V5KXtcblx0ICAvLyBmYXN0IGNhc2Vcblx0ICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSksIGVudHJ5O1xuXHQgIGlmKGluZGV4ICE9PSAnRicpcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuXHQgIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuXHQgIGZvcihlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuXHQgICAgaWYoZW50cnkuayA9PSBrZXkpcmV0dXJuIGVudHJ5O1xuXHQgIH1cblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24od3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUil7XG5cdCAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGhhdCwgQywgTkFNRSk7XG5cdCAgICAgIHRoYXQuX2kgPSAkLmNyZWF0ZShudWxsKTsgLy8gaW5kZXhcblx0ICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgICAvLyBmaXJzdCBlbnRyeVxuXHQgICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAgICAgIC8vIGxhc3QgZW50cnlcblx0ICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgICAvLyBzaXplXG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG5cdCAgICB9KTtcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKEMucHJvdG90eXBlLCB7XG5cdCAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuXHQgICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcblx0ICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCl7XG5cdCAgICAgICAgZm9yKHZhciB0aGF0ID0gdGhpcywgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG5cdCAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcblx0ICAgICAgICAgIGlmKGVudHJ5LnApZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB0aGF0W1NJWkVdID0gMDtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcblx0ICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uKGtleSl7XG5cdCAgICAgICAgdmFyIHRoYXQgID0gdGhpc1xuXHQgICAgICAgICAgLCBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG5cdCAgICAgICAgaWYoZW50cnkpe1xuXHQgICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uXG5cdCAgICAgICAgICAgICwgcHJldiA9IGVudHJ5LnA7XG5cdCAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcblx0ICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuXHQgICAgICAgICAgaWYocHJldilwcmV2Lm4gPSBuZXh0O1xuXHQgICAgICAgICAgaWYobmV4dCluZXh0LnAgPSBwcmV2O1xuXHQgICAgICAgICAgaWYodGhhdC5fZiA9PSBlbnRyeSl0aGF0Ll9mID0gbmV4dDtcblx0ICAgICAgICAgIGlmKHRoYXQuX2wgPT0gZW50cnkpdGhhdC5fbCA9IHByZXY7XG5cdCAgICAgICAgICB0aGF0W1NJWkVdLS07XG5cdCAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG5cdCAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuXHQgICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSwgMylcblx0ICAgICAgICAgICwgZW50cnk7XG5cdCAgICAgICAgd2hpbGUoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcblx0ICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG5cdCAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcblx0ICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcblx0ICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmKFNVUFBPUlRfREVTQykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIEM7XG5cdCAgfSxcblx0ICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuXHQgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuXHQgICAgICAsIHByZXYsIGluZGV4O1xuXHQgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG5cdCAgICBpZihlbnRyeSl7XG5cdCAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcblx0ICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcblx0ICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcblx0ICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG5cdCAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG5cdCAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcblx0ICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuXHQgICAgICB9O1xuXHQgICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG5cdCAgICAgIGlmKHByZXYpcHJldi5uID0gZW50cnk7XG5cdCAgICAgIHRoYXRbU0laRV0rKztcblx0ICAgICAgLy8gYWRkIHRvIGluZGV4XG5cdCAgICAgIGlmKGluZGV4ICE9PSAnRicpdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcblx0ICAgIH0gcmV0dXJuIHRoYXQ7XG5cdCAgfSxcblx0ICBnZXRFbnRyeTogZ2V0RW50cnksXG5cdCAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuXHQgICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG5cdCAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICAgICAgdGhpcy5fdCA9IGl0ZXJhdGVkOyAgLy8gdGFyZ2V0XG5cdCAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcblx0ICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcblx0ICAgIH0sIGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuXHQgICAgICAgICwgZW50cnkgPSB0aGF0Ll9sO1xuXHQgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG5cdCAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuXHQgICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG5cdCAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICByZXR1cm4gc3RlcCgxKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG5cdCAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG5cdCAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG5cdCAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG5cdCAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG5cdCAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuXHQgICAgc3BlY2llcyhDKTtcblx0ICAgIHNwZWNpZXMoX193ZWJwYWNrX3JlcXVpcmVfXygxMilbTkFNRV0pOyAvLyBmb3Igd3JhcHBlclxuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaGlkZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcblx0ICB2YXIgQmFzZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVtOQU1FXVxuXHQgICAgLCBDICAgICA9IEJhc2Vcblx0ICAgICwgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnXG5cdCAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuXHQgICAgLCBPICAgICA9IHt9O1xuXHQgIGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSB8fCB0eXBlb2YgQyAhPSAnZnVuY3Rpb24nXG5cdCAgICB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOyB9KSlcblx0ICApe1xuXHQgICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3Jcblx0ICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGFyZ2V0LCBDLCBOQU1FKTtcblx0ICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0YXJnZXRbQURERVJdLCB0YXJnZXQpO1xuXHQgICAgfSk7XG5cdCAgICAkLmVhY2guY2FsbCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMnLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcblx0ICAgICAgdmFyIGNoYWluID0gS0VZID09ICdhZGQnIHx8IEtFWSA9PSAnc2V0Jztcblx0ICAgICAgaWYoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpaGlkZShDLnByb3RvdHlwZSwgS0VZLCBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG5cdCAgICAgICAgcmV0dXJuIGNoYWluID8gdGhpcyA6IHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICAgIGlmKCdzaXplJyBpbiBwcm90bykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2Muc2l6ZTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQywgTkFNRSk7XG5cblx0ICBPW05BTUVdID0gQztcblx0ICAkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiwgTyk7XG5cblx0ICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cblx0ICByZXR1cm4gQztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciAkZGVmICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cdCRkZWYoJGRlZi5QLCAnU2V0Jywge3RvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXyg5MCkoJ1NldCcpfSk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgZm9yT2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgICAgaWYoY2xhc3NvZih0aGlzKSAhPSBOQU1FKXRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG5cdCAgICB2YXIgYXJyID0gW107XG5cdCAgICBmb3JPZih0aGlzLCBmYWxzZSwgYXJyLnB1c2gsIGFycik7XG5cdCAgICByZXR1cm4gYXJyO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjsiLCJtb2R1bGUuZXhwb3J0cyA9IERHOyIsIm1vZHVsZS5leHBvcnRzID0gZ3JvazsiLCJtb2R1bGUuZXhwb3J0cyA9IHJ4anM7IiwibW9kdWxlLmV4cG9ydHMgPSB1aTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjXG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcInBhY2thZ2VcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0IHsgVmRSZWdpb25zVmlld2VyIH0gZnJvbSAnLi92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7IHJ1bkthbGlnbiB9IGZyb20gJy4vdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50JztcbmltcG9ydCB7IFNlcXVlbmNlQWxpZ25tZW50IH0gZnJvbSAnLi9zZXFfYWxpZ24nO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuL3V0aWxzL2NvbnZlcnQnO1xuaW1wb3J0IHsgZ2V0RW1iZWRkaW5nQ29sc05hbWVzLCBzZXF1ZW5jZVNwYWNlIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1zcGFjZSc7XG5pbXBvcnQgeyBnZXRBY3Rpdml0eUNsaWZmcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2UtYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IGdldE1vbGZpbGVzRnJvbVNlcSwgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSB9IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWFjcm9Nb2wgfSBmcm9tICcuL3V0aWxzL2F0b21pYy13b3Jrcyc7XG5pbXBvcnQgeyBNYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXIgfSBmcm9tICcuL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuLy90YWdzOiBpbml0XG5leHBvcnQgZnVuY3Rpb24gaW5pdEJpbygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBhcHBhcmVudGx5IEhFTE1XZWJFZGl0b3IgcmVxdWlyZXMgZG9qbyB0byBiZSBpbml0aWFsaXplZCBmaXJzdFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7IHJlc29sdmUobnVsbCk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vbmFtZTogbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBNYWNyb21vbGVjdWxlXG4vL291dHB1dDogZ3JpZF9jZWxsX3JlbmRlcmVyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIG1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gbmV3IE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpO1xufVxuLy9uYW1lOiBzZXF1ZW5jZUFsaWdubWVudFxuLy9pbnB1dDogc3RyaW5nIGFsaWduVHlwZSB7Y2hvaWNlczogWydMb2NhbCBhbGlnbm1lbnQnLCAnR2xvYmFsIGFsaWdubWVudCddfVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUFsaWdubWVudChhbGlnblR5cGUsIGFsaWduVGFibGUsIGdhcCwgc2VxMSwgc2VxMikge1xuICAgIGNvbnN0IHRvQWxpZ24gPSBuZXcgU2VxdWVuY2VBbGlnbm1lbnQoc2VxMSwgc2VxMiwgZ2FwLCBhbGlnblRhYmxlKTtcbiAgICBjb25zdCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4vL25hbWU6IFZkUmVnaW9uc1xuLy9kZXNjcmlwdGlvbjogVi1Eb21haW4gcmVnaW9ucyB2aWV3ZXJcbi8vdGFnczogdmlld2VyLCBwYW5lbFxuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiB2ZFJlZ2lvblZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFZkUmVnaW9uc1ZpZXdlcigpO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzLi4uXG4vL25hbWU6IFNlcXVlbmNlIEFjdGl2aXR5IENsaWZmc1xuLy9kZXNjcmlwdGlvbjogZGV0ZWN0IGFjdGl2aXR5IGNsaWZmc1xuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9pbnB1dDogY29sdW1uIGFjdGl2aXRpZXNcbi8vaW5wdXQ6IGRvdWJsZSBzaW1pbGFyaXR5ID0gODAgW1NpbWlsYXJpdHkgY3V0b2ZmXVxuLy9pbnB1dDogc3RyaW5nIG1ldGhvZE5hbWUgeyBjaG9pY2VzOltcIlVNQVBcIiwgXCJ0LVNORVwiLCBcIlNQRVwiXSB9XG5leHBvcnQgZnVuY3Rpb24gYWN0aXZpdHlDbGlmZnMoZGYsIHNlcXVlbmNlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgYXhlc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICdTUEUnOiB7IGN5Y2xlczogMjAwMCwgbGFtYmRhOiAxLjAsIGRsYW1iZGE6IDAuMDAwNSB9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bml0cyA9IHNlcXVlbmNlLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIHlpZWxkIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBzZXF1ZW5jZSwgYXhlc05hbWVzLCAnQWN0aXZpdHkgY2xpZmZzJywgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgJ0xldmVuc2h0ZWluJywgbWV0aG9kTmFtZSwgREcuU0VNVFlQRS5NQUNST01PTEVDVUxFLCB1bml0cywgc2VxdWVuY2VTcGFjZSwgc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMsIGRyYXdUb29sdGlwLCBvcHRpb25zW21ldGhvZE5hbWVdKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IFNlcXVlbmNlIFNwYWNlLi4uXG4vL25hbWU6IFNlcXVlbmNlIFNwYWNlXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbiBtYWNyb01vbGVjdWxlIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbi8vaW5wdXQ6IHN0cmluZyBzaW1pbGFyaXR5TWV0cmljIHsgY2hvaWNlczpbXCJMZXZlbnNodGVpblwiLCBcIlRhbmltb3RvXCJdIH1cbi8vaW5wdXQ6IGJvb2wgcGxvdEVtYmVkZGluZ3MgPSB0cnVlXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VTcGFjZVRvcE1lbnUodGFibGUsIG1hY3JvTW9sZWN1bGUsIG1ldGhvZE5hbWUsIHNpbWlsYXJpdHlNZXRyaWMgPSAnTGV2ZW5zaHRlaW4nLCBwbG90RW1iZWRkaW5ncykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGVtYmVkQ29sc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKHRhYmxlKTtcbiAgICAgICAgY29uc3QgY2hlbVNwYWNlUGFyYW1zID0ge1xuICAgICAgICAgICAgc2VxQ29sOiBtYWNyb01vbGVjdWxlLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogZW1iZWRDb2xzTmFtZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VTcGFjZVJlcyA9IHlpZWxkIHNlcXVlbmNlU3BhY2UoY2hlbVNwYWNlUGFyYW1zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHNlcXVlbmNlU3BhY2VSZXMuY29vcmRpbmF0ZXM7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGVtYmVkZGluZ3MpXG4gICAgICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBpZiAocGxvdEVtYmVkZGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBncm9rLnNoZWxsLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYubmFtZSA9PT0gdGFibGUubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgdi5zY2F0dGVyUGxvdCh7IHg6IGVtYmVkQ29sc05hbWVzWzBdLCB5OiBlbWJlZENvbHNOYW1lc1sxXSwgdGl0bGU6ICdTZXF1ZW5jZSBzcGFjZScgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbjtcbi8vdG9wLW1lbnU6IEJpbyB8IFRvIEF0b21pYyBMZXZlbC4uLlxuLy9uYW1lOiBUbyBBdG9taWMgTGV2ZWxcbi8vZGVzY3JpcHRpb246IHJldHVybnMgbW9sZmlsZXMgZm9yIGVhY2ggbW9ub21lciBmcm9tIEhFTE0gbGlicmFyeVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIHRvQXRvbWljTGV2ZWwoZGYsIHNlcXVlbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJGaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dChIRUxNX0NPUkVfTElCX0ZJTEVOQU1FKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJPYmplY3QgPSBKU09OLnBhcnNlKG1vbm9tZXJzTGliRmlsZSk7XG4gICAgICAgIGNvbnN0IGF0b21pY0NvZGVzID0gZ2V0TW9sZmlsZXNGcm9tU2VxKHNlcXVlbmNlLCBtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIGdldE1hY3JvTW9sKGF0b21pY0NvZGVzKTtcbiAgICAgICAgY29uc3QgY29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdyZWdlbmVyYXRlZCcsIHJlc3VsdCk7XG4gICAgICAgIGNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NT0xFQ1VMRTtcbiAgICAgICAgY29sLnRhZ3NbREcuVEFHUy5VTklUU10gPSAnbW9sYmxvY2snO1xuICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgTVNBLi4uXG4vL25hbWU6IE1TQVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2UgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbGVTZXF1ZW5jZUFsaWdubWVudEFueSh0YWJsZSwgY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbXNhQ29sID0geWllbGQgcnVuS2FsaWduKGNvbCwgZmFsc2UpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChtc2FDb2wpO1xuICAgICAgICAvLyBUaGlzIGNhbGwgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIGNlbGwgcmVuZGVyZXIgYWN0aXZhdGlvblxuICAgICAgICB5aWVsZCBncm9rLmRhdGEuZGV0ZWN0U2VtYW50aWNUeXBlcyh0YWJsZSk7XG4gICAgICAgIC8vIGNvbnN0IHR2OiBERy5UYWJsZVZpZXcgPSBncm9rLnNoZWxsLnR2O1xuICAgICAgICAvLyB0di5ncmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgcmV0dXJuIG1zYUNvbDtcbiAgICB9KTtcbn1cbi8vbmFtZTogQ29tcG9zaXRpb24gQW5hbHlzaXNcbi8vdG9wLW1lbnU6IEJpbyB8IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2l0aW9uQW5hbHlzaXMoKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gSGlnaGVyIHByaW9yaXR5IGZvciBjb2x1bW5zIHdpdGggTVNBIGRhdGEgdG8gc2hvdyB3aXRoIFdlYkxvZ28uXG4gICAgICAgIGNvbnN0IHR2ID0gZ3Jvay5zaGVsbC50djtcbiAgICAgICAgY29uc3QgZGYgPSB0di5kYXRhRnJhbWU7XG4gICAgICAgIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgICAgICAgbGV0IGNvbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgcmV0dXJuIHVuaXRzID8gdW5pdHMuaW5kZXhPZignTVNBJykgIT09IC0xIDogZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWNvbClcbiAgICAgICAgICAgIGNvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgICAgICBpZiAoIWNvbCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcignQ3VycmVudCB0YWJsZSBkb2VzIG5vdCBjb250YWluIHNlcXVlbmNlcycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHR2LmFkZFZpZXdlcignV2ViTG9nbycsIHsgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2wubmFtZSB9KTtcbiAgICB9KTtcbn1cbi8vIGhlbHBlciBmdW5jdGlvbiBmb3IgaW1wb3J0RmFzdGFcbmZ1bmN0aW9uIHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKSB7XG4gICAgY29uc3Qgc2VxID0gZmlsZUNvbnRlbnQuc2xpY2Uoc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKTtcbiAgICBjb25zdCBzZXFBcnJheSA9IHNlcS5zcGxpdCgvXFxzLyk7XG4gICAgcmV0dXJuIHNlcUFycmF5LmpvaW4oJycpO1xufVxuLy9uYW1lOiBpbXBvcnRGYXN0YVxuLy9kZXNjcmlwdGlvbjogT3BlbnMgRkFTVEEgZmlsZVxuLy90YWdzOiBmaWxlLWhhbmRsZXJcbi8vbWV0YS5leHQ6IGZhc3RhLCBmbmEsIGZmbiwgZmFhLCBmcm4sIGZhXG4vL2lucHV0OiBzdHJpbmcgZmlsZUNvbnRlbnRcbi8vb3V0cHV0OiBsaXN0IHRhYmxlc1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEZhc3RhKGZpbGVDb250ZW50KSB7XG4gICAgY29uc3QgcmVnZXggPSAvXj4oLiopJC9nbTsgLy8gbWF0Y2ggbGluZXMgc3RhcnRpbmcgd2l0aCA+XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXkgPSBbXTtcbiAgICBjb25zdCBzZXF1ZW5jZXNBcnJheSA9IFtdO1xuICAgIGxldCBzdGFydE9mU2VxdWVuY2UgPSAwO1xuICAgIGxldCBtYXRjaDsgLy8gbWF0Y2guaW5kZXggaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0Y2hlZCBsaW5lXG4gICAgd2hpbGUgKG1hdGNoID0gcmVnZXguZXhlYyhmaWxlQ29udGVudCkpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBmaWxlQ29udGVudC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyAxLCByZWdleC5sYXN0SW5kZXgpO1xuICAgICAgICBkZXNjcmlwdGlvbnNBcnJheS5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKHN0YXJ0T2ZTZXF1ZW5jZSAhPT0gMClcbiAgICAgICAgICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIHN0YXJ0T2ZTZXF1ZW5jZSA9IHJlZ2V4Lmxhc3RJbmRleCArIDE7XG4gICAgfVxuICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIC0xKSk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXlDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2Rlc2NyaXB0aW9uJywgZGVzY3JpcHRpb25zQXJyYXkpO1xuICAgIGNvbnN0IHNlcXVlbmNlQ29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdzZXF1ZW5jZScsIHNlcXVlbmNlc0FycmF5KTtcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gJ01hY3JvbW9sZWN1bGUnO1xuICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXF1ZW5jZUNvbCwgNSwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgIGNvbnN0IHNlcVR5cGUgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICBbJ05UJywgbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpXSxcbiAgICAgICAgWydQVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpXSxcbiAgICBdO1xuICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlcy5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICBjb25zdCB1bml0cyA9IGBmYXN0YToke3NlcVR5cGV9OiR7YWxwaGFiZXR9YDtcbiAgICBzZXF1ZW5jZUNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdW5pdHMpO1xuICAgIHJldHVybiBbREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uc0FycmF5Q29sLFxuICAgICAgICAgICAgc2VxdWVuY2VDb2wsXG4gICAgICAgIF0pXTtcbn1cbi8vbmFtZTogQmlvIHwgQ29udmVydFxuLy9mcmllbmRseS1uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL3RhZ3M6IHBhbmVsLCBiaW9cbi8vaW5wdXQ6IGNvbHVtbiBjb2wge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhbmVsKGNvbCkge1xuICAgIGNvbnZlcnQoY29sKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|
|
10965
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLEtBQUssRUFBRSxFQUdWOztBQUVWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsS0FBSyxFQUFFLEVBR1Y7O0FBRVY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkZBQTJGLGVBQWU7QUFDMUc7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsT0FBTztBQUNQLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsV0FBVztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0EscUVBQXFFOztBQUVyRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0MsbUJBQW1CO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFN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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrREFBcUI7QUFDdEQsd0JBQXdCLCtEQUFxQjtBQUM3QztBQUNBLGtCQUFrQiwwRkFBZ0IsaUJBQWlCLGlHQUF1QjtBQUMxRTtBQUNBO0FBQ0EsbUNBQW1DLHNGQUFpQjtBQUNwRCxtQ0FBbUMsb0ZBQWdCO0FBQ25EO0FBQ0E7QUFDQSxnRUFBZ0UsdUdBQTZCO0FBQzdGO0FBQ0E7QUFDQSwwQkFBMEIsa0VBQXdCO0FBQ2xELDJCQUEyQixRQUFRLEdBQUcsU0FBUztBQUMvQyx1QkFBdUIsdURBQWE7QUFDcEMsWUFBWSxrRUFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDZDtBQUNQLElBQUksdURBQU87QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AYmlvd2FzbS9haW9saS9kaXN0L2Fpb2xpLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxLXBhbGV0dGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxdWVuY2UtZW5jb2Rlci5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3Vua25vd24uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nby5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9mYXN0ZXN0LWxldmVuc2h0ZWluL2luZGV4LmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9qYXJvLXdpbmtsZXItdHlwZXNjcmlwdC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3NlcV9hbGlnbi50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvYXRvbWljLXdvcmtzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9jZWxsLXJlbmRlcmVyLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9jaGVtLXBhbGV0dGUudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29udmVydC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvc2VxdWVuY2Utc3BhY2UudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3V0aWxzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyLnRzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy93dS9kaXN0L3d1LmpzIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInJ4anNcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jpby8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQWlvbGkgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgdmFyIG5hbWUgPSBcIkBiaW93YXNtL2Fpb2xpXCI7XG4gIHZhciB2ZXJzaW9uID0gXCIyLjQuMC1yYzJcIjtcbiAgdmFyIGRlc2NyaXB0aW9uID0gXCJBIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgV2ViQXNzZW1ibHktYmFzZWQgZ2Vub21pY3MgdG9vbHNcIjtcbiAgdmFyIGJyb3dzZXIgPSBcImRpc3QvYWlvbGkuanNcIjtcbiAgdmFyIHdvcmtlciA9IFwiZGlzdC9haW9saS53b3JrZXIuanNcIjtcbiAgdmFyIG1haW4gPSBcImFpb2xpLmpzXCI7XG4gIHZhciByZXBvc2l0b3J5ID0ge1xuICBcdHR5cGU6IFwiZ2l0XCIsXG4gIFx0dXJsOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9haW9saS5naXRcIlxuICB9O1xuICB2YXIgYXV0aG9yID0gXCJSb2JlcnQgQWJvdWtoYWxpbFwiO1xuICB2YXIgbGljZW5zZSA9IFwiTUlUXCI7XG4gIHZhciBkZXBlbmRlbmNpZXMgPSB7XG4gIFx0Y29tbGluazogXCJeNC4zLjFcIixcbiAgXHRcIndhc20tZmVhdHVyZS1kZXRlY3RcIjogXCJeMS4yLjExXCJcbiAgfTtcbiAgdmFyIGRldkRlcGVuZGVuY2llcyA9IHtcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI6IFwiXjExLjAuMVwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tanNvblwiOiBcIl40LjEuMFwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCI6IFwiXjcuMC4wXCIsXG4gIFx0Y3lwcmVzczogXCJeOC4wLjBcIixcbiAgXHRyb2xsdXA6IFwiXjEuMjkuMFwiLFxuICBcdFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIlxuICB9O1xuICB2YXIgc2NyaXB0cyA9IHtcbiAgXHRidWlsZDogXCJyb2xsdXAgLWNcIixcbiAgXHRkZXY6IFwicm9sbHVwIC1jIC13XCIsXG4gIFx0dGVzdDogXCJjeXByZXNzIHJ1blwiLFxuICBcdFwidGVzdC1vcGVuXCI6IFwiY3lwcmVzcyBvcGVuXCJcbiAgfTtcbiAgdmFyIGZpbGVzID0gW1xuICBcdFwiZGlzdFwiXG4gIF07XG4gIHZhciBwa2cgPSB7XG4gIFx0bmFtZTogbmFtZSxcbiAgXHR2ZXJzaW9uOiB2ZXJzaW9uLFxuICBcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgXHRicm93c2VyOiBicm93c2VyLFxuICBcdHdvcmtlcjogd29ya2VyLFxuICBcdG1haW46IG1haW4sXG4gIFx0cmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgXHRhdXRob3I6IGF1dGhvcixcbiAgXHRsaWNlbnNlOiBsaWNlbnNlLFxuICBcdGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLFxuICBcdGRldkRlcGVuZGVuY2llczogZGV2RGVwZW5kZW5jaWVzLFxuICBcdHNjcmlwdHM6IHNjcmlwdHMsXG4gIFx0ZmlsZXM6IGZpbGVzXG4gIH07XG5cbiAgLyoqXHJcbiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnByb3h5XCIpO1xyXG4gIGNvbnN0IGNyZWF0ZUVuZHBvaW50ID0gU3ltYm9sKFwiQ29tbGluay5lbmRwb2ludFwiKTtcclxuICBjb25zdCByZWxlYXNlUHJveHkgPSBTeW1ib2woXCJDb21saW5rLnJlbGVhc2VQcm94eVwiKTtcclxuICBjb25zdCB0aHJvd01hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsudGhyb3duXCIpO1xyXG4gIGNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsKSB8fCB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlIHRvIGhhbmRsZSBvYmplY3RzIG1hcmtlZCB0byBwcm94eS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eVRyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIHZhbFtwcm94eU1hcmtlcl0sXHJcbiAgICAgIHNlcmlhbGl6ZShvYmopIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQxKTtcclxuICAgICAgICAgIHJldHVybiBbcG9ydDIsIFtwb3J0Ml1dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShwb3J0KSB7XHJcbiAgICAgICAgICBwb3J0LnN0YXJ0KCk7XHJcbiAgICAgICAgICByZXR1cm4gd3JhcChwb3J0KTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZXIgdG8gaGFuZGxlIHRocm93biBleGNlcHRpb25zLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRocm93VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmIHRocm93TWFya2VyIGluIHZhbHVlLFxyXG4gICAgICBzZXJpYWxpemUoeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgICBsZXQgc2VyaWFsaXplZDtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0geyBpc0Vycm9yOiBmYWxzZSwgdmFsdWUgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbc2VyaWFsaXplZCwgW11dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICBpZiAoc2VyaWFsaXplZC5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Ioc2VyaWFsaXplZC52YWx1ZS5tZXNzYWdlKSwgc2VyaWFsaXplZC52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBzZXJpYWxpemVkLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBzZXJpYWxpemF0aW9uIG9mIGNlcnRhaW4gdmFsdWVzLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRyYW5zZmVySGFuZGxlcnMgPSBuZXcgTWFwKFtcclxuICAgICAgW1wicHJveHlcIiwgcHJveHlUcmFuc2ZlckhhbmRsZXJdLFxyXG4gICAgICBbXCJ0aHJvd1wiLCB0aHJvd1RyYW5zZmVySGFuZGxlcl0sXHJcbiAgXSk7XHJcbiAgZnVuY3Rpb24gZXhwb3NlKG9iaiwgZXAgPSBzZWxmKSB7XHJcbiAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGNhbGxiYWNrKGV2KSB7XHJcbiAgICAgICAgICBpZiAoIWV2IHx8ICFldi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgeyBpZCwgdHlwZSwgcGF0aCB9ID0gT2JqZWN0LmFzc2lnbih7IHBhdGg6IFtdIH0sIGV2LmRhdGEpO1xyXG4gICAgICAgICAgY29uc3QgYXJndW1lbnRMaXN0ID0gKGV2LmRhdGEuYXJndW1lbnRMaXN0IHx8IFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXRoLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJHRVRcIiAvKiBHRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiU0VUXCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFtwYXRoLnNsaWNlKC0xKVswXV0gPSBmcm9tV2lyZVZhbHVlKGV2LmRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQVBQTFlcIiAvKiBBUFBMWSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlLmFwcGx5KHBhcmVudCwgYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IHJhd1ZhbHVlKC4uLmFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm94eSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRyYW5zZmVyKHBvcnQxLCBbcG9ydDFdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXR1cm5WYWx1ZSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3dpcmVWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3aXJlVmFsdWUpLCB7IGlkIH0pLCB0cmFuc2ZlcmFibGVzKTtcclxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAvLyBkZXRhY2ggYW5kIGRlYWN0aXZlIGFmdGVyIHNlbmRpbmcgcmVsZWFzZSByZXNwb25zZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSB7XHJcbiAgICAgIHJldHVybiBlbmRwb2ludC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk1lc3NhZ2VQb3J0XCI7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQoZW5kcG9pbnQpIHtcclxuICAgICAgaWYgKGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpKVxyXG4gICAgICAgICAgZW5kcG9pbnQuY2xvc2UoKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gd3JhcChlcCwgdGFyZ2V0KSB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgW10sIHRhcmdldCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUmVsZWFzZWQpIHtcclxuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZVwiKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBjcmVhdGVQcm94eShlcCwgcGF0aCA9IFtdLCB0YXJnZXQgPSBmdW5jdGlvbiAoKSB7IH0pIHtcclxuICAgICAgbGV0IGlzUHJveHlSZWxlYXNlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHtcclxuICAgICAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gcmVsZWFzZVByb3h5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb3h5UmVsZWFzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRoZW46ICgpID0+IHByb3h5IH07XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIgLyogR0VUICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByLnRoZW4uYmluZChyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbLi4ucGF0aCwgcHJvcF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldChfdGFyZ2V0LCBwcm9wLCByYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgLy8gRklYTUU6IEVTNiBQcm94eSBIYW5kbGVyIGBzZXRgIG1ldGhvZHMgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhXHJcbiAgICAgICAgICAgICAgLy8gYm9vbGVhbi4gVG8gc2hvdyBnb29kIHdpbGwsIHdlIHJldHVybiB0cnVlIGFzeW5jaHJvbm91c2x5IMKvXFxfKOODhClfL8KvXHJcbiAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIlNFVFwiIC8qIFNFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIHByb3BdLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZywgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBjcmVhdGVFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBXZSBqdXN0IHByZXRlbmQgdGhhdCBgYmluZCgpYCBkaWRu4oCZdCBoYXBwZW4uXHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IFwiYmluZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgcGF0aC5zbGljZSgwLCAtMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkFQUExZXCIgLyogQVBQTFkgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJ1Y3QoX3RhcmdldCwgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwcm94eTtcclxuICB9XHJcbiAgZnVuY3Rpb24gbXlGbGF0KGFycikge1xyXG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyhhcmd1bWVudExpc3QpIHtcclxuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gYXJndW1lbnRMaXN0Lm1hcCh0b1dpcmVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBbcHJvY2Vzc2VkLm1hcCgodikgPT4gdlswXSksIG15RmxhdChwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzFdKSldO1xyXG4gIH1cclxuICBjb25zdCB0cmFuc2ZlckNhY2hlID0gbmV3IFdlYWtNYXAoKTtcclxuICBmdW5jdGlvbiB0cmFuc2ZlcihvYmosIHRyYW5zZmVycykge1xyXG4gICAgICB0cmFuc2ZlckNhY2hlLnNldChvYmosIHRyYW5zZmVycyk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb3h5KG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmosIHsgW3Byb3h5TWFya2VyXTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdG9XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgaGFuZGxlcl0gb2YgdHJhbnNmZXJIYW5kbGVycykge1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtzZXJpYWxpemVkVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gaGFuZGxlci5zZXJpYWxpemUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlcyxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogXCJSQVdcIiAvKiBSQVcgKi8sXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJhbnNmZXJDYWNoZS5nZXQodmFsdWUpIHx8IFtdLFxyXG4gICAgICBdO1xyXG4gIH1cclxuICBmdW5jdGlvbiBmcm9tV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlckhhbmRsZXJzLmdldCh2YWx1ZS5uYW1lKS5kZXNlcmlhbGl6ZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIFwiUkFXXCIgLyogUkFXICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCBtc2csIHRyYW5zZmVycykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICAgICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBsKGV2KSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFldi5kYXRhIHx8ICFldi5kYXRhLmlkIHx8IGV2LmRhdGEuaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShldi5kYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oeyBpZCB9LCBtc2cpLCB0cmFuc2ZlcnMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KDQpXHJcbiAgICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKVxyXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xyXG4gIH1cbiAgLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbGluay5tanMubWFwXG5cbiAgLy8gQ29uc3RhbnRzXG4gIGNvbnN0IFVSTF9DRE5fUk9PVCA9IFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjJcIjtcbiAgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBcdC8vIEJpb3dhc20gQ0ROIFVSTHNcbiAgXHR1cmxDRE46IFVSTF9DRE5fUk9PVCxcbiAgXHQvLyBHZXQgdGhlIFdvcmtlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgQWlvbGkgdmVyc2lvblxuICBcdHVybEFpb2xpOiBgJHtVUkxfQ0ROX1JPT1R9L2Fpb2xpLyR7cGtnLnZlcnNpb259L2Fpb2xpLndvcmtlci5qc2AsXG4gIFx0Ly8gV2hlcmUgd2UgY2FuIGZpbmQgdGhlIGJhc2UgYmlvd2FzbSBtb2R1bGUgKG9ubHkgbW9kaWZ5IHRoaXMgZm9yIGxvY2FsIGRldmVsb3BtZW50KVxuICBcdHVybEJhc2VNb2R1bGU6IG51bGwsXG5cbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyB0aGUgc2hhcmVkIGZpbGVzeXN0ZW1cbiAgXHRkaXJTaGFyZWQ6IFwiL3NoYXJlZFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIEZpbGUvQmxvYiBvYmplY3RzIHRvIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4gIFx0ZGlyTW91bnRlZDogXCIvbW50XCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3Igc3ltbGlua3MgKGJhc2ljYWxseSwgd2UgbWFrZSBhIHN5bWxpbmsgdG8gZWFjaCBmaWxlIG1vdW50ZWQgb24gV09SS0VSRlNcbiAgXHQvLyBzbyB0aGF0IG9wZXJhdGlvbnMgbGlrZSBcInNhbXRvb2xzIGluZGV4XCIgZG9uJ3QgY3Jhc2ggZHVlIHRvIHRoZSByZWFkLW9ubHkgbmF0dXJlIG9mIFdPUktFUlMpLlxuICBcdC8vIEFsc28gbW91bnQgVVJMcyBsYXppbHkgaW4gdGhhdCBmb2xkZXIuXG4gIFx0ZGlyRGF0YTogXCIvZGF0YVwiLFxuICBcdC8vIEludGVybGVhdmUgc3Rkb3V0L3N0ZGVyci4gSWYgc2V0IHRvIGZhbHNlLCBgLmV4ZWMoKWAgcmV0dXJucyBhbiBvYmplY3QgeyBcInN0ZG91dFwiOiA8dGV4dD4sIFwic3RkZXJyXCI6IDx0ZXh0PiB9XG4gIFx0cHJpbnRJbnRlcmxlYXZlZDogdHJ1ZSxcblxuICBcdC8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJXb3JrZXIgd2l0aCBwYXlsb2FkIHsgdHlwZTogXCJiaW93YXNtXCIsIHZhbHVlOiAuLi4gfS5cbiAgXHQvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Jpb3dhc20vdHJlZS9tYWluL3Rvb2xzL2JodHNuZT4gZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VuZCByZWd1bGFyIHVwZGF0ZXNcbiAgXHQvLyBiYWNrIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbE1haW4oKSBpcyBkb25lIHJ1bm5pbmcuXG4gIFx0Y2FsbGJhY2s6IG51bGwsXG5cbiAgXHQvLyBEZWJ1Z2dpbmdcbiAgXHRkZWJ1ZzogZmFsc2UsXG4gIFx0ZW52OiBcInByZFwiXG4gIH07XG5cbiAgLy8gQ2xhc3M6IDEgb2JqZWN0ID0gMSB3b3JrZXI7IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV5IHdhbnQgdG9vbHMgcnVubmluZyBpbiBzZXBhcmF0ZSB0aHJlYWRzIG9yIGFsbCBvZiB0aGVtIGluIG9uZVxuICBjbGFzcyBBaW9saVxuICB7XG4gIFx0Y29uc3RydWN0b3IodG9vbHMsIGNvbmZpZz17fSlcbiAgXHR7XG4gIFx0XHRpZih0b29scyA9PSBudWxsKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyBhcnJheSBvZiB0b29scyBhcyBpbnB1dCB0byBBaW9saSBjb25zdHJ1Y3Rvci5cIjtcblxuICBcdFx0Ly8gUGFyc2UgdXNlciBpbnB1dFxuICBcdFx0aWYoIUFycmF5LmlzQXJyYXkodG9vbHMpKVxuICBcdFx0XHR0b29scyA9IFsgdG9vbHMgXTtcbiAgXHRcdC8vIE92ZXJ3cml0ZSBkZWZhdWx0IGNvbmZpZyBpZiBzcGVjaWZpZWRcbiAgXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIENPTkZJR19ERUZBVUxUUywgY29uZmlnKTtcbiAgXHRcdC8vIEZvciBjb252ZW5pZW5jZSwgc3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBvciBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW5zdGVhZCBvZiBvYmplY3QgY29uZmlnXG4gIFx0XHR0b29scyA9IHRvb2xzLm1hcCh0aGlzLl9wYXJzZVRvb2wpO1xuICBcdFx0Ly8gSWYgdGVzdGluZyB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudCBlLmcuIGNkbi1zdGcuYmlvd2FzbS5jb21cbiAgXHRcdGlmKGNvbmZpZy5lbnYgIT0gXCJwcmRcIikge1xuICBcdFx0XHRjb25maWcudXJsQ0ROID0gY29uZmlnLnVybENETi5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0XHRjb25maWcudXJsQWlvbGkgPSBjb25maWcudXJsQWlvbGkucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdH1cblxuICBcdFx0Ly8gQWRkIGJpb3dhc20gYmFzZSBtb2R1bGUgdG8gbGlzdCBvZiB0b29scyB0byBpbml0aWFsaXplIChuZWVkIHRoaXMgZm9yIHRoZSBzaGFyZWQgdmlydHVhbCBmaWxlc3lzdGVtKVxuICBcdFx0dG9vbHMgPSBbe1xuICBcdFx0XHR0b29sOiBcImJhc2VcIixcbiAgXHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIFx0XHRcdHVybFByZWZpeDogY29uZmlnLnVybEJhc2VNb2R1bGVcbiAgXHRcdH0sIC4uLnRvb2xzXTtcblxuICBcdFx0Ly8gU2V0IHN0YXRlXG4gIFx0XHR0aGlzLnRvb2xzID0gdG9vbHM7XG4gIFx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICBcdFx0Ly8gSGFuZGxlIGNhbGxiYWNrIChkZWxldGUgaXQgYmVjYXVzZSB3ZSBjYW4ndCBzZW5kIGEgZnVuY3Rpb24gdG8gdGhlIFdlYldvcmtlcilcbiAgXHRcdGlmKHRoaXMuY29uZmlnLmNhbGxiYWNrICE9IG51bGwpXG4gIFx0XHRcdHRoaXMuY2FsbGJhY2sgPSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcbiAgXHRcdGRlbGV0ZSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcblxuICBcdFx0cmV0dXJuIHRoaXMuaW5pdCgpO1xuICBcdH1cblxuICBcdC8vIEluaXRpYWxpemUgdGhlIFdlYldvcmtlciBhbmQgdGhlIFdlYkFzc2VtYmx5IG1vZHVsZXMgd2l0aGluIGl0XG4gIFx0YXN5bmMgaW5pdCgpIHtcbiAgXHRcdC8vIE5vdGU6IFdlIGNhbiBvbmx5IGNyZWF0ZSBhIFdlYldvcmtlciB1c2luZyBhIFVSTCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGFwcCBydW5uaW5nIGl0LCBpLmUuIHdlXG4gIFx0XHQvLyBjYW4ndCBkbyBgbmV3IFdvcmtlcihcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyLy4uLlwiKWAsIHNvIGluc3RlYWQgd2UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhhdFxuICBcdFx0Ly8gVVJMIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhlIFdlYldvcmtlci4gU2VlIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjAwMTU4OTg+LlxuICBcdFx0Y29uc3QgbW9kdWxlSlMgPSBhd2FpdCAoYXdhaXQgZmV0Y2godGhpcy5jb25maWcudXJsQWlvbGkpKS50ZXh0KCk7XG4gIFx0XHRjb25zdCBtb2R1bGVCbG9iID0gbmV3IEJsb2IoW21vZHVsZUpTXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KTtcblxuICBcdFx0Ly8gQ3JlYXRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChtb2R1bGVCbG9iKSk7XG4gIFx0XHQvLyBMaXN0ZW4gZm9yIFwiYmlvd2FzbVwiIG1lc3NhZ2VzIGZyb20gdGhlIFdlYldvcmtlclxuICBcdFx0aWYodGhpcy5jYWxsYmFjaylcbiAgXHRcdFx0d29ya2VyLm9ubWVzc2FnZSA9IGUgPT4ge1xuICBcdFx0XHRcdGlmKGUuZGF0YS50eXBlID09IFwiYmlvd2FzbVwiKVxuICBcdFx0XHRcdFx0dGhpcy5jYWxsYmFjayhlLmRhdGEudmFsdWUpO1xuICBcdFx0XHR9O1xuXG4gIFx0XHRjb25zdCBhaW9saSA9IHdyYXAod29ya2VyKTtcbiAgXHRcdGFpb2xpLnRvb2xzID0gdGhpcy50b29scztcbiAgXHRcdGFpb2xpLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gIFx0XHQvLyBJbml0aWFsaXplIHRoZSB0b29scyBpbnNpZGUgdGhlIFdlYldvcmtlclxuICBcdFx0YXdhaXQgYWlvbGkuaW5pdCgpO1xuXG4gIFx0XHRyZXR1cm4gYWlvbGk7XG4gIFx0fVxuXG4gIFx0Ly8gUGFyc2UgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnRvIHsgXCJ0b29sXCI6IDx0b29sPiwgXCJwcm9ncmFtXCI6IDxwcm9ncmFtPiwgXCJ2ZXJzaW9uXCI6IDx2ZXJzaW9uPiB9XG4gIFx0X3BhcnNlVG9vbCh0b29sKVxuICBcdHtcbiAgXHRcdC8vIElmIG5vdCBhIHN0cmluZywgbGVhdmUgaXQgYXMgaXNcbiAgXHRcdGlmKHR5cGVvZiB0b29sICE9PSBcInN0cmluZ1wiKVxuICBcdFx0XHRyZXR1cm4gdG9vbDtcblxuICBcdFx0Ly8gU3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiXG4gIFx0XHRjb25zdCB0b29sU3BsaXQgPSB0b29sLnNwbGl0KFwiL1wiKTtcbiAgXHRcdGlmKHRvb2xTcGxpdC5sZW5ndGggIT0gMiAmJiB0b29sU3BsaXQubGVuZ3RoICE9IDMpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nICc8dG9vbD4vPHZlcnNpb24+JyBvciAnPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj4nXCI7XG5cbiAgXHRcdHJldHVybiB7XG4gIFx0XHRcdHRvb2w6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0cHJvZ3JhbTogdG9vbFNwbGl0Lmxlbmd0aCA9PSAzID8gdG9vbFNwbGl0WzFdIDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHR2ZXJzaW9uOiB0b29sU3BsaXRbdG9vbFNwbGl0Lmxlbmd0aCAtIDFdXG4gIFx0XHR9O1xuICBcdH1cbiAgfVxuXG4gIHJldHVybiBBaW9saTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFpb2xpLmpzLm1hcFxuIiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkcyB7XG4gICAgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgICAgICAgICBjYXNlICdncm9rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICBjYXNlICdsZXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkxlc2s7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hlbVBhbGV0dGU6IHNjaGVtZSBcXGAke3NjaGVtZX1cXGAgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpdmlkZWQgYW1pbm8gYWNpZCB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29udGVudCBpcyBudW1iZXIsIHRoZW4gaXRzIG9taXR0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjIHJhdyBhbWlub1xuICAgICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZ119IG91dGVyIGFuZCBpbm5lciBjb250ZW50XG4gICAgICovXG4gICAgc3RhdGljIGdldElubmVyT3V0ZXIoYykge1xuICAgICAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgICAgIGxldCBpbm5lciA9ICcnO1xuICAgICAgICBsZXQgb3V0ZXIgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGMpIHtcbiAgICAgICAgICAgIGlmIChjaGFyID09ICcoJylcbiAgICAgICAgICAgICAgICBpc0lubmVyKys7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgICAgICAgICBpc0lubmVyLS07XG4gICAgICAgICAgICBlbHNlIGlmIChpc0lubmVyKVxuICAgICAgICAgICAgICAgIGlubmVyICs9IGNoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0Q29sb3JBQVBpdm90KG1vbm9tZXIgPSAnJywgc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAvL2NvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSBBQVBhbGV0dGVzLkdyb2tHcm91cHMoKTtcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IHRoaXMuZ2V0UGFsZXR0ZShzY2hlbWUpO1xuICAgICAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICAgICAgb3V0ZXJNb25vbWVyID0gKG91dGVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7b3V0ZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBvdXRlck1vbm9tZXIpO1xuICAgICAgICBpbm5lck1vbm9tZXIgPSAoaW5uZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtpbm5lck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IGlubmVyTW9ub21lcik7XG4gICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAxIHx8IG1vbm9tZXJbMV0gPT0gJygnKSB7XG4gICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYSA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDFdIDpcbiAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdIGluIGNoZW1QYWxldHRlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAyIHx8IG1vbm9tZXJbMl0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2IgPSBtb25vbWVyWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoKF9jID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvTG93ZXJDYXNlKCkpID09IG1vbm9tZXJbMF0pIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygxLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMF07XG4gICAgfVxufVxuQW1pbm9hY2lkcy5TZW1UeXBlID0gJ0FtaW5vYWNpZHMnO1xuQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnQW1pbm9hY2lkc011bHRpcGxlQWxpZ25tZW50JztcbkFtaW5vYWNpZHMudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5BbWlub2FjaWRzLk5hbWVzID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXMgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuLyoqIFRPRE86IEZ1bGw/XG4gKi9cbkFtaW5vYWNpZHMuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXMXBibTloWTJsa2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1GdGFXNXZZV05wWkhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJUeXhyUWtGQmJVSXNVMEZCVVN4alFVRmpPMGxCUnpkRExFMUJRVTBzUzBGQlN5eEpRVUZKTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJRek5DTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRMmhETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRE5VUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRPMmRDUVVNMVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRla0lzUlVGQlJTeExRVUZMTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCU1Uwc1RVRkJUU3hMUVVGTExGVkJRVlU3VVVGRE1VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6bENMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0blFrRkRha01zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEzUkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRPMmRDUVVOdVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRka1FzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETzJkQ1FVTXZRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGVrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJRenRoUVVOcVF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkpUU3hOUVVGTkxFdEJRVXNzVFVGQlRUdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhEUVVGRE8yZENRVU51UXl4NVJFRkJlVVE3WjBKQlEzcEVMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xGRkJRVkVzUlVGQlJTeFRRVUZUTzJGQlEzQkNMRU5CUVVNc1EwRkJRenRUUVVOS08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCY1Vka0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCYVVJc1RVRkJUVHRSUVVNNVF5eFJRVUZSTEUxQlFVMHNSVUZCUlR0WlFVTm9RaXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZGtNc1MwRkJTeXhOUVVGTk8yZENRVU5VTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEycERPMmRDUVVORkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRUUVVOeVJUdEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlV6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUldZc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEY0VJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dG5Ra0ZEWWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhPMmRDUVVOc1FpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFOUJRVTg3WjBKQlEyUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenM3WjBKQlJXUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5vUlN4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eFZRVUZyUWl4RlFVRkZMRVZCUVVVc1UwRkJhVUlzVFVGQlRUczdVVUZEZWtVc2MwUkJRWE5FTzFGQlEzUkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGREwwUXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZETTBZc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkZNMFlzU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0WlFVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNoRU8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdFpRVU16UkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhMUVVGTExFbEJRVWtzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenR2UWtGRGJrTXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJDeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjRSRHRUUVVOR08xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMWxCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0blFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVUVzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHR2UWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8zZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJEdGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVOQlFVTTdPMEZCY0V4bExHdENRVUZQTEVkQlFWY3NXVUZCV1N4RFFVRkRPMEZCUlM5Q0xHMURRVUYzUWl4SFFVRlhMRFpDUVVFMlFpeERRVUZETzBGQlJURkZMSGxDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZOMElzWjBKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1YwRkJWenREUVVOcVFpeERRVUZETzBGQlJWa3NiVUpCUVZFc1IwRkJjVUk3U1VGRGVrTXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTd3lRa0ZCTWtJN1NVRkRhRU1zUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIbENRVUY1UWp0SlFVTTVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEc5RFFVRnZRenRKUVVONlF5eEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdERRVU4yUWl4RFFVRkRPMEZCUlZrc05FSkJRV2xDTEVkQlFYRkNPMGxCUTJ4RUxFZEJRVWNzUlVGQlJTeExRVUZMTzBsQlExWXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4dFFrRkJiVUk3U1VGRGVFSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4alFVRmpPMGxCUTI1Q0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNaMEpCUVdkQ08wbEJRM0pDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGhRVUZoTzBsQlEyeENMRWRCUVVjc1JVRkJSU3dyUWtGQkswSTdTVUZEY0VNc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHREUVVOc1FpeERRVUZETzBGQlJVWTdSMEZEUnp0QlFVTlhMSE5DUVVGWExFZEJRWEZDTzBsQlF6VkRMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdRMEZEV0N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHeGxjMnM2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVEdWemF5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVzWlhOcklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWJHVnpheUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjBFbkxDQW5VeWNzSUNkVUoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJQ0FnVzFzblF5Y3NJQ2RXSnl3Z0owa25MQ0FuVENjc0lDZFFKeXdnSjBZbkxDQW5XU2NzSUNkTkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkT0p5d2dKMUVuTENBblNDZGRMQ0FuYldGblpXNTBZU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRMSnl3Z0oxSW5YU3dnSjJGc2JGOWliSFZsSjEwc1hHNGdJQ0FnSUNCZExDQm1ZV3h6WlN3Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWJHVnphenRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2R5YjJ0SGNtOTFjSE02SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUjNKdmEwZHliM1Z3Y3lncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW5jbTlyUjNKdmRYQnpJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaM0p2YTBkeWIzVndjeUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFVblhTd2dKM2xsYkd4dmR5ZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMUFuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEJKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMDBuTENBblJpY3NJQ2RaSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRTSnl3Z0owZ25MQ0FuU3lkZExDQW5iR2xuYUhSZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKMlJoY210ZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZFRKeXdnSjFRbkxDQW5UaWNzSUNkUkoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuY205clIzSnZkWEJ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nY21GelRXOXNPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRkpoYzAxdmJDZ3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV5WVhOTmIyd2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlZWE5OYjJ3Z1BTQnVaWGNnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S0h0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwyRmpZMlZ6TG1WdWN5MXNlVzl1TG1aeUwySnBiM1JwWXk5eVlYTjBiM0F2YUdWc2NDOWpiMnh2ZFhJdWFIUnRYRzRnSUNBZ0lDQWdJQ2RFSnpvZ0p5TkZOakJCTUVFbkxDQXZMeUJoYzNBc0lHRnpjR0Z5ZEdsaklHRmphV1FzSUdGemNGeHVJQ0FnSUNBZ0lDQW5SU2M2SUNjalJUWXdRVEJCSnl3Z0x5OGdaMngxTENCbmJIVjBZVzFwWXlCaFkybGtYRzRnSUNBZ0lDQWdJQ2RESnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJqZVhNc0lHTjVjM1JsYVc1bFhHNGdJQ0FnSUNBZ0lDZE5Kem9nSnlORk5rVTJNREFuTENBdkx5QnRaWFFzSUcxbGRHaHBiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owc25PaUFuSXpFME5VRkdSaWNzSUM4dklHeDVjeXdnYkhsemFXNWxYRzRnSUNBZ0lDQWdJQ2RTSnpvZ0p5TXhORFZCUmtZbkxDQXZMeUJoY21jc0lHRnlaMmx1YVc1bFhHNGdJQ0FnSUNBZ0lDZFRKem9nSnlOR1FUazJNREFuTENBdkx5QnpaWElzSUhObGNtbHVaVnh1SUNBZ0lDQWdJQ0FuVkNjNklDY2pSa0U1TmpBd0p5d2dMeThnZEdoeUxDQjBhSEpsYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMFluT2lBbkl6TXlNekpCUVNjc0lDOHZJSEJvWlN3Z2NHaGxibmxzWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuV1NjNklDY2pNekl6TWtGQkp5d2dMeThnZEhseUxDQjBlWEp2YzJsdVpWeHVJQ0FnSUNBZ0lDQW5UaWM2SUNjak1EQkVRMFJESnl3Z0x5OGdZWE51TENCaGMzQmhjbUZuYVc1bFhHNGdJQ0FnSUNBZ0lDZFJKem9nSnlNd01FUkRSRU1uTENBdkx5Qm5iRzRzSUdkc2RYUmhiV2x1WlZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2NqUlVKRlFrVkNKeXdnTHk4Z1oyeDVMQ0JuYkhsamFXNWxYRzRnSUNBZ0lDQWdJQ2RNSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJzWlhVc0lHeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0oxWW5PaUFuSXpCR09ESXdSaWNzSUM4dklIWmhiQ3dnZG1Gc2FXNWxYRzRnSUNBZ0lDQWdJQ2RKSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJwYkdVc0lHbHpiMnhsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMEVuT2lBbkkwTTRRemhET0Njc0lDOHZJR0ZzWVN3Z1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBblZ5YzZJQ2NqUWpRMVFVSTBKeXdnTHk4Z2RISndMQ0IwY25sd2RHOXdhR0Z1WEc0Z0lDQWdJQ0FnSUNkSUp6b2dKeU00TWpneVJESW5MQ0F2THlCb2FYTXNJR2hwYzNScFpHbHVaVnh1SUNBZ0lDQWdJQ0FuVUNjNklDY2pSRU01TmpneUp5d2dMeThnY0hKdkxDQndjbTlzYVc1bFhHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5JMEpGUVRBMlJTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbUZ6VFc5c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSeklIdGNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVTZJSE4wY21sdVp5QTlJQ2RCYldsdWIyRmphV1J6Snp0Y2JseHVJQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qk9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RIYkhsamFXNWxKeXhjYmlBZ0lDQW5UQ2M2SUNkTVpYVmphVzVsSnl4Y2JpQWdJQ0FuV1NjNklDZFVlWEp2YzJsdVpTY3NYRzRnSUNBZ0oxTW5PaUFuVTJWeWFXNWxKeXhjYmlBZ0lDQW5SU2M2SUNkSGJIVjBZVzFwWXlCaFkybGtKeXhjYmlBZ0lDQW5VU2M2SUNkSGJIVjBZVzFwYm1VbkxGeHVJQ0FnSUNkRUp6b2dKMEZ6Y0dGeWRHbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkT0p6b2dKMEZ6Y0dGeVlXZHBibVVuTEZ4dUlDQWdJQ2RHSnpvZ0oxQm9aVzU1YkdGc1lXNXBibVVuTEZ4dUlDQWdJQ2RCSnpvZ0owRnNZVzVwYm1VbkxGeHVJQ0FnSUNkTEp6b2dKMHg1YzJsdVpTY3NYRzRnSUNBZ0oxSW5PaUFuUVhKbmFXNXBibVVuTEZ4dUlDQWdJQ2RJSnpvZ0owaHBjM1JwWkdsdVpTY3NYRzRnSUNBZ0owTW5PaUFuUTNsemRHVnBibVVuTEZ4dUlDQWdJQ2RXSnpvZ0oxWmhiR2x1WlNjc1hHNGdJQ0FnSjFBbk9pQW5VSEp2YkdsdVpTY3NYRzRnSUNBZ0oxY25PaUFuVkhKNWNIUnZjR2hoYmljc1hHNGdJQ0FnSjBrbk9pQW5TWE52YkdWMVkybHVaU2NzWEc0Z0lDQWdKMDBuT2lBblRXVjBhR2x2Ym1sdVpTY3NYRzRnSUNBZ0oxUW5PaUFuVkdoeVpXOXVhVzVsSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKMDVEUXlnOVR5bFBKeXhjYmlBZ0lDQW5UQ2M2SUNkT1cwTkFTRjBvUTBNb1F5bERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxa25PaUFuVGtNb1EwTXhQVU5EUFVNb1R5bERQVU14S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMU1uT2lBblRrTW9RMDhwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SU2M2SUNkT1cwTkFRRWhkS0VORFF5aFBLVDFQS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUVuT2lBblRsdERRRUJJWFNoRFEwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RFSnpvZ0owNWJRMEJBU0Ywb1EwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RPSnpvZ0owNWJRMEJBU0Ywb1EwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RHSnpvZ0owNURLRU5ETVQxRFF6MURRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RCSnpvZ0owNWJRMEJJWFNoREtVTW9QVThwVHljc1hHNGdJQ0FnSjBzbk9pQW5Ua01vUTBORFEwNHBReWc5VHlsUEp5eGNiaUFnSUNBblVpYzZJQ2RPVzBOQVNGMG9RME5EVGtNb1BVNHBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZElKem9nSjA1REtFTkRNVDFEVGoxRFcwNWRNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZERKem9nSjA1YlEwQkFTRjBvUTFNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVmljNklDZE9ReWhES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkUUp6b2dKMDRvUTBORE1TbERNVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxY25PaUFuVGx0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMGtuT2lBblRsdERRRWhkS0Z0RFFFaGRLRU1wUTBNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVFNjNklDZE9ReWhEUTFOREtVTW9QVThwVHljc1hHNGdJQ0FnSjFRbk9pQW5Ua01vUXloUEtVTXBReWc5VHlsUEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWelZISjFibU5oZEdWa09pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSnlwREtpY3NYRzRnSUNBZ0owd25PaUFuUTBNb1F5bERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5XU2M2SUNkRE1UMURReWc5UTBNOVF6RkRReWdxS1NvcFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVDBOREtDb3BReW9uTEZ4dUlDQWdJQ2RGSnpvZ0p5cGJRMEJBU0Ywb1EwTkRLRThwUFU4cEtpY3NYRzRnSUNBZ0oxRW5PaUFuS2s1YlEwQkFTRjBvUTBOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBRbk9pQW5LbHREUUVCSVhTaERReWhQS1QxUEtTb25MRnh1SUNBZ0lDZE9Kem9nSnlwYlEwQkFTRjBvUTBNb1RpazlUeWtxSnl4Y2JpQWdJQ0FuUmljNklDZERNVDFEUXoxREtFTTlRekVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5RU2M2SUNkRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblN5YzZJQ2RES0VORFRpbERReWdxS1NvbkxGeHVJQ0FnSUNkU0p6b2dKeXBiUTBCSVhTaERRME5PUXlnOVRpbERLU29uTEZ4dUlDQWdJQ2RJSnpvZ0owTXhQVU1vVGtNOVRqRXBRME1vS2lrcUp5eGNiaUFnSUNBblF5YzZJQ2RES0Z0RFFFQklYU2dxS1NvcFV5Y3NYRzRnSUNBZ0oxWW5PaUFuUTBNb1F5bERLQ29wS2ljc1hHNGdJQ0FnSjFBbk9pQW5RekZEUTA0b0tpbERNU29uTEZ4dUlDQWdJQ2RYSnpvZ0p5cGJRMEJBU0Ywb1EyTXhZekpqWTJOall6SnVLRnRJWFNsak1Ta3FKeXhjYmlBZ0lDQW5TU2M2SUNkRFExdERRRWhkS0VNcFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblRTYzZJQ2REVTBORFF5Z3FLU29uTEZ4dUlDQWdJQ2RVSnpvZ0owTkRLRThwUXlncUtTb25MRnh1SUNCOU8xeHVYRzRnSUM4cUtpQlVUMFJQT2lCR2RXeHNQMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVVoxYkd4T1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUVd4aEp6b2dKMEVuTEZ4dUlDQWdJQ2RCY21jbk9pQW5VaWNzWEc0Z0lDQWdKMEZ6YmljNklDZE9KeXhjYmlBZ0lDQW5RWE53SnpvZ0owUW5MRnh1SUNBZ0lDZERlWE1uT2lBblF5Y3NYRzRnSUNBZ0owZHNiaWM2SUNkUkp5eGNiaUFnSUNBblIyeDFKem9nSjBVbkxGeHVJQ0FnSUNkSGJIa25PaUFuUnljc1hHNGdJQ0FnSjBocGN5YzZJQ2RJSnl4Y2JpQWdJQ0FuU1d4bEp6b2dKMGtuTEZ4dUlDQWdJQ2RNWlhVbk9pQW5UQ2NzWEc0Z0lDQWdKMHg1Y3ljNklDZExKeXhjYmlBZ0lDQW5UV1YwSnpvZ0owMG5MRnh1SUNBZ0lDZFFhR1VuT2lBblJpY3NYRzRnSUNBZ0oxQnlieWM2SUNkUUp5eGNiaUFnSUNBblUyVnlKem9nSjFNbkxGeHVJQ0FnSUNkVWFISW5PaUFuVkNjc1hHNGdJQ0FnSjFSeWNDYzZJQ2RYSnl4Y2JpQWdJQ0FuVkhseUp6b2dKMWtuTEZ4dUlDQWdJQ2RXWVd3bk9pQW5WaWNzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSUVlXeGxkSFJsS0hOamFHVnRaVG9nYzNSeWFXNW5JRDBnSjJkeWIyc25LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WTJobGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkbmNtOXJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQmpZWE5sSUNkc1pYTnJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVUR1Z6YXp0Y2JpQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkRhR1Z0VUdGc1pYUjBaVG9nYzJOb1pXMWxJRnhjWUNSN2MyTm9aVzFsZlZ4Y1lDQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBkbWxrWldRZ1lXMXBibThnWVdOcFpDQjNhWFJvSUdsMGN5QmpiMjUwWlc1MElHbHVJSFJvWlNCaWNtRmphMlYwTENCcFppQjBhR1VnWTI5dWRHVnVkQ0JwY3lCdWRXMWlaWElzSUhSb1pXNGdhWFJ6SUc5dGFYUjBaV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdNZ2NtRjNJR0Z0YVc1dlhHNGdJQ0FxSUVCeVpYUjFjbTRnZTF0emRISnBibWNzSUhOMGNtbHVaMTE5SUc5MWRHVnlJR0Z1WkNCcGJtNWxjaUJqYjI1MFpXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRWx1Ym1WeVQzVjBaWElvWXpvZ2MzUnlhVzVuS1RvZ1czTjBjbWx1Wnl3Z2MzUnlhVzVuWFNCN1hHNGdJQ0FnYkdWMElHbHpTVzV1WlhJZ1BTQXdPMXh1SUNBZ0lHeGxkQ0JwYm01bGNpQTlJQ2NuTzF4dUlDQWdJR3hsZENCdmRYUmxjaUE5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR0Z5SUc5bUlHTXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHRnlJRDA5SUNjb0p5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpc3JPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmhoY2lBOVBTQW5LU2NwWEc0Z0lDQWdJQ0FnSUdselNXNXVaWEl0TFR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dselNXNXVaWElwWEc0Z0lDQWdJQ0FnSUdsdWJtVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUc5MWRHVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNGcGMwNWhUaWh3WVhKelpVbHVkQ2hwYm01bGNpa3BJRDhnVzI5MWRHVnlMQ0FuSjEwZ09pQmJiM1YwWlhJc0lHbHVibVZ5WFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFEyOXNiM0pCUVZCcGRtOTBLRzF2Ym05dFpYSTZJSE4wY21sdVp5QTlJQ2NuTENCelkyaGxiV1U2SUNkbmNtOXJKeUE5SUNkbmNtOXJKeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaeXdnYzNSeWFXNW5MQ0J1ZFcxaVpYSmRJSHRjYmlBZ0lDQXZMMk52Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0JCUVZCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNb0tUdGNiaUFnSUNCamIyNXpkQ0JqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQwZ2RHaHBjeTVuWlhSUVlXeGxkSFJsS0hOamFHVnRaU2s3WEc0Z0lDQWdiR1YwSUZ0dmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2wwZ1BTQjBhR2x6TG1kbGRFbHVibVZ5VDNWMFpYSW9iVzl1YjIxbGNpazdYRzRnSUNBZ2IzVjBaWEpOYjI1dmJXVnlJRDBnS0c5MWRHVnlUVzl1YjIxbGNpNXNaVzVuZEdnZ1BpQTJJRDhnWUNSN2IzVjBaWEpOYjI1dmJXVnlMbk5zYVdObEtEQXNJRE1wZlM0dUxtQWdPaUJ2ZFhSbGNrMXZibTl0WlhJcE8xeHVJQ0FnSUdsdWJtVnlUVzl1YjIxbGNpQTlJQ2hwYm01bGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTJsdWJtVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2dhVzV1WlhKTmIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXhJSHg4SUcxdmJtOXRaWEpiTVYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNRjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F4WFNBNlhHNGdJQ0FnSUNBZ0lGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHMXZibTl0WlhKYk1GMGdQVDBnSjJRbklDWW1JRzF2Ym05dFpYSmJNVjBoSUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeUlIeDhJRzF2Ym05dFpYSmJNbDBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdiVzl1YjIxbGNsc3hYVDh1ZEc5VmNIQmxja05oYzJVb0tTRTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTUN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJdWJHVnVaM1JvSUQwOUlETWdmSHdnYlc5dWIyMWxjbHN6WFNBOVBTQW5LQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcFhUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObExtZGxkQ2hoYldsdWJ5a3NJR0Z0YVc1dkxDQnBibTVsY2sxdmJtOXRaWElzSUROZElEcGNiaUFnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlXekJkUHk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUcxdmJtOXRaWEpiTUYwcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektTQnBiaUIwYUdsekxrRkJSblZzYkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQTBJSHg4SUcxdmJtOXRaWEpiTkYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0EwWFNBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lEUmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTUYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJywgJ1UnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG59XG5OdWNsZW90aWRlcy5TZW1UeXBlID0gJ051Y2xlb3RpZGVzJztcbk51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50Jztcbk51Y2xlb3RpZGVzLk5hbWVzID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJuVmpiR1Z2ZEdsa1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKdWRXTnNaVzkwYVdSbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZMUVN4UFFVRlBMRVZCUVdFc1kwRkJZeXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZNVVFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHTkJRV003U1VGSE9VTXNUVUZCVFN4TFFVRkxMRmxCUVZrN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXp0blFrRkRNVU1zUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFMUJRVTA3WjBKQlExZ3NSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRTFCUVUwN1lVRkRha0lzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExGZEJRVmM3TzBGQlEwNHNiVUpCUVU4c1IwRkJWeXhoUVVGaExFTkJRVU03UVVGRmFFTXNiME5CUVhkQ0xFZEJRVmNzT0VKQlFUaENMRU5CUVVNN1FVRkZjRVVzYVVKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVVVGQlVUdERRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTm9jbTl0WVhSdlozSmhiVG9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JEYUhKdmJXRjBiMmR5WVcwb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMGdibVYzSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNb2UxeHVJQ0FnSUNBZ0lDQW5RU2M2SUNkbmNtVmxiaWNzWEc0Z0lDQWdJQ0FnSUNkREp6b2dKMkpzZFdVbkxGeHVJQ0FnSUNBZ0lDQW5SeWM2SUNkaWJHRmpheWNzSUM4dklHOXlZVzVuWlNBL1hHNGdJQ0FnSUNBZ0lDZFVKem9nSjNKbFpDY3NJQ2RWSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBblozSmhlU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTJoeWIyMWhkRzluY21GdE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT2RXTnNaVzkwYVdSbGN5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuVG5WamJHVnZkR2xrWlhNbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlLCBQYWxldHRlVHlwZSA9IFNlcVBhbGV0dGVCYXNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWxldHRlVHlwZShwYWxldHRlKTtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVbbV07XG4gICAgfVxufVxuLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnNcbiAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdsQ1FTeE5RVUZOTEU5QlFVOHNZMEZCWXp0SlFUQkRla0lzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJiRUpUTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJkMElzUlVGRGJrUXNWVUZCVlN4SFFVRkhMRXRCUVVzc1JVRkJSU3hqUVVGeFF5eGpRVUZqTzFGQlJYWkZMRTFCUVUwc1QwRkJUeXhIUVVFNFFpeEZRVUZGTEVOQlFVTTdVVUZET1VNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0blFrRkRNMElzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGUlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6czdRVUV2UTBRN1IwRkRSenRCUVVOWExEUkNRVUZoTEVkQlFXZERPMGxCUTNwRUxGRkJRVkVzUlVGQlJTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRE8wbEJRekZHTEZkQlFWY3NSVUZCUlN4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RanRSUVVOd1J5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeHZRa0ZCYjBJc1EwRkJRenRKUVVOdVJpeFZRVUZWTEVWQlFVVXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1VVRkRMMGNzYlVKQlFXMUNMRU5CUVVNN1NVRkRkRUlzVTBGQlV5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZEZGtVc1MwRkJTeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETjBNc1UwRkJVeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03U1VGRGNrVXNWMEZCVnl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRGNrUXNXVUZCV1N4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZET1VZc1dVRkJXU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRE1VVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZEVZc1QwRkJUeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZETjBNc1lVRkJZU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGREwwVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZUVZc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1NVRkROVUlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRMME1zVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGRE1VWXNVVUZCVVN4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTVUZETjBJc1QwRkJUeXhGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1EwRkRPVUlzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDOHZJRlJvWlhKbElHRnlaU0IwYjI4Z2JYVmphQ0J3Y205aWJHVnRJSGRwZEdnZ2FXNWtaWGhsY2lCd2NtOXdaWEowZVNCcGJpQjBlWEJsYzJOeWFYQjBMbHh1SUNBdkx5QXZLaXBjYmlBZ0x5OGdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzBnVFc5dWIyMWxjaUJqYUdGeVlXTjBaWEpjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JEYjJ4dmNseHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp6dGNiaUFnTHlvcUlFMXZibTl0WlhJZ1kyOXNiM0pjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNseHVJQ0FnS2k5Y2JpQWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGTmxjVkJoYkdWMGRHVkNZWE5sSUdsdGNHeGxiV1Z1ZEhNZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUM4cUtpQlFZV3hsZEhSbElIZHBkR2dnYzJoaFpHVnpJRzltSUhCeWFXMWhjbmtnWTI5c2IzSnpYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHTnZiRzkxY2xCaGJHVjBkR1U2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5XMTBnZlNBOUlIdGNiaUFnSUNBbmIzSmhibWRsSnpvZ1d5ZHlaMklvTWpVMUxERTROeXd4TWpBcEp5d2dKM0puWWlneU5EVXNNVFkzTERFd01Da25MQ0FuY21kaUtESXpOU3d4TXpjc056QXBKeXdnSjNKbllpZ3lNRFVzSURFeE1Td2dOekVwSjEwc1hHNGdJQ0FnSjJGc2JGOW5jbVZsYmljNklGc25jbWRpS0RRMExERTJNQ3cwTkNrbkxDQW5jbWRpS0RjMExERTJNQ3czTkNrbkxDQW5jbWRpS0RJekxERXdNeXcxTnlrbkxDQW5jbWRpS0RNd0xERXhNQ3c1TmlrbkxDQW5jbWRpS0RZd0xERXpNU3c1TlNrbkxGeHVJQ0FnSUNBZ0ozSm5ZaWd5TkN3eE1UQXNOemtwSnl3Z0ozSm5ZaWd4TlRJc01qSXpMREV6T0NrbkxDQW5jbWRpS0RFNE1pd2dNakl6TENBeE16Z3BKeXdnSjNKbllpZ3hOVElzSURFNU15d2dNVE00S1NkZExGeHVJQ0FnSUNkaGJHeGZZbXgxWlNjNklGc25jbWRpS0RNeExERXhPU3d4T0RBcEp5d2dKM0puWWlneU15d3hPVEFzTWpBM0tTY3NJQ2R5WjJJb01USXlMQ0F4TURJc0lERTRPU2tuTENBbmNtZGlLREUxT0N3eU1UZ3NNakk1S1Njc0lDZHlaMklvTVRReExDQXhNalFzSURJeE55a25MRnh1SUNBZ0lDQWdKM0puWWlnek1Td2dNVEl3TENBeE5UQXBKMTBzWEc0Z0lDQWdKMjFoWjJWdWRHRW5PaUJiSjNKbllpZ3hOaklzTVRBMkxERTVNaWtuTENBbmNtZGlLREU1Tnl3eE5qVXNNakkwS1Njc0lDZHlaMklvTWpBNExERXhNeXd5TVRncEoxMHNYRzRnSUNBZ0ozSmxaQ2M2SUZzbmNtZGlLREl4TkN3ek9TdzBNQ2tuTENBbmNtZGlLREkxTlN3eE5USXNNVFV3S1NkZExGeHVJQ0FnSUNkemRGOWliSFZsSnpvZ1d5ZHlaMklvTWpNc01Ua3dMREl3TnlrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb016RXNNVEU1TERFNE1Da25YU3hjYmlBZ0lDQW5aR0Z5YTE5aWJIVmxKem9nV3lkeVoySW9NekVzTVRFNUxERTRNQ2tuTENBbmNtZGlLRE14TENBeE1qQXNJREUxTUNrblhTeGNiaUFnSUNBbmJHbG5hSFJmWW14MVpTYzZJRnNuY21kaUtESXpMREU1TUN3eU1EY3BKeXdnSjNKbllpZ3hOVGdzTWpFNExESXlPU2tuTENBbmNtZGlLREV3T0N3Z01qRTRMQ0F5TWprcEp5d2dKM0puWWlneU15d3hPVEFzTWpJM0tTZGRMRnh1SUNBZ0lDZHNhV3hoWTE5aWJIVmxKem9nV3lkeVoySW9NVEkwTERFd01pd3lNVEVwSnl3Z0ozSm5ZaWd4TkRrc01UTTBMREl4TnlrbkxDQW5jbWRpS0RrM0xDQTRNU3dnTVRVd0tTZGRMRnh1SUNBZ0lDZGtZWEpyWDJkeVpXVnVKem9nV3lkeVoySW9Nak1zTVRBekxEVTNLU2NzSUNkeVoySW9NekFzTVRFd0xEazJLU2NzSUNkeVoySW9OakFzTVRNeExEazFLU2NzSUNkeVoySW9NalFzTVRFd0xEYzVLU2RkTEZ4dUlDQWdJQ2RuY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZlozSmxaVzRuT2lCYkozSm5ZaWd4TlRJc01qSXpMREV6T0NrbkxDQW5jbWRpS0RFNE1pd2dNakl6TENBeE16Z3BKeXdnSjNKbllpZ3hOVElzSURFNU15d2dNVE00S1NkZExGeHVJQ0FnSUNkemRGOW5jbVZsYmljNklGc25jbWRpS0RRMExERTJNQ3cwTkNrbkxDQW5jbWRpS0RFMU1pd3lNak1zTVRNNEtTY3NJQ2R5WjJJb016a3NJREUzTkN3Z09UWXBKeXdnSjNKbllpZzNOQ3d4TmpBc056UXBKMTBzWEc0Z0lDQWdKM0JwYm1zbk9pQmJKM0puWWlneU5EY3NNVGd5TERJeE1Da25YU3hjYmlBZ0lDQW5Zbkp2ZDI0bk9pQmJKM0puWWlneE5EQXNPRFlzTnpVcEp5d2dKM0puWWlneE1ESXNJRFl5TENBMU5Da25YU3hjYmlBZ0lDQW5aM0poZVNjNklGc25jbWRpS0RFeU55d3hNamNzTVRJM0tTY3NJQ2R5WjJJb01UazVMREU1T1N3eE9Ua3BKeXdnSjNKbllpZ3hPVFlzTVRVMkxERTBPQ2tuTENBbmNtZGlLREl5TWl3Z01qSXlMQ0F4T0RBcEoxMHNYRzRnSUNBZ0ozbGxiR3h2ZHljNklGc25jbWRpS0RFNE9Dd3hPRGtzTXpRcEoxMHNYRzRnSUNBZ0ozZG9hWFJsSnpvZ1d5ZHlaMklvTWpNd0xESXpNQ3d5TXpBcEoxMHNYRzRnSUgwN1hHNWNiaUFnY0hKdmRHVmpkR1ZrSUhOMFlYUnBZeUJ0WVd0bFVHRnNaWFIwWlNoa2REb2dXM04wY21sdVoxdGRMQ0J6ZEhKcGJtZGRXMTBzWEc0Z0lDQWdjMmx0Y0d4cFptbGxaQ0E5SUdaaGJITmxMQ0JRWVd4bGRIUmxWSGx3WlRvZ2RIbHdaVzltSUZObGNWQmhiR1YwZEdWQ1lYTmxJRDBnVTJWeFVHRnNaWFIwWlVKaGMyVmNiaUFnS1NCN1hHNGdJQ0FnWTI5dWMzUWdjR0ZzWlhSMFpUb2dleUJiYTJWNU9pQnpkSEpwYm1kZE9pQnpkSEpwYm1jZ2ZTQTlJSHQ5TzF4dUlDQWdJR1IwTG1admNrVmhZMmdvS0dOd0tTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnZZbXBNYVhOMElEMGdZM0JiTUYwN1hHNGdJQ0FnSUNCamIyNXpkQ0JqYjJ4dmRYSWdQU0JqY0ZzeFhUdGNiaUFnSUNBZ0lHOWlha3hwYzNRdVptOXlSV0ZqYUNnb2IySnFMQ0JwYm1RcElEMCtJSHRjYmlBZ0lDQWdJQ0FnY0dGc1pYUjBaVnR2WW1wZElEMGdkR2hwY3k1amIyeHZkWEpRWVd4bGRIUmxXMk52Ykc5MWNsMWJjMmx0Y0d4cFptbGxaQ0EvSURBZ09pQnBibVJkTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlNrN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCUVlXeGxkSFJsVkhsd1pTaHdZV3hsZEhSbEtUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYM0JoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOU8xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtIQmhiR1YwZEdVNklIc2dXMjA2SUhOMGNtbHVaMTA2SUhOMGNtbHVaeUI5S1NCN1hHNGdJQ0FnZEdocGN5NWZjR0ZzWlhSMFpTQTlJSEJoYkdWMGRHVTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzQmhiR1YwZEdWYmJWMDdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmNsYXNzIFNpZGVDaGFpblNjYWxlcyB7XG4gICAgc3RhdGljIGdldEF2YWlsYWJsZVNjYWxlcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuc2NhbGVzKS5tYXAoKFtrLCBfXSkgPT4gayk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXRTY2FsZShuYW1lKSB7XG4gICAgICAgIGFzc2VydCghKHRoaXMuc2NhbGVzW25hbWVdID09PSB1bmRlZmluZWQpLCBgU2NhbGUgJyR7bmFtZX0nIHdhcyBub3QgZm91bmQuYCk7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlc1tuYW1lXTtcbiAgICB9XG59XG5TaWRlQ2hhaW5TY2FsZXMuc2NhbGVzID0ge1xuICAgIC8vIFdpbWxleS1XaGl0ZSBpbnRlcmZhY2lhbCBoeWRyb3Bob2JpY2l0eSBzY2FsZVxuICAgICdXaW1sZXlXaGl0ZSc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDAuMTcsXG4gICAgICAgICdDJzogLTAuMjQsXG4gICAgICAgICdEJzogLTAuMDcsXG4gICAgICAgICdFJzogLTAuMDEsXG4gICAgICAgICdGJzogLTEuMTMsXG4gICAgICAgICdHJzogMC4wMSxcbiAgICAgICAgJ0gnOiAwLjE3LFxuICAgICAgICAnSSc6IC0wLjMxLFxuICAgICAgICAnSyc6IDAuOTksXG4gICAgICAgICdMJzogLTAuNTYsXG4gICAgICAgICdNJzogLTAuMjMsXG4gICAgICAgICdOJzogMC40MixcbiAgICAgICAgJ1AnOiAwLjQ1LFxuICAgICAgICAnUSc6IDAuNTgsXG4gICAgICAgICdSJzogMC44MSxcbiAgICAgICAgJ1MnOiAwLjEzLFxuICAgICAgICAnVCc6IDAuMTQsXG4gICAgICAgICdWJzogMC4wNyxcbiAgICAgICAgJ1cnOiAtMS44NSxcbiAgICAgICAgJ1knOiAtMC45NCxcbiAgICB9LFxuICAgICdjYXRlZ29yaWFsJzoge1xuICAgICAgICAnLSc6IDAsXG4gICAgICAgICdBJzogMSxcbiAgICAgICAgJ0MnOiAyLFxuICAgICAgICAnRCc6IDMsXG4gICAgICAgICdFJzogNCxcbiAgICAgICAgJ0YnOiA1LFxuICAgICAgICAnRyc6IDYsXG4gICAgICAgICdIJzogNyxcbiAgICAgICAgJ0knOiA4LFxuICAgICAgICAnSyc6IDksXG4gICAgICAgICdMJzogMTAsXG4gICAgICAgICdNJzogMTEsXG4gICAgICAgICdOJzogMTIsXG4gICAgICAgICdQJzogMTMsXG4gICAgICAgICdRJzogMTQsXG4gICAgICAgICdSJzogMTUsXG4gICAgICAgICdTJzogMTYsXG4gICAgICAgICdUJzogMTcsXG4gICAgICAgICdWJzogMTgsXG4gICAgICAgICdXJzogMTksXG4gICAgICAgICdZJzogMjAsXG4gICAgfSxcbn07XG4vKipcbiAqIENsYXNzIHRvIGNhdGVnb3JpYWwgZW5jb2RlL2RlY29kZSBhbGlnbmVkIGFtaW5vIGFjaWQgcmVzaWR1ZXMgc2VxdWVuY2UuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWduZWRTZXF1ZW5jZUVuY29kZXIge1xuICAgIGNvbnN0cnVjdG9yKHNjYWxlID0gJ2NhdGVnb3JpYWwnKSB7XG4gICAgICAgIHRoaXMuYWEybnVtID0gU2lkZUNoYWluU2NhbGVzLmdldFNjYWxlKHNjYWxlKTtcbiAgICAgICAgdGhpcy5udW0yYWEgPSB7fTtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5hYTJudW0pLmZvckVhY2goKFtrLCB2XSkgPT4gKHRoaXMubnVtMmFhW3ZdID0gaykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIFRydW5jYXRlIE5IMiBhbmQgLUNPT0ggdGVybWluYWxzIG9mIHRoZSBnaXZlbiBzZXF1ZW5jZS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxIFRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gVHJ1bmNhdGVkIHNlcXVlbmNlLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBfdHJ1bmNhdGVTZXF1ZW5jZShzZXEpIHtcbiAgICAgICAgbGV0IHN0YXJ0ID0gMDtcbiAgICAgICAgbGV0IGVuZCA9IHNlcS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRlcm1pbmEgPSBbJ05IMicsICdDT09IJ107XG4gICAgICAgIGlmIChzZXEuc3RhcnRzV2l0aCh0ZXJtaW5hWzBdKSkge1xuICAgICAgICAgICAgY29uc3QgbCA9IHRlcm1pbmFbMF0ubGVuZ3RoOyAvLyBDdXQgb25seSAnTkgyJyB3aXRob3V0IGZvbGxvd2luZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2xdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzBdfSB3aXRob3V0IGZvbGxvd2luZyAnLScgaW4gJyR7c2VxfScuYCk7XG4gICAgICAgICAgICBzdGFydCA9IGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcS5lbmRzV2l0aCh0ZXJtaW5hWzFdKSkge1xuICAgICAgICAgICAgY29uc3QgbCA9IHRlcm1pbmFbMV0ubGVuZ3RoICsgMTsgLy8gQ3V0IGJvdGggJ0NPT0gnIGFuZCBwcmVjZW5kaW5nICctJy5cbiAgICAgICAgICAgIGFzc2VydChzZXFbZW5kIC0gbF0gPT0gJy0nLCBgV3Jvbmcgc2VxdWVuY2UgZm9ybWF0OiAke3Rlcm1pbmFbMV19IHdpdGhvdXQgJy0nIHByZWNlbmRpbmcgaW4gJyR7c2VxfScuYCk7XG4gICAgICAgICAgICBlbmQgLT0gbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VxLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBDdXRzIGF1eGlsaWFyeSBkZWZpc2VzIGJlZm9yZSBhIHJlc2lkdWUuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgdG8gcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUHJvY2Vzc2VkIHNlcXVlbmNlLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBfZHJvcERlZmlzZXMoc2VxKSB7XG4gICAgICAgIHJldHVybiBzZXEucmVwbGFjZSgvKC0pKFteLV0rKS9nLCAnJDInKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBQZXJmb3JtcyB0cnVuY2F0aW9uIGFuZCBjdXR0aW5nIGF1eGlsaWFyeSBkZWZpc2VzLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXF1ZW5jZSBUaGUgc2VxdWVuY2Ugd29yayB1bmRlciBwcm9jZXNzLlxuICAgICAgICogQHJldHVybiB7c3RyaW5nfSBSZXN1bHQgb2YgY2xlYW5pbmcuXG4gICAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICAgICAgICovXG4gICAgc3RhdGljIGNsZWFuKHNlcXVlbmNlKSB7XG4gICAgICAgIHJldHVybiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyLl9kcm9wRGVmaXNlcyhBbGlnbmVkU2VxdWVuY2VFbmNvZGVyLl90cnVuY2F0ZVNlcXVlbmNlKHNlcXVlbmNlKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ2F0ZWdvcmlhbCBlbmNvZGUgb2YgdGhlIHNlcXVlbmNlIHByb3ZpZGVkLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXF1ZW5jZSBUaGUgc2VxdWVuY2UuXG4gICAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gRW5jb2RlZCB2ZWN0b3IuXG4gICAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICAgICAgICovXG4gICAgZW5jb2RlKHNlcXVlbmNlKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHNlcXVlbmNlLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gbmV3IEFycmF5KG5JdGVtcykuZmlsbCgwKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IHNlcXVlbmNlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNoYXIgaW4gdGhpcy5hYTJudW0sIGBVbmtub3duIGNoYXIgJyR7Y2hhcn0nIGZvdW5kIGluIHNlcXVlbmNlICcke3NlcXVlbmNlfSdgKTtcbiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHRoaXMuZW5jb2RlTGV0dHRlcihjaGFyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cbiAgICBlbmNvZGVMZXR0dGVyKGxldHRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hYTJudW1bbGV0dGVyXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBEZWNvZGUgdGhlIGVuY29kZWQgdmVjdG9yIGludG8gdGhlIHNlcXVlbmNlIGJhY2suXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtudW1iZXJbXX0gdmFsdWUgVGhlIHZlY3RvciBlbmNvZGVkLlxuICAgICAgICogQHJldHVybiB7c3RyaW5nfSBEZWNvZGVkIHNlcXVlbmNlLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGRlY29kZSh2YWx1ZSkge1xuICAgICAgICBsZXQgcyA9ICcnO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gdmFsdWVbaV07XG4gICAgICAgICAgICBhc3NlcnQoY29kZSBpbiB0aGlzLm51bTJhYSwgYFVua25vd24gY29kZSAnJHtjb2RlfScgZm91bmQgaW4gdmVjdG9yICcke3ZhbHVlfSdgKTtcbiAgICAgICAgICAgIHMgKz0gdGhpcy5udW0yYWFbY29kZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWeGRXVnVZMlV0Wlc1amIyUmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluTmxjWFZsYm1ObExXVnVZMjlrWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVUZETEUxQlFVMHNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlMzWkZMRTFCUVUwc1pVRkJaVHRKUVcxRWJrSXNUVUZCVFN4RFFVRkRMR3RDUVVGclFqdFJRVU4yUWl4UFFVRlBMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UkN4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZaTzFGQlF6RkNMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhUUVVGVExFTkJRVU1zUlVGQlJTeFZRVUZWTEVsQlFVa3NhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVU0zUlN4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBJc1EwRkJRenM3UVVGNlJFMHNjMEpCUVUwc1IwRkJOa0k3U1VGRGVFTXNaMFJCUVdkRU8wbEJRMmhFTEdGQlFXRXNSVUZCUlR0UlFVTmlMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0UlFVTldMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWs3VVVGRFZpeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWs3VVVGRFZpeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWs3VVVGRFZpeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1NVRkJTVHRSUVVOVUxFZEJRVWNzUlVGQlJTeEpRVUZKTzFGQlExUXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTVHRMUVVOWU8wbEJRMFFzV1VGQldTeEZRVUZGTzFGQlExb3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMHRCUTFJN1EwRkRSaXhEUVVGRE8wRkJXVW83T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEU5QlFVOHNjMEpCUVhOQ08wbEJTV3BETEZsQlFWa3NVVUZCWjBJc1dVRkJXVHRSUVVOMFF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZET1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEYWtJc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaEZMRU5CUVVNN1NVRkZSRHM3T3pzN096dFRRVTlMTzBsQlEwd3NUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVkQlFWYzdVVUZEYkVNc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU55UWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVVm9ReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRE9VSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMSGREUVVGM1F6dFpRVU55UlN4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlN3d1FrRkJNRUlzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3NFFrRkJPRUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTnFSeXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlExZzdVVUZEUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkROVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4elEwRkJjME03V1VGRGNrVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMREJDUVVFd1FpeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMQ3RDUVVFclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNSSExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEVmp0UlFVTkVMRTlCUVU4c1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRia01zUTBGQlF6dEpRVVZFT3pzN096czdPMU5CVDBzN1NVRkRUQ3hOUVVGTkxFTkJRVU1zV1VGQldTeERRVUZETEVkQlFWYzdVVUZETjBJc1QwRkJUeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUTdPenM3T3pzN1UwRlBTenRKUVVOTUxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCWjBJN1VVRkRNMElzVDBGQlR5eHpRa0ZCYzBJc1EwRkJReXhaUVVGWkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOcVJ5eERRVUZETzBsQlJVUTdPenM3T3p0VFFVMUxPMGxCUTBVc1RVRkJUU3hEUVVGRExGRkJRV2RDTzFGQlF6VkNMRTFCUVUwc1RVRkJUU3hIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETDBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGREwwSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJYcENMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4cFFrRkJhVUlzU1VGQlNTeDNRa0ZCZDBJc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVVYwUml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVOMFF6dFJRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMGxCUTJoQ0xFTkJRVU03U1VGRlRTeGhRVUZoTEVOQlFVTXNUVUZCWXp0UlFVTnFReXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkROMElzUTBGQlF6dEpRVVZFT3pzN096czdVMEZOU3p0SlFVTkZMRTFCUVUwc1EwRkJReXhMUVVGbE8xRkJRek5DTEVsQlFVa3NRMEZCUXl4SFFVRlhMRVZCUVVVc1EwRkJRenRSUVVWdVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOeVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRmRFSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEdsQ1FVRnBRaXhKUVVGSkxITkNRVUZ6UWl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJSV3BHTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzaENPMUZCUTBRc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRFdDeERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMkZ6YzJWeWRIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1WEc1MGVYQmxJRk5wWkdWRGFHRnBibE5qWVd4bElEMGdlMXR1WVcxbE9pQnpkSEpwYm1kZE9pQnVkVzFpWlhKOU8xeHVkSGx3WlNCVGFXUmxRMmhoYVc1VFkyRnNaVU52Ykd4bFkzUnBiMjRnUFNCN1cyNWhiV1U2SUhOMGNtbHVaMTA2SUZOcFpHVkRhR0ZwYmxOallXeGxmVHRjYmx4dVkyeGhjM01nVTJsa1pVTm9ZV2x1VTJOaGJHVnpJSHRjYmlBZ2MzUmhkR2xqSUhOallXeGxjem9nVTJsa1pVTm9ZV2x1VTJOaGJHVkRiMnhzWldOMGFXOXVJRDBnZTF4dUlDQWdJQzh2SUZkcGJXeGxlUzFYYUdsMFpTQnBiblJsY21aaFkybGhiQ0JvZVdSeWIzQm9iMkpwWTJsMGVTQnpZMkZzWlZ4dUlDQWdJQ2RYYVcxc1pYbFhhR2wwWlNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNQzR4Tnl4Y2JpQWdJQ0FnSUNkREp6b2dMVEF1TWpRc1hHNGdJQ0FnSUNBblJDYzZJQzB3TGpBM0xDQXZMeUJCYzNBdE9pQXhMakl6WEc0Z0lDQWdJQ0FuUlNjNklDMHdMakF4TENBdkx5QkhiSFV0T2lBeUxqQXlYRzRnSUNBZ0lDQW5SaWM2SUMweExqRXpMQ0F2TDF4dUlDQWdJQ0FnSjBjbk9pQXdMakF4TEZ4dUlDQWdJQ0FnSjBnbk9pQXdMakUzTENBdkx5QklhWE1yT2lBd0xqazJYRzRnSUNBZ0lDQW5TU2M2SUMwd0xqTXhMRnh1SUNBZ0lDQWdKMHNuT2lBd0xqazVMQ0F2THlCTWVYTXJYRzRnSUNBZ0lDQW5UQ2M2SUMwd0xqVTJMRnh1SUNBZ0lDQWdKMDBuT2lBdE1DNHlNeXhjYmlBZ0lDQWdJQ2RPSnpvZ01DNDBNaXhjYmlBZ0lDQWdJQ2RRSnpvZ01DNDBOU3hjYmlBZ0lDQWdJQ2RSSnpvZ01DNDFPQ3hjYmlBZ0lDQWdJQ2RTSnpvZ01DNDRNU3dnTHk4Z1FYSm5LMXh1SUNBZ0lDQWdKMU1uT2lBd0xqRXpMRnh1SUNBZ0lDQWdKMVFuT2lBd0xqRTBMRnh1SUNBZ0lDQWdKMVluT2lBd0xqQTNMRnh1SUNBZ0lDQWdKMWNuT2lBdE1TNDROU3hjYmlBZ0lDQWdJQ2RaSnpvZ0xUQXVPVFFzWEc0Z0lDQWdmU3hjYmlBZ0lDQW5ZMkYwWldkdmNtbGhiQ2M2SUh0Y2JpQWdJQ0FnSUNjdEp6b2dNQ3hjYmlBZ0lDQWdJQ2RCSnpvZ01TeGNiaUFnSUNBZ0lDZERKem9nTWl4Y2JpQWdJQ0FnSUNkRUp6b2dNeXhjYmlBZ0lDQWdJQ2RGSnpvZ05DeGNiaUFnSUNBZ0lDZEdKem9nTlN4Y2JpQWdJQ0FnSUNkSEp6b2dOaXhjYmlBZ0lDQWdJQ2RJSnpvZ055eGNiaUFnSUNBZ0lDZEpKem9nT0N4Y2JpQWdJQ0FnSUNkTEp6b2dPU3hjYmlBZ0lDQWdJQ2RNSnpvZ01UQXNYRzRnSUNBZ0lDQW5UU2M2SURFeExGeHVJQ0FnSUNBZ0owNG5PaUF4TWl4Y2JpQWdJQ0FnSUNkUUp6b2dNVE1zWEc0Z0lDQWdJQ0FuVVNjNklERTBMRnh1SUNBZ0lDQWdKMUluT2lBeE5TeGNiaUFnSUNBZ0lDZFRKem9nTVRZc1hHNGdJQ0FnSUNBblZDYzZJREUzTEZ4dUlDQWdJQ0FnSjFZbk9pQXhPQ3hjYmlBZ0lDQWdJQ2RYSnpvZ01Ua3NYRzRnSUNBZ0lDQW5XU2M2SURJd0xGeHVJQ0FnSUgwc1hHNGdJSDA3WEc1Y2JpQWdjM1JoZEdsaklHZGxkRUYyWVdsc1lXSnNaVk5qWVd4bGN5Z3BPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVjMk5oYkdWektTNXRZWEFvS0Z0ckxDQmZYU2tnUFQ0Z2F5azdYRzRnSUgxY2JseHVJQ0J6ZEdGMGFXTWdaMlYwVTJOaGJHVW9ibUZ0WlRvZ2MzUnlhVzVuS1RvZ1UybGtaVU5vWVdsdVUyTmhiR1VnZTF4dUlDQWdJR0Z6YzJWeWRDZ2hLSFJvYVhNdWMyTmhiR1Z6VzI1aGJXVmRJRDA5UFNCMWJtUmxabWx1WldRcExDQmdVMk5oYkdVZ0p5UjdibUZ0WlgwbklIZGhjeUJ1YjNRZ1ptOTFibVF1WUNrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMyTmhiR1Z6VzI1aGJXVmRPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nUTJ4aGMzTWdkRzhnWTJGMFpXZHZjbWxoYkNCbGJtTnZaR1V2WkdWamIyUmxJR0ZzYVdkdVpXUWdZVzFwYm04Z1lXTnBaQ0J5WlhOcFpIVmxjeUJ6WlhGMVpXNWpaUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2lCN1hHNGdJSEJ5YjNSbFkzUmxaQ0JoWVRKdWRXMDZJRk5wWkdWRGFHRnBibE5qWVd4bE8xeHVJQ0J3Y205MFpXTjBaV1FnYm5WdE1tRmhPaUI3VzJOdlpHVTZJRzUxYldKbGNsMDZJSE4wY21sdVozMDdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9jMk5oYkdVNklITjBjbWx1WnlBOUlDZGpZWFJsWjI5eWFXRnNKeWtnZTF4dUlDQWdJSFJvYVhNdVlXRXliblZ0SUQwZ1UybGtaVU5vWVdsdVUyTmhiR1Z6TG1kbGRGTmpZV3hsS0hOallXeGxLVHRjYmlBZ0lDQjBhR2x6TG01MWJUSmhZU0E5SUh0OU8xeHVJQ0FnSUU5aWFtVmpkQzVsYm5SeWFXVnpLSFJvYVhNdVlXRXliblZ0S1M1bWIzSkZZV05vS0NoYmF5d2dkbDBwSUQwK0lDaDBhR2x6TG01MWJUSmhZVnQyWFNBOUlHc3BLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnSUNBcUlGUnlkVzVqWVhSbElFNUlNaUJoYm1RZ0xVTlBUMGdnZEdWeWJXbHVZV3h6SUc5bUlIUm9aU0JuYVhabGJpQnpaWEYxWlc1alpTNWNiaUFnSUNBZ0tseHVJQ0FnSUNBcUlFQnpkR0YwYVdOY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYzJWeElGUm9aU0J6WlhGMVpXNWpaU0J3Y205MmFXUmxaQzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRlJ5ZFc1allYUmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYM1J5ZFc1allYUmxVMlZ4ZFdWdVkyVW9jMlZ4T2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQWdJR3hsZENCemRHRnlkQ0E5SURBN1hHNGdJQ0FnYkdWMElHVnVaQ0E5SUhObGNTNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdkR1Z5YldsdVlTQTlJRnNuVGtneUp5d2dKME5QVDBnblhUdGNibHh1SUNBZ0lHbG1JQ2h6WlhFdWMzUmhjblJ6VjJsMGFDaDBaWEp0YVc1aFd6QmRLU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiQ0E5SUhSbGNtMXBibUZiTUYwdWJHVnVaM1JvT3lBdkx5QkRkWFFnYjI1c2VTQW5Ua2d5SnlCM2FYUm9iM1YwSUdadmJHeHZkMmx1WnlBbkxTY3VYRzRnSUNBZ0lDQmhjM05sY25Rb2MyVnhXMnhkSUQwOUlDY3RKeXdnWUZkeWIyNW5JSE5sY1hWbGJtTmxJR1p2Y20xaGREb2dKSHQwWlhKdGFXNWhXekJkZlNCM2FYUm9iM1YwSUdadmJHeHZkMmx1WnlBbkxTY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCemRHRnlkQ0E5SUd3N1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoelpYRXVaVzVrYzFkcGRHZ29kR1Z5YldsdVlWc3hYU2twSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR3dnUFNCMFpYSnRhVzVoV3pGZExteGxibWQwYUNzeE95QXZMeUJEZFhRZ1ltOTBhQ0FuUTA5UFNDY2dZVzVrSUhCeVpXTmxibVJwYm1jZ0p5MG5MbHh1SUNBZ0lDQWdZWE56WlhKMEtITmxjVnRsYm1RdGJGMGdQVDBnSnkwbkxDQmdWM0p2Ym1jZ2MyVnhkV1Z1WTJVZ1ptOXliV0YwT2lBa2UzUmxjbTFwYm1GYk1WMTlJSGRwZEdodmRYUWdKeTBuSUhCeVpXTmxibVJwYm1jZ2FXNGdKeVI3YzJWeGZTY3VZQ2s3WEc0Z0lDQWdJQ0JsYm1RZ0xUMGdiRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhObGNTNXpkV0p6ZEhKcGJtY29jM1JoY25Rc0lHVnVaQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkRkWFJ6SUdGMWVHbHNhV0Z5ZVNCa1pXWnBjMlZ6SUdKbFptOXlaU0JoSUhKbGMybGtkV1V1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBYzNSaGRHbGpYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjU0JVYUdVZ2MyVnhkV1Z1WTJVZ2RHOGdjSEp2WTJWemN5NWNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlGQnliMk5sYzNObFpDQnpaWEYxWlc1alpTNWNiaUFnSUNBZ0tpQkFiV1Z0WW1WeWIyWWdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2x4dUlDQWdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1gyUnliM0JFWldacGMyVnpLSE5sY1RvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjMlZ4TG5KbGNHeGhZMlVvTHlndEtTaGJYaTFkS3lrdlp5d2dKeVF5SnlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJRWlhKbWIzSnRjeUIwY25WdVkyRjBhVzl1SUdGdVpDQmpkWFIwYVc1bklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWekxseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FITjBZWFJwWTF4dUlDQWdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhGMVpXNWpaU0JVYUdVZ2MyVnhkV1Z1WTJVZ2QyOXlheUIxYm1SbGNpQndjbTlqWlhOekxseHVJQ0FnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjMwZ1VtVnpkV3gwSUc5bUlHTnNaV0Z1YVc1bkxseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lITjBZWFJwWXlCamJHVmhiaWh6WlhGMVpXNWpaVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjaTVmWkhKdmNFUmxabWx6WlhNb1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjaTVmZEhKMWJtTmhkR1ZUWlhGMVpXNWpaU2h6WlhGMVpXNWpaU2twTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBZ0lDb2dRMkYwWldkdmNtbGhiQ0JsYm1OdlpHVWdiMllnZEdobElITmxjWFZsYm1ObElIQnliM1pwWkdWa0xseHVJQ0FnSUNBcVhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhObGNYVmxibU5sSUZSb1pTQnpaWEYxWlc1alpTNWNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKYlhYMGdSVzVqYjJSbFpDQjJaV04wYjNJdVhHNGdJQ0FnSUNvZ1FHMWxiV0psY205bUlFRnNhV2R1WldSVFpYRjFaVzVqWlVWdVkyOWtaWEpjYmlBZ0lDQWdLaTljYmlBZ2NIVmliR2xqSUdWdVkyOWtaU2h6WlhGMVpXNWpaVG9nYzNSeWFXNW5LVG9nYm5WdFltVnlXMTBnZTF4dUlDQWdJR052Ym5OMElHNUpkR1Z0Y3lBOUlITmxjWFZsYm1ObExteGxibWQwYUR0Y2JpQWdJQ0JqYjI1emRDQjJZV3gxWlhNZ1BTQnVaWGNnUVhKeVlYa29ia2wwWlcxektTNW1hV3hzS0RBcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVTWFJsYlhNN0lDc3JhU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZMmhoY2lBOUlITmxjWFZsYm1ObFcybGRPMXh1WEc0Z0lDQWdJQ0JoYzNObGNuUW9ZMmhoY2lCcGJpQjBhR2x6TG1GaE1tNTFiU3dnWUZWdWEyNXZkMjRnWTJoaGNpQW5KSHRqYUdGeWZTY2dabTkxYm1RZ2FXNGdjMlZ4ZFdWdVkyVWdKeVI3YzJWeGRXVnVZMlY5SjJBcE8xeHVYRzRnSUNBZ0lDQjJZV3gxWlhOYmFWMGdQU0IwYUdsekxtVnVZMjlrWlV4bGRIUjBaWElvWTJoaGNpazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpYTTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaVzVqYjJSbFRHVjBkSFJsY2loc1pYUjBaWEk2SUhOMGNtbHVaeWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WVdFeWJuVnRXMnhsZEhSbGNsMDdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCRVpXTnZaR1VnZEdobElHVnVZMjlrWldRZ2RtVmpkRzl5SUdsdWRHOGdkR2hsSUhObGNYVmxibU5sSUdKaFkyc3VYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY2x0ZGZTQjJZV3gxWlNCVWFHVWdkbVZqZEc5eUlHVnVZMjlrWldRdVhHNGdJQ0FnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCRVpXTnZaR1ZrSUhObGNYVmxibU5sTGx4dUlDQWdJQ0FxSUVCdFpXMWlaWEp2WmlCQmJHbG5ibVZrVTJWeGRXVnVZMlZGYm1OdlpHVnlYRzRnSUNBZ0lDb3ZYRzRnSUhCMVlteHBZeUJrWldOdlpHVW9kbUZzZFdVNklHNTFiV0psY2x0ZEtUb2djM1J5YVc1bklIdGNiaUFnSUNCc1pYUWdjem9nYzNSeWFXNW5JRDBnSnljN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWmhiSFZsTG14bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyUmxJRDBnZG1Gc2RXVmJhVjA3WEc1Y2JpQWdJQ0FnSUdGemMyVnlkQ2hqYjJSbElHbHVJSFJvYVhNdWJuVnRNbUZoTENCZ1ZXNXJibTkzYmlCamIyUmxJQ2NrZTJOdlpHVjlKeUJtYjNWdVpDQnBiaUIyWldOMGIzSWdKeVI3ZG1Gc2RXVjlKMkFwTzF4dVhHNGdJQ0FnSUNCeklDczlJSFJvYVhNdWJuVnRNbUZoVzJOdlpHVmRPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY3p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU3RyaW5nVXRpbHMge1xuICAgIHN0YXRpYyBoYXNoQ29kZShzKSB7XG4gICAgICAgIGxldCBoYXNoID0gMDtcbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2hyID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgY2hyO1xuICAgICAgICAgICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaDtcbiAgICB9XG59XG5pbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBVbmtub3duU2VxUGFsZXR0ZSB7XG59XG5leHBvcnQgY2xhc3MgR3JheUFsbFBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuICcjNjY2NjY2JztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVW5rbm93bkNvbG9yUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBzdGF0aWMgYnVpbGRQYWxldHRlKCkge1xuICAgICAgICBjb25zdCByZXMgPSBbXS5jb25jYXQoLi4uT2JqZWN0LnZhbHVlcyhTZXFQYWxldHRlQmFzZS5jb2xvdXJQYWxldHRlKSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBTdHJpbmdVdGlscy5oYXNoQ29kZShtKTtcbiAgICAgICAgY29uc3QgcEkgPSBoYXNoICUgVW5rbm93bkNvbG9yUGFsZXR0ZS5wYWxldHRlLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZVtwSV07XG4gICAgfVxufVxuVW5rbm93bkNvbG9yUGFsZXR0ZS5wYWxldHRlID0gVW5rbm93bkNvbG9yUGFsZXR0ZS5idWlsZFBhbGV0dGUoKTtcbmV4cG9ydCBjbGFzcyBVbmtub3duU2VxUGFsZXR0ZXMgZXh0ZW5kcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIGdldCBHcmF5KCkge1xuICAgICAgICBpZiAodGhpcy5ncmF5ID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmdyYXkgPSBuZXcgR3JheUFsbFBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JheTtcbiAgICB9XG4gICAgc3RhdGljIGdldCBDb2xvcigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sb3IgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSBuZXcgVW5rbm93bkNvbG9yUGFsZXR0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xvcjtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkVzVyYm05M2JpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5WdWEyNXZkMjR1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlNVRXNUVUZCVFN4UFFVRlBMRmRCUVZjN1NVRkRaaXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFWTTdVVUZET1VJc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETzFsQlEyaENMRTlCUVU4c1NVRkJTU3hEUVVGRE8xRkJRMlFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCVnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRla01zVFVGQlRTeEhRVUZITEVkQlFWY3NRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExESkNRVUV5UWp0VFFVTjJRenRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0RFFVTkdPMEZCUlVRc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCWjBJc2FVSkJRV2xDTzBOQlJYUkRPMEZCUlVRc1RVRkJUU3hQUVVGUExHTkJRV1VzVTBGQlVTeHBRa0ZCYVVJN1NVRkROVU1zUjBGQlJ5eERRVUZETEVOQlFWTTdVVUZEYkVJc1QwRkJUeXhUUVVGVExFTkJRVU03U1VGRGJrSXNRMEZCUXp0RFFVTkdPMEZCUjBRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR2xDUVVGcFFqdEpRVWRvUkN4TlFVRk5MRU5CUVVNc1dVRkJXVHRSUVVONlFpeE5RVUZOTEVkQlFVY3NSMEZCU1N4RlFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53Uml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhOUVVGTkxFbEJRVWtzUjBGQlZ5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemRETEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJRM0pFTEU5QlFVOHNiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUTNwRExFTkJRVU03TzBGQldHRXNNa0pCUVU4c1IwRkJZU3h0UWtGQmJVSXNRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRCUVdOMlJTeE5RVUZOTEU5QlFVOHNhMEpCUVcxQ0xGTkJRVkVzWTBGQll6dEpRVWMzUXl4TlFVRk5MRXRCUVVzc1NVRkJTVHRSUVVOd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1MwRkJTeXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hqUVVGakxFVkJRVVVzUTBGQlF6dFJRVU51UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVbE5MRTFCUVUwc1MwRkJTeXhMUVVGTE8xRkJRM0pDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1MwRkJTeXhMUVVGTExFTkJRVU03V1VGRGRrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxHMUNRVUZ0UWl4RlFVRkZMRU5CUVVNN1VVRkRla01zVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCQ0xFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCVGRISnBibWRWZEdsc2N5QjdYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdhR0Z6YUVOdlpHVW9jem9nYzNSeWFXNW5LVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnNaWFFnYUdGemFEb2diblZ0WW1WeUlEMGdNRHRjYmlBZ0lDQnBaaUFvY3k1c1pXNW5kR2dnUFQwOUlEQXBYRzRnSUNBZ0lDQnlaWFIxY200Z2FHRnphRHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBPaUJ1ZFcxaVpYSWdQU0F3T3lCcElEd2djeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoeU9pQnVkVzFpWlhJZ1BTQnpMbU5vWVhKRGIyUmxRWFFvYVNrN1hHNGdJQ0FnSUNCb1lYTm9JRDBnS0Nob1lYTm9JRHc4SURVcElDMGdhR0Z6YUNrZ0t5QmphSEk3WEc0Z0lDQWdJQ0JvWVhOb0lIdzlJREE3SUM4dklFTnZiblpsY25RZ2RHOGdNekppYVhRZ2FXNTBaV2RsY2x4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2FHRnphRHRjYmlBZ2ZWeHVmVnh1WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JoWW5OMGNtRmpkQ0JqYkdGemN5QlZibXR1YjNkdVUyVnhVR0ZzWlhSMFpTQnBiWEJzWlcxbGJuUnpJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1lXSnpkSEpoWTNRZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaenRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUVkeVlYbEJiR3hRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUNjak5qWTJOalkySnp0Y2JpQWdmVnh1ZlZ4dVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCVmJtdHViM2R1UTI5c2IzSlFZV3hsZEhSbElHVjRkR1Z1WkhNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklIQmhiR1YwZEdVNklITjBjbWx1WjF0ZElEMGdWVzVyYm05M2JrTnZiRzl5VUdGc1pYUjBaUzVpZFdsc1pGQmhiR1YwZEdVb0tUdGNibHh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJpZFdsc1pGQmhiR1YwZEdVb0tUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGN5QTlJQ2hiWFNCaGN5QnpkSEpwYm1kYlhTa3VZMjl1WTJGMEtDNHVMazlpYW1WamRDNTJZV3gxWlhNb1UyVnhVR0ZzWlhSMFpVSmhjMlV1WTI5c2IzVnlVR0ZzWlhSMFpTa3BPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1WnlCN1hHNGdJQ0FnWTI5dWMzUWdhR0Z6YURvZ2JuVnRZbVZ5SUQwZ1UzUnlhVzVuVlhScGJITXVhR0Z6YUVOdlpHVW9iU2s3WEc0Z0lDQWdZMjl1YzNRZ2NFa2dQU0JvWVhOb0lDVWdWVzVyYm05M2JrTnZiRzl5VUdGc1pYUjBaUzV3WVd4bGRIUmxMbXhsYm1kMGFEdGNiaUFnSUNCeVpYUjFjbTRnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsVzNCSlhUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdWeklHVjRkR1Z1WkhNZ1UyVnhVR0ZzWlhSMFpVSmhjMlVnZTF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCbmNtRjVPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRWR5WVhrb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVaM0poZVNBOVBUMGdkbTlwWkNBd0tWeHVJQ0FnSUNBZ2RHaHBjeTVuY21GNUlEMGdibVYzSUVkeVlYbEJiR3hRWVd4bGRIUmxLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WjNKaGVUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTnZiRzl5T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVOdmJHOXlLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJHOXlJRDA5UFNCMmIybGtJREFwWEc0Z0lDQWdJQ0IwYUdsekxtTnZiRzl5SUQwZ2JtVjNJRlZ1YTI1dmQyNURiMnh2Y2xCaGJHVjBkR1VvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIyeHZjanRjYmlBZ2ZWeHVmVnh1SWwxOSIsIi8vIERhdGEgc3RydWN0dXJlcyBmb3IgVi1Eb21haW4gcmVnaW9ucyBvZiBhbnRpYm9kaWVzXG5leHBvcnQgdmFyIFZkUmVnaW9uVHlwZTtcbihmdW5jdGlvbiAoVmRSZWdpb25UeXBlKSB7XG4gICAgVmRSZWdpb25UeXBlW1wiVW5rbm93blwiXSA9IFwidW5rbm93blwiO1xuICAgIFZkUmVnaW9uVHlwZVtcIkZSXCJdID0gXCJmcmFtZXdvcmtcIjtcbiAgICBWZFJlZ2lvblR5cGVbXCJDRFJcIl0gPSBcImNkclwiO1xufSkoVmRSZWdpb25UeXBlIHx8IChWZFJlZ2lvblR5cGUgPSB7fSkpO1xuLyoqIERlc2NyaWJlcyBWLURPTUFJTiAoSUcgYW5kIFRSKSByZWdpb24gKG9mIG11bHRpcGxlIGFsaWdubWVudClcbiAqIGh0dHBzOi8vd3d3LmltZ3Qub3JnL0lNR1RTY2llbnRpZmljQ2hhcnQvTnVtYmVyaW5nL0lNR1RJR1ZMc3VwZXJmYW1pbHkuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgVmRSZWdpb24ge1xuICAgIC8qKlxuICAgICAqIHN0YXJ0IGFuZCBwb3NpdGlvbiBhcmUgc3RyaW5ncyBiZWNhdXNlIHRoZXkgY29ycmVzcG9uZCB0byBwb3NpdGlvbiBuYW1lcyBhcyBjb2x1bW4gbmFtZXMgaW4gQU5BUkNJIG91dHB1dFxuICAgICAqIEBwYXJhbSB7VmRSZWdpb25UeXBlfSB0eXBlICBUeXBlIG9mIHRoZSByZWdpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgTmFtZSBvZiB0aGUgcmVnaW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9yZGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uU3RhcnROYW1lICBSZWdpb24gc3RhcnQgcG9zaXRpb24gKGluY2x1c2l2ZSlcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zaXRpb25FbmROYW1lICBSZWdpb24gZW5kIHBvc2l0aW9uIChpbmNsdXNpdmUpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IodHlwZSwgbmFtZSwgY2hhaW4sIG9yZGVyLCBwb3NpdGlvblN0YXJ0TmFtZSwgcG9zaXRpb25FbmROYW1lKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY2hhaW4gPSBjaGFpbjtcbiAgICAgICAgdGhpcy5vcmRlciA9IG9yZGVyO1xuICAgICAgICB0aGlzLnBvc2l0aW9uU3RhcnROYW1lID0gcG9zaXRpb25TdGFydE5hbWU7XG4gICAgICAgIHRoaXMucG9zaXRpb25FbmROYW1lID0gcG9zaXRpb25FbmROYW1lO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRtUXRjbVZuYVc5dWN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5aa0xYSmxaMmx2Ym5NdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzY1VSQlFYRkVPMEZCUlhKRUxFMUJRVTBzUTBGQlRpeEpRVUZaTEZsQlNWZzdRVUZLUkN4WFFVRlpMRmxCUVZrN1NVRkRkRUlzYlVOQlFXMUNMRU5CUVVFN1NVRkRia0lzWjBOQlFXZENMRU5CUVVFN1NVRkRhRUlzTWtKQlFWY3NRMEZCUVR0QlFVTmlMRU5CUVVNc1JVRktWeXhaUVVGWkxFdEJRVm9zV1VGQldTeFJRVWwyUWp0QlFVVkVPenRIUVVWSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEZGQlFWRTdTVUZSYmtJN096czdPenM3TzA5QlVVYzdTVUZEU0N4WlFVRlpMRWxCUVd0Q0xFVkJRVVVzU1VGQldTeEZRVUZGTEV0QlFXRXNSVUZCUlN4TFFVRmhMRVZCUTNoRkxHbENRVUY1UWl4RlFVRkZMR1ZCUVhWQ08xRkJRMnhFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMnBDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMnBDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJRMjVDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJRMjVDTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eHBRa0ZCYVVJc1EwRkJRenRSUVVNelF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMR1ZCUVdVc1EwRkJRenRKUVVONlF5eERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUl2THlCRVlYUmhJSE4wY25WamRIVnlaWE1nWm05eUlGWXRSRzl0WVdsdUlISmxaMmx2Ym5NZ2IyWWdZVzUwYVdKdlpHbGxjMXh1WEc1bGVIQnZjblFnWlc1MWJTQldaRkpsWjJsdmJsUjVjR1VnZTF4dUlDQlZibXR1YjNkdUlEMGdKM1Z1YTI1dmQyNG5MRnh1SUNCR1VpQTlJQ2RtY21GdFpYZHZjbXNuTEZ4dUlDQkRSRklnUFNBblkyUnlKeXhjYm4xY2JseHVMeW9xSUVSbGMyTnlhV0psY3lCV0xVUlBUVUZKVGlBb1NVY2dZVzVrSUZSU0tTQnlaV2RwYjI0Z0tHOW1JRzExYkhScGNHeGxJR0ZzYVdkdWJXVnVkQ2xjYmlBcUlHaDBkSEJ6T2k4dmQzZDNMbWx0WjNRdWIzSm5MMGxOUjFSVFkybGxiblJwWm1salEyaGhjblF2VG5WdFltVnlhVzVuTDBsTlIxUkpSMVpNYzNWd1pYSm1ZVzFwYkhrdWFIUnRiRnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1SU1pXZHBiMjRnZTF4dUlDQjBlWEJsT2lCV1pGSmxaMmx2YmxSNWNHVTdYRzRnSUc1aGJXVTZJSE4wY21sdVp6dGNiaUFnWTJoaGFXNDZJSE4wY21sdVp6dGNiaUFnYjNKa1pYSTZJRzUxYldKbGNqdGNiaUFnY0c5emFYUnBiMjVUZEdGeWRFNWhiV1U2SUhOMGNtbHVaenRjYmlBZ2NHOXphWFJwYjI1RmJtUk9ZVzFsT2lCemRISnBibWM3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJSE4wWVhKMElHRnVaQ0J3YjNOcGRHbHZiaUJoY21VZ2MzUnlhVzVuY3lCaVpXTmhkWE5sSUhSb1pYa2dZMjl5Y21WemNHOXVaQ0IwYnlCd2IzTnBkR2x2YmlCdVlXMWxjeUJoY3lCamIyeDFiVzRnYm1GdFpYTWdhVzRnUVU1QlVrTkpJRzkxZEhCMWRGeHVJQ0FnS2lCQWNHRnlZVzBnZTFaa1VtVm5hVzl1Vkhsd1pYMGdkSGx3WlNBZ1ZIbHdaU0J2WmlCMGFHVWdjbVZuYVc5dVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J1WVcxbElDQk9ZVzFsSUc5bUlIUm9aU0J5WldkcGIyNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdOb1lXbHVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdmNtUmxjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NHOXphWFJwYjI1VGRHRnlkRTVoYldVZ0lGSmxaMmx2YmlCemRHRnlkQ0J3YjNOcGRHbHZiaUFvYVc1amJIVnphWFpsS1Z4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjRzl6YVhScGIyNUZibVJPWVcxbElDQlNaV2RwYjI0Z1pXNWtJSEJ2YzJsMGFXOXVJQ2hwYm1Oc2RYTnBkbVVwWEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNSdmNpaDBlWEJsT2lCV1pGSmxaMmx2YmxSNWNHVXNJRzVoYldVNklITjBjbWx1Wnl3Z1kyaGhhVzQ2SUhOMGNtbHVaeXdnYjNKa1pYSTZJRzUxYldKbGNpeGNiaUFnSUNCd2IzTnBkR2x2YmxOMFlYSjBUbUZ0WlRvZ2MzUnlhVzVuTENCd2IzTnBkR2x2YmtWdVpFNWhiV1U2SUhOMGNtbHVaeWtnZTF4dUlDQWdJSFJvYVhNdWRIbHdaU0E5SUhSNWNHVTdYRzRnSUNBZ2RHaHBjeTV1WVcxbElEMGdibUZ0WlR0Y2JpQWdJQ0IwYUdsekxtTm9ZV2x1SUQwZ1kyaGhhVzQ3WEc0Z0lDQWdkR2hwY3k1dmNtUmxjaUE5SUc5eVpHVnlPMXh1SUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVUZEdGeWRFNWhiV1VnUFNCd2IzTnBkR2x2YmxOMFlYSjBUbUZ0WlR0Y2JpQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVJXNWtUbUZ0WlNBOUlIQnZjMmwwYVc5dVJXNWtUbUZ0WlR0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyB2ZWN0b3JMZW5ndGgsIHZlY3RvckRvdFByb2R1Y3QgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzLCBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7IE51Y2xlb3RpZGVzLCBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSAnLi4vbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHsgVW5rbm93blNlcVBhbGV0dGUsIFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldEN1cnNvclBvc2l0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcbkRHLlJlY3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5leHBvcnQgY2xhc3MgUG9zaXRpb25Nb25vbWVySW5mbyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY291bnQgPSAwO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IG5ldyBERy5SZWN0KDAsIDAsIDAsIDApO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkluZm8ge1xuICAgIC8qKiBmcmVxID0ge30sIHJvd0NvdW50ID0gMFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcG9zaXRpb24gKCcxMTFBJywgJzExMS4xJywgZXRjKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5mcmVxID0ge307XG4gICAgICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZpZXdlcklkID0gLTE7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWFkb25seSBjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUgPSBDb2xvclNjaGVtZXNbTnVjbGVvdGlkZXNXZWJMb2dvLnJlc2lkdWVzU2V0XTtcbiAgICAgICAgdGhpcy5jcCA9IG51bGw7XG4gICAgICAgIHRoaXMuYXhpc0hlaWdodCA9IDEyO1xuICAgICAgICB0aGlzLnNlcUNvbCA9IG51bGw7XG4gICAgICAgIC8vIHByaXZhdGUgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDA7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgIHRoaXMucm93c01hc2tlZCA9IDA7XG4gICAgICAgIHRoaXMucm93c051bGwgPSAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy52aWV3U3VicyA9IFtdO1xuICAgICAgICB0aGlzLnZpZXdlcklkID0gV2ViTG9nby52aWV3ZXJDb3VudDtcbiAgICAgICAgV2ViTG9nby52aWV3ZXJDb3VudCArPSAxO1xuICAgICAgICB0aGlzLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoID0gdGhpcy5mbG9hdCgncG9zaXRpb25XaWR0aCcsIDE2IC8qLFxuICAgICAgICAgIHtlZGl0b3I6ICdzbGlkZXInLCBtaW46IDQsIG1heDogNjQsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLm1pbkhlaWdodCA9IHRoaXMuZmxvYXQoJ21pbkhlaWdodCcsIDUwIC8qLFxuICAgICAgICAgIHtlZGl0b3I6ICdzbGlkZXInLCBtaW46IDI1LCBtYXg6IDI1MCwgcG9zdGZpeDogJ3B4J30qLyk7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWF4SGVpZ2h0JywgMTAwIC8qLFxuICAgICAgICAgIHtlZGl0b3I6ICdzbGlkZXInLCBtaW46IDI1LCBtYXg6IDUwMCwgcG9zdGZpeDogJ3B4J30qLyk7XG4gICAgICAgIHRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzID0gdGhpcy5ib29sKCdjb25zaWRlck51bGxTZXF1ZW5jZXMnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID0gdGhpcy5zdHJpbmcoJ3NlcXVlbmNlQ29sdW1uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb25OYW1lID0gdGhpcy5zdHJpbmcoJ3N0YXJ0UG9zaXRpb25OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuZW5kUG9zaXRpb25OYW1lID0gdGhpcy5zdHJpbmcoJ2VuZFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmZpeFdpZHRoID0gdGhpcy5ib29sKCdmaXhXaWR0aCcsIGZhbHNlKTtcbiAgICAgICAgdGhpcy52ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCd2ZXJ0aWNhbEFsaWdubWVudCcsICdtaWRkbGUnLCB7IGNob2ljZXM6IFsndG9wJywgJ21pZGRsZScsICdib3R0b20nXSB9KTtcbiAgICAgICAgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50ID0gdGhpcy5zdHJpbmcoJ2hvcml6b250YWxBbGlnbm1lbnQnLCAnY2VudGVyJywgeyBjaG9pY2VzOiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J10gfSk7XG4gICAgICAgIHRoaXMuZml0QXJlYSA9IHRoaXMuYm9vbCgnZml0QXJlYScsIHRydWUpO1xuICAgICAgICB0aGlzLnNocmlua0VtcHR5VGFpbCA9IHRoaXMuYm9vbCgnc2hyaW5rRW1wdHlUYWlsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2tpcEVtcHR5UG9zaXRpb25zID0gdGhpcy5ib29sKCdza2lwRW1wdHlQb3NpdGlvbnMnLCBmYWxzZSk7XG4gICAgfVxuICAgIC8qKiBGb3Igc3RhcnRQb3NpdGlvbiBlcXVhbHMgdG8gZW5kUG9zaXRpb24gTGVuZ3RoIGlzIDEgKi9cbiAgICBnZXQgTGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydFBvc2l0aW9uIDw9IHRoaXMuZW5kUG9zaXRpb24gPyB0aGlzLmVuZFBvc2l0aW9uIC0gdGhpcy5zdGFydFBvc2l0aW9uICsgMSA6IDA7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYkxvZ28gc2Vjb25kIGluaXRpYWxpemF0aW9uIScpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5oZWxwVXJsID0gJy9oZWxwL3Zpc3VhbGl6ZS92aWV3ZXJzL3dlYi1sb2dvLm1kJztcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdCA9IHVpLmRpdignTm8gbWVzc2FnZScpO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcyA9IHVpLmNhbnZhcygpO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICB0aGlzLmhvc3QgPSB1aS5kaXYoW3RoaXMubXNnSG9zdCwgdGhpcy5jYW52YXNdKTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyID0gdWkucmFuZ2VTbGlkZXIoMCwgMjAsIDIsIDUpO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEycHgnO1xuICAgICAgICAgICAgY29uc3QgZ2V0TW9ub21lciA9IChwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgalBvcyA9IE1hdGguZmxvb3IocC54IC8gdGhpcy5fcG9zaXRpb25XaWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXTtcbiAgICAgICAgICAgICAgICBpZiAocG9zaXRpb24gPT09IHZvaWQgMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBudWxsLCBudWxsXTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyID0gT2JqZWN0LmtleXMocG9zaXRpb24uZnJlcSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoKG0pID0+IHBvc2l0aW9uLmZyZXFbbV0uYm91bmRzLmNvbnRhaW5zKHAueCwgcC55KSk7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBudWxsLCBudWxsXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG1vbm9tZXIsIHBvc2l0aW9uLmZyZXFbbW9ub21lcl1dO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuc3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuY2FudmFzLCAnbW91c2VvdmVyJykuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQodGhpcy5jYW52YXMsICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIHRoaXMuc2VxQ29sICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5zaG93Um93R3JvdXAodGhpcy5kYXRhRnJhbWUsIChpUm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXEgPSB0aGlzLnNlcUNvbC5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXFNID0gc2VxID8gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9LCBhcmdzLnggKyAxNiwgYXJncy55ICsgMTYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCBlLmJ1dHRvbiAhPSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG4gICAgICAgICAgICAgICAgLy8gcHJldmVudHMgZGVzZWxlY3QgYWxsIHJvd3MgaWYgd2UgbWlzcyBtb25vbWVyIGJvdW5kc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5pbml0KChpUm93KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXEgPSB0aGlzLnNlcUNvbC5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXFNID0gc2VxID8gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2godWkub25TaXplQ2hhbmdlZCh0aGlzLnJvb3QpLnN1YnNjcmliZSh0aGlzLnJvb3RPblNpemVDaGFuZ2VkLmJpbmQodGhpcykpKTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgIC8vIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnNsaWRlci5yb290KTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblJvb3RTaXplQ2hhbmdlZCgpIGAgK1xuICAgICAgICAvLyAgIGByb290LndpZHRoPSR7dGhpcy5yb290LmNsaWVudFdpZHRofSwgcm9vdC5oZWlnaHQ9JHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fSwgYCArXG4gICAgICAgIC8vICAgYGNhbnZhcy53aWR0aD0ke3RoaXMuY2FudmFzLndpZHRofSwgY2FudmFzLmhlaWdodD0ke3RoaXMuY2FudmFzLmhlaWdodH0gLmApO1xuICAgIH1cbiAgICAvKiogQXNzaWducyB7QGxpbmsgc2VxQ29sfSBhbmQge0BsaW5rIGNwfSBiYXNlZCBvbiB7QGxpbmsgc2VxdWVuY2VDb2x1bW5OYW1lfSBhbmQgY2FsbHMge0BsaW5rIHJlbmRlcn0oKS5cbiAgICAgKi9cbiAgICB1cGRhdGVTZXFDb2woKSB7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA/IHRoaXMuZGF0YUZyYW1lLmNvbCh0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcUNvbCA9IHRoaXMucGlja1VwU2VxQ29sKHRoaXMuZGF0YUZyYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc2VxQ29sID8gdGhpcy5zZXFDb2wubmFtZSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZXFDb2wpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUodGhpcy5zZXFDb2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9ucygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcUNvbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGNhdGVnb3JpZXM7XG4gICAgICAgIGlmICh0aGlzLnNocmlua0VtcHR5VGFpbCkge1xuICAgICAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoQXJyYXkuZnJvbShBcnJheShpbmRpY2VzLmxlbmd0aCkua2V5cygpKS5tYXAoKGkpID0+IHRoaXMuc2VxQ29sLmdldChpbmRpY2VzW2ldKSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhdGVnb3JpZXMgPSB0aGlzLnNlcUNvbC5jYXRlZ29yaWVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoID4gMCA/IE1hdGgubWF4KC4uLmNhdGVnb3JpZXMubWFwKChzKSA9PiBzICE9PSBudWxsID8gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEocykubGVuZ3RoIDogMCkpIDogMDtcbiAgICAgICAgLy8gR2V0IHBvc2l0aW9uIG5hbWVzIGZyb20gZGF0YSBjb2x1bW4gdGFnICdwb3NpdGlvbk5hbWVzJ1xuICAgICAgICBjb25zdCBwb3NpdGlvbk5hbWVzVHh0ID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdwb3NpdGlvbk5hbWVzJyk7XG4gICAgICAgIC8vIEZhbGxiYWNrIGlmICdwb3NpdGlvbk5hbWVzJyB0YWcgaXMgbm90IHByb3ZpZGVkXG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IHBvc2l0aW9uTmFtZXNUeHQgPyBwb3NpdGlvbk5hbWVzVHh0LnNwbGl0KCcsICcpLm1hcCgobikgPT4gbi50cmltKCkpIDpcbiAgICAgICAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5zdGFydFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpIDogMDtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9ICh0aGlzLmVuZFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLmVuZFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuZW5kUG9zaXRpb25OYW1lKSA6IChtYXhMZW5ndGggLSAxKTtcbiAgICB9XG4gICAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblByb3BlcnR5Q2hhbmdlZCggJHtwcm9wZXJ0eS5uYW1lfSA9ICcnIH0pYCk7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KTtcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjb25zaWRlck51bGxTZXF1ZW5jZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWluSGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heEhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhXaWR0aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbEFsaWdubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpdEFyZWEnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hyaW5rRW1wdHlUYWlsJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBvblRhYmxlQXR0YWNoZWQ6IHsgZ2V0OiAoKSA9PiBzdXBlci5vblRhYmxlQXR0YWNoZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IHRoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICAgICAgICAgIF9zdXBlci5vblRhYmxlQXR0YWNoZWQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnJlbmRlcigpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRldGFjaCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBkZXRhY2g6IHsgZ2V0OiAoKSA9PiBzdXBlci5kZXRhY2ggfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IGAke3RoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnfWA7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLmRldGFjaC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX251bGxTZXF1ZW5jZShmaWxsZXJSZXNpZHVlID0gJ1gnKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcylcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkodGhpcy5MZW5ndGgpLmZpbGwoZmlsbGVyUmVzaWR1ZSkuam9pbignJyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgX2NhbGN1bGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0IHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5MZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc05hbWUgPSB0aGlzLnBvc2l0aW9uTmFtZXNbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXSA9IG5ldyBQb3NpdGlvbkluZm8ocG9zTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMjAyMi0wNS0wNSBhc2thbGtpbiBpbnN0cnVjdGVkIHRvIHNob3cgV2ViTG9nbyBiYXNlZCBvbiBmaWx0ZXIgKG5vdCBzZWxlY3Rpb24pXG4gICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIC8vIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEluZGV4ZXMoKSA6XG4gICAgICAgIC8vICAgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSBpbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG4gICAgICAgICAgICBsZXQgcyA9ICh0aGlzLnNlcUNvbC5nZXQoaSkpO1xuICAgICAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICAgICAgcyA9IHRoaXMuX251bGxTZXF1ZW5jZSgpO1xuICAgICAgICAgICAgICAgICsrdGhpcy5yb3dzTnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlcU0gPSBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICAgICAgY29uc3QgbSA9IHNlcU1bdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gfHwgJy0nO1xuICAgICAgICAgICAgICAgIGlmICghKG0gaW4gcG1JbmZvKSlcbiAgICAgICAgICAgICAgICAgICAgcG1JbmZvW21dID0gbmV3IFBvc2l0aW9uTW9ub21lckluZm8oKTtcbiAgICAgICAgICAgICAgICBwbUluZm9bbV0uY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyNyZWdpb24gUG9saXNoIGZyZXEgY291bnRzXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgLy8gZGVsZXRlIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbJy0nXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbSBpbiB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxKVxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50ICs9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbbV0uY291bnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5jYW52YXMuaGVpZ2h0IC0gdGhpcy5heGlzSGVpZ2h0ICogcjtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5fY2FsY3VsYXRlKCkgbWF4SGVpZ2h0PSR7bWF4SGVpZ2h0fS5gKTtcbiAgICAgICAgLy8jcmVnaW9uIENhbGN1bGF0ZSBzY3JlZW5cbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBjb25zdCBmcmVxID0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcTtcbiAgICAgICAgICAgIGNvbnN0IHJvd0NvdW50ID0gdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQ7XG4gICAgICAgICAgICBsZXQgeSA9IHRoaXMuYXhpc0hlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhmcmVxKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFbMF0gIT09ICctJyAmJiBiWzBdICE9PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiWzFdLmNvdW50IC0gYVsxXS5jb3VudDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhWzBdID09PSAnLScgJiYgYlswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhWzBdID09PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICBlbHNlIC8qIChiWzBdID09PSAnLScpICovXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiArMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG1JbmZvID0gZW50cnlbMV07XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgbTogc3RyaW5nID0gZW50cnlbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgaCA9IG1heEhlaWdodCAqIHBtSW5mby5jb3VudCAvIHJvd0NvdW50O1xuICAgICAgICAgICAgICAgIHBtSW5mby5ib3VuZHMgPSBuZXcgREcuUmVjdChqUG9zICogdGhpcy5fcG9zaXRpb25XaWR0aCwgeSwgdGhpcy5fcG9zaXRpb25XaWR0aCwgaCk7XG4gICAgICAgICAgICAgICAgeSArPSBoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgIH1cbiAgICAvLyByZWZsZWN0IGNoYW5nZXMgbWFkZSB0byBmaWx0ZXIvc2VsZWN0aW9uXG4gICAgcmVuZGVyKHJlY2FsYyA9IHRydWUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGhpcy5tc2dIb3N0KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZXFDb2wgJiYgIXRoaXMuY3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3QuaW5uZXJUZXh0ID0gYFVua25vd24gcGFsZXR0ZSAoY29sdW1uIHNlbVR5cGU6ICcke3RoaXMuc2VxQ29sLnNlbVR5cGV9JykuYDtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lIHx8ICF0aGlzLmNwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBnID0gdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgaWYgKCFnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAocmVjYWxjKVxuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlKCk7XG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBnLnRleHRCYXNlbGluZSA9IHRoaXMudGV4dEJhc2VsaW5lO1xuICAgICAgICAvLyBQcmV2ZW50cyBkaXZpc2lvbiBieSB6ZXJvIG9uIExlbmd0aCA9IDBcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gLTEgfHwgdGhpcy5lbmRQb3NpdGlvbiA9PT0gLTEpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vI3JlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcbiAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgICAgIGcudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICAgIGcuZm9udCA9ICcxMHB4IFJvYm90bywgUm9ib3RvIExvY2FsLCBzYW5zLXNlcmlmJztcbiAgICAgICAgY29uc3QgcG9zTmFtZU1heFdpZHRoID0gTWF0aC5tYXgoLi4udGhpcy5wb3NpdGlvbnMubWFwKChwb3MpID0+IGcubWVhc3VyZVRleHQocG9zLm5hbWUpLndpZHRoKSk7XG4gICAgICAgIGNvbnN0IGhTY2FsZSA9IHBvc05hbWVNYXhXaWR0aCA8ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgPyAxIDogKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSAvIHBvc05hbWVNYXhXaWR0aDtcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXTtcbiAgICAgICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgIGcuc2V0VHJhbnNmb3JtKGhTY2FsZSwgMCwgMCwgMSwgalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGggKyB0aGlzLl9wb3NpdGlvbldpZHRoIC8gMiwgMCk7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KHBvcy5uYW1lLCAwLCAwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbW9ub21lciwgcG1JbmZvXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxKSkge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyICE9PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYiA9IHBtSW5mby5ib3VuZHM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvbnRTdHlsZSA9ICcxNnB4IFJvYm90bywgUm9ib3RvIExvY2FsLCBzYW5zLXNlcmlmJztcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFja3MgdG8gc2NhbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgdG8gdGFyZ2V0IHJlY3RhbmdsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJBc2NlbnQgPSAwLjI1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQgPSAxMi4yO1xuICAgICAgICAgICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnbGlnaHRncmF5JztcbiAgICAgICAgICAgICAgICAgICAgZy5saW5lV2lkdGggPSAxO1xuICAgICAgICAgICAgICAgICAgICBnLnJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9IChfYSA9IHRoaXMuY3AuZ2V0KG1vbm9tZXIpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNwLmdldCgnb3RoZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZy50ZXh0QWxpZ24gPSAnbGVmdCc7XG4gICAgICAgICAgICAgICAgICAgIGcuZm9udCA9IGZvbnRTdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgLy9nLmZpbGxSZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbVRtID0gZy5tZWFzdXJlVGV4dChtb25vbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICE9IDApXG4gICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhgbTogJHttfSwgbU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQ6ICR7bU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnR9YCk7XG4gICAgICAgICAgICAgICAgICAgIGcuc2V0VHJhbnNmb3JtKGIud2lkdGggLyBtVG0ud2lkdGgsIDAsIDAsIGIuaGVpZ2h0IC8gdXBwZXJjYXNlTGV0dGVySGVpZ2h0LCBiLmxlZnQsIGIudG9wKTtcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsVGV4dChtb25vbWVyLCAwLCAtdXBwZXJjYXNlTGV0dGVyQXNjZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2FsY1NpemUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuaG9zdClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHdpZHRoID0gdGhpcy5MZW5ndGggKiB0aGlzLnBvc2l0aW9uV2lkdGg7XG4gICAgICAgIGxldCBoZWlnaHQgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgTWF0aC5tYXgodGhpcy5taW5IZWlnaHQsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQpKTtcbiAgICAgICAgaWYgKHRoaXMuZml0QXJlYSkge1xuICAgICAgICAgICAgY29uc3QgeFNjYWxlID0gdGhpcy5yb290LmNsaWVudEhlaWdodCAvIGhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHlTY2FsZSA9IHRoaXMucm9vdC5jbGllbnRXaWR0aCAvIHdpZHRoO1xuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1heCgxLCBNYXRoLm1pbih4U2NhbGUsIHlTY2FsZSkpO1xuICAgICAgICAgICAgd2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuICAgICAgICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoICogc2NhbGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpZHRoICogcjtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgIC8vIGNvbnN0IGNhbnZhc0hlaWdodDogbnVtYmVyID0gd2lkdGggPiB0aGlzLnJvb3QuY2xpZW50V2lkdGggPyBoZWlnaHQgLSA4IDogaGVpZ2h0O1xuICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2hlaWdodH1weGApO1xuICAgICAgICBjb25zdCBjYW52YXNIZWlnaHQgPSB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0O1xuICAgICAgICB0aGlzLmNhbnZhcy5oZWlnaHQgPSBjYW52YXNIZWlnaHQgKiByO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7Y2FudmFzSGVpZ2h0fXB4YCk7XG4gICAgICAgIC8vIEFkanVzdCBob3N0IGFuZCByb290IHdpZHRoXG4gICAgICAgIGlmICh0aGlzLmZpeFdpZHRoKSB7XG4gICAgICAgICAgICAvLyBmdWxsIHdpZHRoIGZvciBjYW52YXMgaG9zdCBhbmQgcm9vdFxuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gdGhpcy5ob3N0LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFsbG93IHNjcm9sbCBjYW52YXMgaW4gcm9vdFxuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gdGhpcy5ob3N0LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLm92ZXJmbG93WCA9ICdhdXRvIWltcG9ydGFudCc7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ3RleHQtYWxpZ24nLCB0aGlzLmhvcml6b250YWxBbGlnbm1lbnQpO1xuICAgICAgICAgICAgLy8gdmVydGljYWwgYWxpZ25tZW50XG4gICAgICAgICAgICBsZXQgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC0gaGVpZ2h0KSAvIDIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgdGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYCR7aG9zdFRvcE1hcmdpbn1weGAsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IDwgaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoXG4gICAgICAgIC8vICAgYHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSAke3RoaXMucm9vdC5zdHlsZS5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPSAke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuaG9zdC5zdHlsZS5oZWlnaHQgPSAke3RoaXMuaG9zdC5zdHlsZS5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuaG9zdC5jbGllbnRIZWlnaHQgPSAke3RoaXMuaG9zdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgJ1xcbicgK1xuICAgICAgICAvLyAgIGB0aGlzLmNhbnZhcy5oZWlnaHQgICAgICAgPSAke3RoaXMuY2FudmFzLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHR9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICAgICAqIEByZXR1cm4ge1NlcVBhbGV0dGV9IFBhbGV0dGUgY29ycmVzcG9uZGluZyB0byB0aGUgYWxwaGFiZXQgb2YgdGhlIHNlcXVlbmNlcyBpbiB0aGUgY29sdW1uXG4gICAgICovXG4gICAgc3RhdGljIHBpY2tVcFBhbGV0dGUoc2VxQ29sLCBtaW5MZW5ndGggPSA1KSB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBzd2l0Y2ggKHNlcUNvbC5zZW1UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgcmVzID0gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdHMgPSBXZWJMb2dvLmdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgICAgIFtuZXcgU2V0KE9iamVjdC5rZXlzKE51Y2xlb3RpZGVzLk5hbWVzKSksIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtXSxcbiAgICAgICAgICAgIFtuZXcgU2V0KE9iamVjdC5rZXlzKEFtaW5vYWNpZHMuTmFtZXMpKSwgQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHNdLFxuICAgICAgICBdO1xuICAgICAgICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgICAgICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzXG4gICAgICAgICAgICAubWFwKChjKSA9PiBXZWJMb2dvLmdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzBdKSk7XG4gICAgICAgIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gICAgICAgIGlmIChtYXhDb3MgPiAwLjY1KVxuICAgICAgICAgICAgcmVzID0gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzFdO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIC8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkxlbmd0aFxuICAgICAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICAgICAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgc3BsaXR0ZXIpIHtcbiAgICAgICAgY29uc3QgZnJlcSA9IHt9O1xuICAgICAgICBsZXQgc2FtZUxlbmd0aCA9IHRydWU7XG4gICAgICAgIGxldCBmaXJzdExlbmd0aCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBtU2VxID0gc3BsaXR0ZXIoc2VxKTtcbiAgICAgICAgICAgIGlmIChmaXJzdExlbmd0aCA9PSBudWxsKVxuICAgICAgICAgICAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgICAgICAgICBlbHNlIGlmIChtU2VxLmxlbmd0aCAhPT0gZmlyc3RMZW5ndGgpXG4gICAgICAgICAgICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobSBpbiBmcmVxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICAgICAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGZyZXE6IGZyZXEsIHNhbWVMZW5ndGg6IHNhbWVMZW5ndGggfTtcbiAgICB9XG4gICAgc3RhdGljIGdldEFscGhhYmV0U2ltaWxhcml0eShmcmVxLCBhbHBoYWJldCwgZ2FwU3ltYm9sID0gJy0nKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5uZXcgU2V0KE9iamVjdC5rZXlzKGZyZXEpKSwgLi4uYWxwaGFiZXRdKTtcbiAgICAgICAga2V5cy5kZWxldGUoZ2FwU3ltYm9sKTtcbiAgICAgICAgY29uc3QgZnJlcUEgPSBbXTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRBID0gW107XG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBrZXlzKSB7XG4gICAgICAgICAgICBmcmVxQS5wdXNoKG0gaW4gZnJlcSA/IGZyZXFbbV0gOiAwKTtcbiAgICAgICAgICAgIGFscGhhYmV0QS5wdXNoKGFscGhhYmV0LmhhcyhtKSA/IDEgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBUaGVyZSB3ZXJlIGEgZmV3IGlkZWFzOiBjaGktc3F1YXJlZCwgcGVhcnNvbiBjb3JyZWxhdGlvbiAodmFyaWFuY2U/KSwgc2NhbGFyIHByb2R1Y3QgKi9cbiAgICAgICAgY29uc3QgZnJlcVYgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRWID0gbmV3IFZlY3RvcihhbHBoYWJldEEpO1xuICAgICAgICBjb25zdCBjb3MgPSB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG4gICAgICAgIHJldHVybiBjb3M7XG4gICAgfVxuICAgIC8qKiBGaXJzdCB0cnkgdG8gZmluZCBjb2x1bW4gd2l0aCBzZW1UeXBlICdhbGlnbmVkU2VxdWVuY2UnLlxuICAgICAqIE5leHQgbG9vayBmb3IgY29sdW1uIHdpdGggZGF0YSBhbHBoYWJldCBjb3JyZXNwb25kaW5nIHRvIGFueSBvZiB0aGUga25vd24gcGFsZXR0ZXMuXG4gICAgICogQHBhcmFtIHtERy5EYXRhRnJhbWV9IGRhdGFGcmFtZVxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gVGhlIGNvbHVtbiB3ZSB3ZXJlIGxvb2tpbmcgZm9yIG9yIG51bGxcbiAgICAgKi9cbiAgICBwaWNrVXBTZXFDb2woZGF0YUZyYW1lKSB7XG4gICAgICAgIGxldCByZXMgPSBkYXRhRnJhbWUuY29sdW1ucy5ieVNlbVR5cGUoJ2FsaWduZWRTZXF1ZW5jZScpO1xuICAgICAgICBpZiAocmVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFGcmFtZS5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUoY29sLCA1KTtcbiAgICAgICAgICAgICAgICBpZiAoY3AgIT09IG51bGwgJiYgIShjcCBpbnN0YW5jZW9mIFVua25vd25TZXFQYWxldHRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMgPSBjb2w7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICAgICAqIEBwYXJhbSB7YW55fSBzZXEgb2JqZWN0IHdpdGggc2VxdWVuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaXR0ZXJBc0Zhc3RhKHNlcSkge1xuICAgICAgICBjb25zdCByZXMgPSB3dShzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChXZWJMb2dvLm1vbm9tZXJSZSkpXG4gICAgICAgICAgICAubWFwKChtYSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1SZXM7XG4gICAgICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKG0gaW4gV2ViTG9nby5hYVN5bm9ueW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIG1SZXMgPSBXZWJMb2dvLmFhU3lub255bXNbbV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYExvbmcgbW9ub21lciAnJHttfScgaGFzIG5vdCBhIHNob3J0IHN5bm9ueW0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbVJlcyA9IG07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbVJlcztcbiAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlcS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnMgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhO1xuICAgICAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG4gICAgICAgIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG5XZWJMb2dvLnZpZXdlckNvdW50ID0gLTE7XG5XZWJMb2dvLm1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5XZWJMb2dvLmFhU3lub255bXMgPSB7XG4gICAgJ1tNZU5sZV0nOiAnTCcsXG4gICAgJ1tNZUFdJzogJ0EnLFxuICAgICdbTWVHXSc6ICdHJyxcbiAgICAnW01lRl0nOiAnRicsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJWaUxXeHZaMjh1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjNaV0l0Ykc5bmJ5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZEUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1RVRkJUU3hEUVVGRE8wRkJSVGRDTEU5QlFVOHNSVUZCUXl4TlFVRk5MRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjJSU3hQUVVGUExFVkJRVU1zV1VGQldTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkRMMFlzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRhRVVzVDBGQlR5eEZRVUZETEdsQ1FVRnBRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkRMRTFCUVUwc1dVRkJXU3hEUVVGRE8wRkJiMEpxUlN4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNhVUpCUVdsQ0xFZEJRVWNzVlVGQlV5eExRVUZwUWp0SlFVTjRSU3hOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFVkJRVVVzUTBGQlF6dEpRVU14UXl4UFFVRlBMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE0wVXNRMEZCUXl4RFFVRkRPMEZCUlVZc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZNc1EwRkJVeXhGUVVGRkxFTkJRVk03U1VGRGVFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU5vUml4RFFVRkRMRU5CUVVNN1FVRkZSaXhOUVVGTkxFOUJRVThzYlVKQlFXMUNPMGxCVXpsQ08xRkJRMFVzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFF5eERRVUZETzBOQlEwWTdRVUZGUkN4TlFVRk5MRTlCUVU4c1dVRkJXVHRKUVV0MlFqczdUMEZGUnp0SlFVTklMRmxCUVZrc1NVRkJXVHRSUVVOMFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOcVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVObUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNCQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4UFFVRlJMRk5CUVZFc1JVRkJSU3hEUVVGRExGRkJRVkU3U1VGelJIUkRPMUZCUTBVc1MwRkJTeXhGUVVGRkxFTkJRVU03VVVGdVJFWXNZVUZCVVN4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JDTEdkQ1FVRlhMRWRCUVZrc1MwRkJTeXhEUVVGRE8xRkJSWEpETERSR1FVRTBSanRSUVVOc1JpeFBRVUZGTEVkQlFYTkNMRWxCUVVrc1EwRkJRenRSUVZFdlFpeGxRVUZWTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUlhoQ0xGZEJRVTBzUjBGQk5rSXNTVUZCU1N4RFFVRkRPMUZCUTJoRUxHMURRVUZ0UXp0UlFVTXpRaXhqUVVGVExFZEJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVVXZRaXhsUVVGVkxFZEJRVmNzUTBGQlF5eERRVUZETzFGQlEzWkNMR0ZCUVZFc1IwRkJWeXhEUVVGRExFTkJRVU03VVVGclFuSkNMR3RDUVVGaExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlJUZENMR3RDUVVGaExFZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTTBJc1owSkJRVmNzUjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVOTZRaXhoUVVGUkxFZEJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVdHdReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRjRU1zVDBGQlR5eERRVUZETEZkQlFWY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZla0lzU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZNVUlzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNaVUZCWlN4RlFVRkZMRVZCUVVVc1EwRkJRVHM0UkVGRGJrSXNRMEZCUXl4RFFVRkRPMUZCUTNoRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUlVGQlJTeERRVUZCTzJkRlFVTmhMRU5CUVVNc1EwRkJRenRSUVVNeFJDeEpRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVkQlFVY3NRMEZCUVR0blJVRkRXU3hEUVVGRExFTkJRVU03VVVGRk1VUXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGYkVVc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGFFVXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJUVkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRk4wTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNVVUZCVVN4RlFVTm9SU3hGUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEV0QlFVc3NSVUZCUlN4UlFVRlJMRVZCUVVVc1VVRkJVU3hEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRkZCUVZFc1JVRkRjRVVzUlVGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxFOUJRVThzUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6RkRMRWxCUVVrc1EwRkJReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXhSQ3hKUVVGSkxFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU51UlN4RFFVRkRPMGxCY2tORUxEQkVRVUV3UkR0SlFVTXhSQ3hKUVVGWkxFMUJRVTA3VVVGRGFFSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1lVRkJZU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5vUnl4RFFVRkRPMGxCYjBOaExFbEJRVWs3TzFsQlEyaENMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdG5Ra0ZEY0VJc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5RMEZCWjBNc1EwRkJReXhEUVVGRE8yZENRVU5vUkN4UFFVRlBPMkZCUTFJN1dVRkZSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTjRRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEhGRFFVRnhReXhEUVVGRE8xbEJSWEpFTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0WlFVTndReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8xbEJSWEJETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFsQlF6RkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkZha01zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVZvUkN3MlEwRkJOa003V1VGRE4wTXNlVU5CUVhsRE8xbEJRM3BETERCRFFVRXdRenRaUVVVeFF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVZjc1JVRkJkVVFzUlVGQlJUdG5Ra0ZEZEVZc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0blFrRkRia1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZGZEVNc1NVRkJTU3hSUVVGUkxFdEJRVXNzUzBGQlN5eERRVUZETzI5Q1FVTnlRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRk5VSXNUVUZCVFN4UFFVRlBMRWRCUVhWQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJRenR4UWtGRE0wUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNMFFzU1VGQlNTeFBRVUZQTEV0QlFVc3NVMEZCVXp0dlFrRkRka0lzVDBGQlR5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlJUVkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eEZRVUZGTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5xUkN4RFFVRkRMRU5CUVVNN1dVRkhSaXh4UjBGQmNVYzdXVUZEY2tjc1QwRkJUenRaUVVWUUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMjlDUVVOa0xFOUJRVTg3WjBKQlJWUXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJaU3hEUVVGRE8yZENRVU0zUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlJYaEZMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE5VTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEYkVZc1QwRkJUeXhKUVVGSkxFdEJRVXNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWS0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzI5Q1FVTXZRaXhQUVVGUE8yZENRVVZVTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVdVc1EwRkJRenRuUWtGRE4wSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVY0UlN4MVJFRkJkVVE3WjBKQlEzWkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE5VTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVN2QwSkJRM0pETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPM2RDUVVOdVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eGxRVUZsTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8zZENRVU5zUml4UFFVRlBMRWxCUVVrc1MwRkJTeXhQUVVGUExFbEJRVWtzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzI5Q1FVTTNSQ3hEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEU2p0WlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRlNpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZOMFlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlF6VkNMREpEUVVFeVF6dFpRVVV6UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzQkNMRU5CUVVNN1MwRkJRVHRKUVVWUExHbENRVUZwUWl4RFFVRkRMRWxCUVZNN1VVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVWc1FpeHBSRUZCYVVRN1VVRkRha1FzY1VaQlFYRkdPMUZCUTNKR0xHbEdRVUZwUmp0SlFVTnVSaXhEUVVGRE8wbEJSVVE3VDBGRFJ6dEpRVU5MTEZsQlFWazdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzFsQlEyeENMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzFsQlF6TkdMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTNaQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdaMEpCUTJoRUxFbEJRVWtzUTBGQlF5eHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPMkZCUTJwRk8xbEJRMFFzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMmRDUVVObUxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVXNRMEZCUXp0blFrRkRka0lzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0aFFVTTVRenRwUWtGQlRUdG5Ra0ZEVEN4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRlRUlzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGRFSXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU03WVVGRGFFSTdVMEZEUmp0UlFVTkVMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUlU4c1pVRkJaVHRSUVVOeVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwN1dVRkRaQ3hQUVVGUE8xRkJSVlFzU1VGQlNTeFZRVUU0UWl4RFFVRkRPMUZCUTI1RExFbEJRVWtzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlR0WlFVTjRRaXhOUVVGTkxFOUJRVThzUjBGQlpTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRPMWxCUTNaRkxGVkJRVlVzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVNM1FpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlF5OUdPMkZCUVUwN1dVRkRUQ3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNN1UwRkRja003VVVGRFJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlEyeEZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSV3hGTERCRVFVRXdSRHRSUVVNeFJDeE5RVUZOTEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJRemRFTEd0RVFVRnJSRHRSUVVOc1JDeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMR2RDUVVGblFpeERRVUZETEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzcEdMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZGTlVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVR0WlFVTm9SU3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1lVRkJZVHRaUVVNMVJDeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNCRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGRrVXNRMEZCUXp0SlFVVmxMR2xDUVVGcFFpeERRVUZETEZGQlFYRkNPMUZCUTNKRUxIZEZRVUYzUlR0UlFVTjRSU3hMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRmJFTXNVVUZCVVN4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRk8xbEJRM1pDTEV0QlFVc3NkVUpCUVhWQ08yZENRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eHZRa0ZCYjBJN1owSkJRM1pDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc2JVSkJRVzFDTzJkQ1FVTjBRaXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTA3V1VGRFVpeExRVUZMTEdsQ1FVRnBRanRuUWtGRGNFSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8yZENRVU53UWl4TlFVRk5PMWxCUTFJc1MwRkJTeXhsUVVGbE8yZENRVU5zUWl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRmRCUVZjN1owSkJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1YwRkJWenRuUWtGRFpDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXhWUVVGVk8yZENRVU5pTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEyeENMRTFCUVUwN1dVRkRVaXhMUVVGTExHMUNRVUZ0UWp0blFrRkRkRUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc2NVSkJRWEZDTzJkQ1FVTjRRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4VFFVRlRPMmRDUVVOYUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMR2xDUVVGcFFqdG5Ra0ZEY0VJc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJTeERRVUZETzJkQ1FVTjJRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFOQlExQTdTVUZEU0N4RFFVRkRPMGxCUlhGQ0xHVkJRV1U3T3pzN08xbEJRMjVETEUxQlFVMHNXVUZCV1N4SFFVRlhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRE8xbEJRemxFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4UlFVRlJMR3REUVVGclF5eFpRVUZaTEZWQlFWVXNRMEZCUXl4RFFVRkRPMWxCUTNKSExFOUJRVTBzWlVGQlpTeFpRVUZITzFsQlJYaENMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dFpRVVZ3UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdaMEpCUXpkQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyNUdMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHR2UWtGRE4wUXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hEUVVGRE8yOUNRVU4yUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03WjBKQlEyaENMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRFREdFpRVVZFTEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8xbEJRMnhDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4UlFVRlJMSGxDUVVGNVFpeERRVUZETEVOQlFVTTdVVUZEZUVVc1EwRkJRenRMUVVGQk8wbEJSWEZDTEUxQlFVMDdPenM3TzFsQlF6RkNMRTFCUVUwc1dVRkJXU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0WlFVTXpSQ3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhKUVVGSkxFTkJRVU1zVVVGQlVTeHJRMEZCYTBNc1dVRkJXU3hWUVVGVkxFTkJRVU1zUTBGQlF6dFpRVU55Unl4UFFVRk5MRTFCUVUwc1dVRkJSenRaUVVWbUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOc1JDeEpRVUZKTEVOQlFVTXNTVUZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRM0JDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1UwRkJVeXhEUVVGRE8xbEJRM3BDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRE8xbEJSWFJDTEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRM3BDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NRMEZCUXl4UlFVRlJMSGxDUVVGNVFpeERRVUZETEVOQlFVTTdVVUZEZUVVc1EwRkJRenRMUVVGQk8wbEJSVk1zWVVGQllTeERRVUZETEdGQlFXRXNSMEZCUnl4SFFVRkhPMUZCUTNwRExFbEJRVWtzU1VGQlNTeERRVUZETEhGQ1FVRnhRanRaUVVNMVFpeFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUZEVMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMW9zUTBGQlF6dEpRVVZUTEZWQlFWVTdVVUZEYkVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVE8xbEJReTlFTEU5QlFVODdVVUZGVkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03VVVGRmFFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRlRU1zUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zVFVGQlRTeFBRVUZQTEVkQlFWY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUTNSRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3haUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEYkVRN1VVRkZSQ3hwUmtGQmFVWTdVVUZEYWtZc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0UlFVTXpSQ3d5UjBGQk1rYzdVVUZETTBjc1owUkJRV2RFTzFGQlJXaEVMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnFReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEU5QlFVOHNSVUZCUlR0WlFVTjJRaXhKUVVGSkxFTkJRVU1zUjBGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUlRkRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVTdaMEpCUTA0c1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNRMEZCUXp0blFrRkRla0lzUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMkZCUTJwQ08xbEJSVVFzVFVGQlRTeEpRVUZKTEVkQlFXRXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5zUkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJUdG5Ra0ZETjBNc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlEzcERMRTFCUVUwc1EwRkJReXhIUVVGWExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF6dG5Ra0ZEZWtRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEUxQlFVMHNRMEZCUXp0dlFrRkRhRUlzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc2JVSkJRVzFDTEVWQlFVVXNRMEZCUXp0blFrRkRlRU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yRkJRMjVDTzFOQlEwWTdVVUZGUkN3MFFrRkJORUk3VVVGRE5VSXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRE4wTXNlVU5CUVhsRE8xbEJSWHBETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnNReXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNUdG5Ra0ZEZGtNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzFOQlEzWkZPMUZCUTBRc1dVRkJXVHRSUVVWYUxFMUJRVTBzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU5zUXl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU16UkN4dFJrRkJiVVk3VVVGRmJrWXNNRUpCUVRCQ08xRkJRekZDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEUxQlFVMHNTVUZCU1N4SFFVRjVReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVNM1JTeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXp0WlFVVXZReXhKUVVGSkxFTkJRVU1zUjBGQlZ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMWxCUldoRExFMUJRVTBzVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU5xUkN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3YjBKQlF6bENMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzNGQ1FVTTFRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVYzdiMEpCUTI1RExFOUJRVThzUTBGQlF5eERRVUZETzNGQ1FVTk9MRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVYzdiMEpCUTI1Q0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdjVUpCUTFBc2IwSkJRVzlDTzI5Q1FVTjJRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRTQ3hMUVVGTExFMUJRVTBzUzBGQlN5eEpRVUZKTEU5QlFVOHNSVUZCUlR0blFrRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFYZENMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBNc09FSkJRVGhDTzJkQ1FVTTVRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU03WjBKQlJYUkVMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTnVSaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlExSTdVMEZEUmp0UlFVTkVMRmxCUVZrN1NVRkRaQ3hEUVVGRE8wbEJSVVFzTWtOQlFUSkRPMGxCUXpORExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1RzN1VVRkRiRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6TkNMRWxCUVVrc1EwRkJReXhQUVVGUkxFTkJRVU1zVTBGQlV5eEhRVUZITEhGRFFVRnhReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNTMEZCU3l4RFFVRkRPMmRDUVVONFJpeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzJGQlEyeERPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4UFFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTTdZVUZEZEVNN1UwRkRSanRSUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU0zUkN4UFFVRlBPMUZCUlZRc1RVRkJUU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGRrTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkJSU3hQUVVGUE8xRkJSV1lzU1VGQlNTeE5RVUZOTzFsQlExSXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJSWEJDTEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVFpeERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRTlCUVU4c1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hEUVVGRExFTkJRVU1zV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkZia01zTUVOQlFUQkRPMUZCUXpGRExFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTjBSQ3hQUVVGUE8xRkJSVlFzTkVKQlFUUkNPMUZCUXpWQ0xFTkJRVU1zUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEU5QlFVOHNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEZGQlFWRXNRMEZCUXp0UlFVTjJRaXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEhWRFFVRjFReXhEUVVGRE8xRkJRMnBFTEUxQlFVMHNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1J5eE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eGxRVUZsTEVOQlFVTTdVVUZGTjBjc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVTdXVUZETjBNc1RVRkJUU3hIUVVGSExFZEJRV2xDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGREwwTXNRMEZCUXl4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRE8xbEJRMjVDTEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUTFvc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVTm1MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6TkVMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE5VSTdVVUZEUkN3clFrRkJLMEk3VVVGRkwwSXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRE4wTXNTMEZCU3l4TlFVRk5MRU5CUVVNc1QwRkJUeXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGVrVXNTVUZCU1N4UFFVRlBMRXRCUVVzc1IwRkJSeXhGUVVGRk8yOUNRVU51UWl4TlFVRk5MRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETzI5Q1FVVjRRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenR2UWtGRE1VUXNNRVJCUVRCRU8yOUNRVU14UkN4TlFVRk5MSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NRMEZCUXp0dlFrRkRia01zVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU03YjBKQlJXNURMRU5CUVVNc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dHZRa0ZEYmtJc1EwRkJReXhEUVVGRExGZEJRVmNzUjBGQlJ5eFhRVUZYTEVOQlFVTTdiMEpCUXpWQ0xFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1FpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkRla01zUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4TlFVRkJMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenR2UWtGRE0wUXNRMEZCUXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU03YjBKQlEzSkNMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzVTBGQlV5eERRVUZETzI5Q1FVTnVRaXdyUTBGQkswTTdiMEpCUXk5RExFMUJRVTBzUjBGQlJ5eEhRVUZuUWl4RFFVRkRMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzI5Q1FVVm9SQ3gxUTBGQmRVTTdiMEpCUTNaRExIbEdRVUY1Ump0dlFrRkZla1lzUTBGQlF5eERRVUZETEZsQlFWa3NRMEZEV2l4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEhGQ1FVRnhRaXhGUVVNelJDeERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYWtJc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0cFFrRkRhRVE3WVVGRFJqdFRRVU5HTzBsQlEwZ3NRMEZCUXp0SlFVVlBMRkZCUVZFN1VVRkRaQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSk8xbEJRelZDTEU5QlFVODdVVUZGVkN4SlFVRkpMRXRCUVVzc1IwRkJWeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNN1VVRkRja1FzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmVFWXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRk8xbEJRMmhDTEUxQlFVMHNUVUZCVFN4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVTjJSQ3hOUVVGTkxFMUJRVTBzUjBGQlZ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGNrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndSQ3hMUVVGTExFZEJRVWNzUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTjBRaXhOUVVGTkxFZEJRVWNzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTjRRaXhKUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xTkJRMnhFTzFGQlJVUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMUZCUTJ4RExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkZka01zYjBaQlFXOUdPMUZCUTNCR0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFVkJRVVVzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNKRUxFMUJRVTBzV1VGQldTeEhRVUZYTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRM0JFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExGbEJRVmtzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExGbEJRVmtzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGTjBRc05rSkJRVFpDTzFGQlF6ZENMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdFpRVU5xUWl4elEwRkJjME03V1VGRGRFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEV0QlFVc3NTVUZCU1N4RFFVRkRPMWxCUXpkRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzU1VGQlNTeERRVUZETzFsQlEzWkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1VVRkJVU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFOQlEyaEZPMkZCUVUwN1dVRkRUQ3c0UWtGQk9FSTdXVUZET1VJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNN1dVRkRka1FzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhIUVVGSExHZENRVUZuUWl4RFFVRkRPMWxCUXpkRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGT1VNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRaUVVWd1JTeHhRa0ZCY1VJN1dVRkRja0lzU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNSQ0xGRkJRVkVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhGUVVGRk8yZENRVU5vUXl4TFFVRkxMRXRCUVVzN2IwSkJRMUlzWVVGQllTeEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVFVGQlRUdG5Ra0ZEVWl4TFFVRkxMRkZCUVZFN2IwSkJRMWdzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTI1RkxFMUJRVTA3WjBKQlExSXNTMEZCU3l4UlFVRlJPMjlDUVVOWUxHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJRenR2UWtGRE4wUXNUVUZCVFR0aFFVTlFPMWxCUTBRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExHRkJRV0VzU1VGQlNTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMWxCUlRkRkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1RVRkJUU3hGUVVGRk8yZENRVU51UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOeVJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zV1VGQldTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUTJwRU8ybENRVUZOTzJkQ1FVTk1MRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4WlFVRlpMRVZCUVVVc1VVRkJVU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzJGQlEyeEZPMU5CUTBZN1VVRkZSQ3hwUWtGQmFVSTdVVUZEYWtJc05rUkJRVFpFTzFGQlF6ZEVMRFpFUVVFMlJEdFJRVU0zUkN3MlJFRkJOa1E3VVVGRE4wUXNOa1JCUVRaRU8xRkJRemRFTEZkQlFWYzdVVUZEV0N3eVJFRkJNa1E3VVVGRE0wUXNLMFJCUVN0RU8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhOUVVGcFFpeEZRVUZGTEZsQlFXOUNMRU5CUVVNN1VVRkRiRVVzU1VGQlNTeEhRVUZITEVkQlFYTkNMRWxCUVVrc1EwRkJRenRSUVVOc1F5eFJRVUZSTEUxQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRlRUlzUzBGQlN5eFZRVUZWTEVOQlFVTXNkMEpCUVhkQ08yZENRVU4wUXl4SFFVRkhMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMmRDUVVOd1F5eE5RVUZOTzFsQlExSXNTMEZCU3l4WFFVRlhMRU5CUVVNc2QwSkJRWGRDTzJkQ1FVTjJReXhIUVVGSExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1dVRkJXU3hEUVVGRE8yZENRVU4yUXl4TlFVRk5PMU5CUTFBN1VVRkRSQ3hOUVVGTkxFdEJRVXNzUjBGQlowSXNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVWNFJpeE5RVUZOTEd0Q1FVRnJRaXhIUVVGblF6dFpRVU4wUkN4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc1dVRkJXU3hEUVVGRE8xbEJRek5GTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1UwRkRlRVVzUTBGQlF6dFJRVU5HTEdkRVFVRm5SRHRSUVVOb1JDeE5RVUZOTEhGQ1FVRnhRaXhIUVVGaExHdENRVUZyUWp0aFFVTjJSQ3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRMMFFzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1VVRkRiRVFzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1R0WlFVTm1MRWRCUVVjc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdXVUZGYmtVc1IwRkJSeXhIUVVGSExHdENRVUZyUWl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVWcVF5eFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCYVVJc1JVRkJSU3hUUVVGcFFpeEZRVUZGTEZGQlFYTkNPMUZCUXpGRkxFMUJRVTBzU1VGQlNTeEhRVUUwUWl4RlFVRkZMRU5CUVVNN1VVRkRla01zU1VGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNSQ0xFbEJRVWtzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjJRaXhMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4VlFVRlZMRVZCUVVVN1dVRkRia01zVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJSVE5DTEVsQlFVa3NWMEZCVnl4SlFVRkpMRWxCUVVrN1owSkJRM0pDTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8ybENRVU4yUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ6dG5Ra0ZEYkVNc1ZVRkJWU3hIUVVGSExFdEJRVXNzUTBGQlF6dFpRVVZ5UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVTBGQlV5eEZRVUZGTzJkQ1FVTXpRaXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlR0dlFrRkRjRUlzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJRenQzUWtGRFpDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU5rTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03YVVKQlEyUTdZVUZEUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNWVUZCVlN4RlFVRkZMRlZCUVZVc1JVRkJReXhEUVVGRE8wbEJRemxETEVOQlFVTTdTVUZGVFN4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTVUZCYTBJc1JVRkJSU3hSUVVGeFFpeEZRVUZGTEZsQlFXOUNMRWRCUVVjN1VVRkRjRWNzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVZNc1EwRkJReXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNMFVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVWMlFpeE5RVUZOTEV0QlFVc3NSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkRNMElzVFVGQlRTeFRRVUZUTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZPMWxCUTNCQ0xFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRla003VVVGRFJDd3dSa0ZCTUVZN1VVRkRNVVlzVFVGQlRTeExRVUZMTEVkQlFWY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGVFTXNUVUZCVFN4VFFVRlRMRWRCUVZjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVVUZEYUVRc1RVRkJUU3hIUVVGSExFZEJRVmNzWjBKQlFXZENMRU5CUVVNc1MwRkJTeXhGUVVGRkxGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNwSExFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVPenM3TzA5QlNVYzdTVUZEU3l4WlFVRlpMRU5CUVVNc1UwRkJkVUk3VVVGRE1VTXNTVUZCU1N4SFFVRkhMRWRCUVhGQ0xGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdVVUZETTBVc1NVRkJTU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEyWXNTMEZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTzJkQ1FVTnVReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVdkQ0xFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNSRUxFbEJRVWtzUlVGQlJTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3haUVVGWkxHbENRVUZwUWl4RFFVRkRMRVZCUVVVN2IwSkJRM0pFTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNN2IwSkJRMVlzVFVGQlRUdHBRa0ZEVUR0aFFVTkdPMU5CUTBZN1VVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZKUkRzN08wOUJSMGM3U1VGRFNTeE5RVUZOTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWRCUVZFN1VVRkRjRU1zVFVGQlRTeEhRVUZITEVkQlFXRXNSVUZCUlN4RFFVRnRRaXhIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU51Uml4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGdlFpeEZRVUZGTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hKUVVGWkxFTkJRVU03V1VGRGFrSXNUVUZCVFN4RFFVRkRMRWRCUVZjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzaENMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdaMEpCUTJoQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVN2IwSkJRek5DTEVsQlFVa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTTVRanR4UWtGQlRUdHZRa0ZEVEN4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8yOUNRVU5XTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNORUpCUVRSQ0xFTkJRVU1zUTBGQlF6dHBRa0ZETDBRN1lVRkRSanRwUWtGQlRUdG5Ra0ZEVEN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMVk3V1VGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTmtMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzFGQlJXWXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1RVRkJUU3hEUVVGRExIZENRVUYzUWl4RFFVRkRMRk5CUVdsQ08xRkJRM1JFTEU5QlFVOHNRMEZCUXl4SFFVRlhMRVZCUVVVc1JVRkJSVHRaUVVOeVFpeFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRE9VSXNRMEZCUXl4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRUxIbEVRVUY1UkR0SlFVTnNSQ3hOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFXRXNSVUZCUlN4VFFVRnBRanRSUVVONFJDeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETzFsQlEzcERMRTlCUVU4c1QwRkJUeXhEUVVGRExHVkJRV1VzUTBGQlF6dGhRVU0xUWl4SlFVRkpMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJ4RUxFOUJRVThzVDBGQlR5eERRVUZETEhkQ1FVRjNRaXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZET3p0WlFVVnVSQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEc5Q1FVRnZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXcEVMREJDUVVFd1FqdEpRVU0xUWl4RFFVRkRPenRCUVhKeVFtRXNiVUpCUVZjc1IwRkJSeXhoUVVGaExFTkJRVU03UVVGRE0wSXNiVUpCUVZjc1IwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRWEZ2UW5wQ0xHbENRVUZUTEVkQlFVY3NjVUpCUVhGQ0xFTkJRVU03UVVGcFJHcEVMRGhHUVVFNFJqdEJRVU12UlN4clFrRkJWU3hIUVVFclFqdEpRVU4wUkN4VFFVRlRMRVZCUVVVc1IwRkJSenRKUVVOa0xFOUJRVThzUlVGQlJTeEhRVUZITzBsQlExb3NUMEZCVHl4RlFVRkZMRWRCUVVjN1NVRkRXaXhQUVVGUExFVkJRVVVzUjBGQlJ6dERRVU5pTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdkM1VnWm5KdmJTQW5kM1VuTzF4dWFXMXdiM0owSUNvZ1lYTWdjbmhxY3lCbWNtOXRJQ2R5ZUdwekp6dGNibHh1YVcxd2IzSjBJSHRXWldOMGIzSjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3ZG1WamRHOXlUR1Z1WjNSb0xDQjJaV04wYjNKRWIzUlFjbTlrZFdOMGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMEZ0YVc1dllXTnBaSE1zSUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsYzMwZ1puSnZiU0FuTGk0dllXMXBibTloWTJsa2N5YzdYRzVwYlhCdmNuUWdlMDUxWTJ4bGIzUnBaR1Z6TENCT2RXTnNaVzkwYVdSbGMxQmhiR1YwZEdWemZTQm1jbTl0SUNjdUxpOXVkV05zWlc5MGFXUmxjeWM3WEc1cGJYQnZjblFnZTFWdWEyNXZkMjVUWlhGUVlXeGxkSFJsTENCVmJtdHViM2R1VTJWeFVHRnNaWFIwWlhOOUlHWnliMjBnSnk0dUwzVnVhMjV2ZDI0bk8xeHVhVzF3YjNKMElIdFRaWEZRWVd4bGRIUmxmU0JtY205dElDY3VMaTl6WlhFdGNHRnNaWFIwWlhNbk8xeHVhVzF3YjNKMElIdFRkV0p6WTNKcGNIUnBiMjU5SUdaeWIyMGdKM0o0YW5Nbk8xeHVYRzVrWldOc1lYSmxJRzF2WkhWc1pTQW5aR0YwWVdkeWIyc3RZWEJwTDNOeVl5OW5jbWxrSnlCN1hHNGdJR2x1ZEdWeVptRmpaU0JTWldOMElIdGNiaUFnSUNCamIyNTBZV2x1Y3loNE9pQnVkVzFpWlhJc0lIazZJRzUxYldKbGNpazZJR0p2YjJ4bFlXNDdYRzRnSUgxY2JuMWNibHh1WkdWamJHRnlaU0JuYkc5aVlXd2dlMXh1SUNCcGJuUmxjbVpoWTJVZ1NGUk5URU5oYm5aaGMwVnNaVzFsYm5RZ2UxeHVJQ0FnSUdkbGRFTjFjbk52Y2xCdmMybDBhVzl1S0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1RvZ1JFY3VVRzlwYm5RN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElIUjVjR1VnVFc5dWIyMWxja1p5WlhGeklEMGdleUJiYlRvZ2MzUnlhVzVuWFRvZ2JuVnRZbVZ5SUgwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUWlhGRGIyeFRkR0YwY3lBOUlIc2dabkpsY1RvZ1RXOXViMjFsY2taeVpYRnpMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgxY2JtVjRjRzl5ZENCMGVYQmxJRk53YkdsMGRHVnlSblZ1WXlBOUlDaHpaWEU2SUhOMGNtbHVaeWtnUFQ0Z2MzUnlhVzVuVzEwN1hHNWNia2hVVFV4RFlXNTJZWE5GYkdWdFpXNTBMbkJ5YjNSdmRIbHdaUzVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaUE5SUdaMWJtTjBhVzl1S0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1RvZ1JFY3VVRzlwYm5RZ2UxeHVJQ0JqYjI1emRDQnlaV04wSUQwZ2RHaHBjeTVuWlhSQ2IzVnVaR2x1WjBOc2FXVnVkRkpsWTNRb0tUdGNiaUFnY21WMGRYSnVJRzVsZHlCRVJ5NVFiMmx1ZENobGRtVnVkQzVqYkdsbGJuUllJQzBnY21WamRDNXNaV1owTENCbGRtVnVkQzVqYkdsbGJuUlpJQzBnY21WamRDNTBiM0FwTzF4dWZUdGNibHh1UkVjdVVtVmpkQzV3Y205MGIzUjVjR1V1WTI5dWRHRnBibk1nUFNCbWRXNWpkR2x2YmloNE9pQnVkVzFpWlhJc0lIazZJRzUxYldKbGNpazZJR0p2YjJ4bFlXNGdlMXh1SUNCeVpYUjFjbTRnZEdocGN5NXNaV1owSUR3OUlIZ2dKaVlnZUNBOFBTQjBhR2x6TG5KcFoyaDBJQ1ltSUhSb2FYTXVkRzl3SUR3OUlIa2dKaVlnZVNBOFBTQjBhR2x6TG1KdmRIUnZiVHRjYm4wN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIdGNiaUFnTHlvcUlGTmxjWFZsYm1ObGN5QmpiM1Z1ZENCM2FYUm9JRzF2Ym05dFpYSWdhVzRnY0c5emFYUnBiMjVjYmlBZ0lDb3ZYRzRnSUdOdmRXNTBPaUJ1ZFcxaVpYSTdYRzVjYmlBZ0x5b3FJRkpsYldWdFltVnlJSE5qY21WbGJpQmpiMjl5WkhNZ2NtVmpkRnh1SUNBZ0tpOWNiaUFnWW05MWJtUnpPaUJFUnk1U1pXTjBPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSFJvYVhNdVkyOTFiblFnUFNBd08xeHVJQ0FnSUhSb2FYTXVZbTkxYm1SeklEMGdibVYzSUVSSExsSmxZM1FvTUN3Z01Dd2dNQ3dnTUNrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZCdmMybDBhVzl1U1c1bWJ5QjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J1WVcxbE9pQnpkSEpwYm1jN1hHNGdJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUZCdmMybDBhVzl1VFc5dWIyMWxja2x1Wm04Z2ZUdGNiaUFnY205M1EyOTFiblE2SUc1MWJXSmxjanRjYmx4dUlDQXZLaW9nWm5KbGNTQTlJSHQ5TENCeWIzZERiM1Z1ZENBOUlEQmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVWdUbUZ0WlNCdlppQndiM05wZEdsdmJpQW9KekV4TVVFbkxDQW5NVEV4TGpFbkxDQmxkR01wWEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNSdmNpaHVZVzFsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0IwYUdsekxtNWhiV1VnUFNCdVlXMWxPMXh1SUNBZ0lIUm9hWE11Wm5KbGNTQTlJSHQ5TzF4dUlDQWdJSFJvYVhNdWNtOTNRMjkxYm5RZ1BTQXdPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlhaV0pNYjJkdklHVjRkR1Z1WkhNZ1JFY3VTbk5XYVdWM1pYSWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsYzJsa2RXVnpVMlYwSUQwZ0oyNTFZMnhsYjNScFpHVnpKenRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nZG1sbGQyVnlRMjkxYm5RNklHNTFiV0psY2lBOUlDMHhPMXh1WEc0Z0lIQnlhWFpoZEdVZ2RtbGxkMlZ5U1dRNklHNTFiV0psY2lBOUlDMHhPMXh1SUNCd2NtbDJZWFJsSUdsdWFYUnBZV3hwZW1Wa09pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNWNiaUFnTHk4Z2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCamIyeHZjbE5qYUdWdFpUb2dRMjlzYjNKVFkyaGxiV1VnUFNCRGIyeHZjbE5qYUdWdFpYTmJUblZqYkdWdmRHbGtaWE5YWldKTWIyZHZMbkpsYzJsa2RXVnpVMlYwWFR0Y2JpQWdjSEp2ZEdWamRHVmtJR053T2lCVFpYRlFZV3hsZEhSbElId2diblZzYkNBOUlHNTFiR3c3WEc1Y2JpQWdjSEpwZG1GMFpTQm9iM04wUHpvZ1NGUk5URVJwZGtWc1pXMWxiblE3WEc0Z0lIQnlhWFpoZEdVZ2JYTm5TRzl6ZEQ4NklFaFVUVXhGYkdWdFpXNTBPMXh1SUNCd2NtbDJZWFJsSUdOaGJuWmhjejg2SUVoVVRVeERZVzUyWVhORmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElITnNhV1JsY2o4NklFUkhMbEpoYm1kbFUyeHBaR1Z5TzF4dUlDQndjbWwyWVhSbElIUmxlSFJDWVhObGJHbHVaVG9nUTJGdWRtRnpWR1Y0ZEVKaGMyVnNhVzVsTzF4dVhHNGdJSEJ5YVhaaGRHVWdZWGhwYzBobGFXZG9kRG9nYm5WdFltVnlJRDBnTVRJN1hHNWNiaUFnY0hKcGRtRjBaU0J6WlhGRGIydzZJRVJITGtOdmJIVnRianh6ZEhKcGJtYytJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQzh2SUhCeWFYWmhkR1VnYldGNFRHVnVaM1JvT2lCdWRXMWlaWElnUFNBeE1EQTdYRzRnSUhCeWFYWmhkR1VnY0c5emFYUnBiMjV6T2lCUWIzTnBkR2x2YmtsdVptOWJYU0E5SUZ0ZE8xeHVYRzRnSUhCeWFYWmhkR1VnY205M2MwMWhjMnRsWkRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnY0hKcGRtRjBaU0J5YjNkelRuVnNiRG9nYm5WdFltVnlJRDBnTUR0Y2JseHVJQ0F2THlCV2FXVjNaWEluY3lCd2NtOXdaWEowYVdWeklDaHNhV3RsYkhrZ2RHaGxlU0J6YUc5MWJHUWdZbVVnY0hWaWJHbGpJSE52SUhSb1lYUWdkR2hsZVNCallXNGdZbVVnYzJWMElHOTFkSE5wWkdVcFhHNGdJSEJ5YVhaaGRHVWdYM0J2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklIQnZjMmwwYVc5dVYybGtkR2c2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUcxcGJraGxhV2RvZERvZ2JuVnRZbVZ5TzF4dUlDQndkV0pzYVdNZ2JXRjRTR1ZwWjJoME9pQnVkVzFpWlhJN1hHNGdJSEIxWW14cFl5QmpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE02SUdKdmIyeGxZVzQ3WEc0Z0lIQjFZbXhwWXlCelpYRjFaVzVqWlVOdmJIVnRiazVoYldVNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCemRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdWdVpGQnZjMmwwYVc5dVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJR1pwZUZkcFpIUm9PaUJpYjI5c1pXRnVPMXh1SUNCd2RXSnNhV01nZG1WeWRHbGpZV3hCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUI4SUc1MWJHdzdYRzRnSUhCMVlteHBZeUJvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwT2lCemRISnBibWNnZkNCdWRXeHNPMXh1SUNCd2RXSnNhV01nWm1sMFFYSmxZVG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOb2NtbHVhMFZ0Y0hSNVZHRnBiRG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOcmFYQkZiWEIwZVZCdmMybDBhVzl1Y3pvZ1ltOXZiR1ZoYmp0Y2JseHVJQ0J3Y21sMllYUmxJSEJ2YzJsMGFXOXVUbUZ0WlhNNklITjBjbWx1WjF0ZElEMGdXMTA3WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0Z5ZEZCdmMybDBhVzl1T2lCdWRXMWlaWElnUFNBdE1UdGNibHh1SUNCd2NtbDJZWFJsSUdWdVpGQnZjMmwwYVc5dU9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQXZLaW9nUm05eUlITjBZWEowVUc5emFYUnBiMjRnWlhGMVlXeHpJSFJ2SUdWdVpGQnZjMmwwYVc5dUlFeGxibWQwYUNCcGN5QXhJQ292WEc0Z0lIQnlhWFpoZEdVZ1oyVjBJRXhsYm1kMGFDZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z1BEMGdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQS9JSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdMU0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lBeElEb2dNRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnZG1sbGQxTjFZbk02SUZOMVluTmpjbWx3ZEdsdmJsdGRJRDBnVzEwN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkbWxsZDJWeVNXUWdQU0JYWldKTWIyZHZMblpwWlhkbGNrTnZkVzUwTzF4dUlDQWdJRmRsWWt4dloyOHVkbWxsZDJWeVEyOTFiblFnS3owZ01UdGNibHh1SUNBZ0lIUm9hWE11ZEdWNGRFSmhjMlZzYVc1bElEMGdKM1J2Y0NjN1hHNWNiaUFnSUNCMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lEMGdkR2hwY3k1d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NW1iRzloZENnbmNHOXphWFJwYjI1WGFXUjBhQ2NzSURFMkx5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBMExDQnRZWGc2SURZMExDQndiM04wWm1sNE9pQW5jSGduZlNvdktUdGNiaUFnSUNCMGFHbHpMbTFwYmtobGFXZG9kQ0E5SUhSb2FYTXVabXh2WVhRb0oyMXBia2hsYVdkb2RDY3NJRFV3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUF5TlRBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVJQ0FnSUhSb2FYTXViV0Y0U0dWcFoyaDBJRDBnZEdocGN5NW1iRzloZENnbmJXRjRTR1ZwWjJoMEp5d2dNVEF3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUExTURBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVYRzRnSUNBZ2RHaHBjeTVqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNZ1BTQjBhR2x6TG1KdmIyd29KMk52Ym5OcFpHVnlUblZzYkZObGNYVmxibU5sY3ljc0lHWmhiSE5sS1R0Y2JpQWdJQ0IwYUdsekxuTmxjWFZsYm1ObFEyOXNkVzF1VG1GdFpTQTlJSFJvYVhNdWMzUnlhVzVuS0NkelpYRjFaVzVqWlVOdmJIVnRiazVoYldVbkxDQnVkV3hzS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2Yms1aGJXVWdQU0IwYUdsekxuTjBjbWx1WnlnbmMzUmhjblJRYjNOcGRHbHZiazVoYldVbkxDQnVkV3hzS1R0Y2JpQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2RsYm1SUWIzTnBkR2x2Yms1aGJXVW5MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lIUm9hWE11Wm1sNFYybGtkR2dnUFNCMGFHbHpMbUp2YjJ3b0oyWnBlRmRwWkhSb0p5d2dabUZzYzJVcE8xeHVYRzRnSUNBZ2RHaHBjeTUyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ0E5SUhSb2FYTXVjM1J5YVc1bktDZDJaWEowYVdOaGJFRnNhV2R1YldWdWRDY3NJQ2R0YVdSa2JHVW5MRnh1SUNBZ0lDQWdlMk5vYjJsalpYTTZJRnNuZEc5d0p5d2dKMjFwWkdSc1pTY3NJQ2RpYjNSMGIyMG5YWDBwTzF4dUlDQWdJSFJvYVhNdWFHOXlhWHB2Ym5SaGJFRnNhV2R1YldWdWRDQTlJSFJvYVhNdWMzUnlhVzVuS0Nkb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEp5d2dKMk5sYm5SbGNpY3NYRzRnSUNBZ0lDQjdZMmh2YVdObGN6b2dXeWRzWldaMEp5d2dKMk5sYm5SbGNpY3NJQ2R5YVdkb2RDZGRmU2s3WEc0Z0lDQWdkR2hwY3k1bWFYUkJjbVZoSUQwZ2RHaHBjeTVpYjI5c0tDZG1hWFJCY21WaEp5d2dkSEoxWlNrN1hHNGdJQ0FnZEdocGN5NXphSEpwYm10RmJYQjBlVlJoYVd3Z1BTQjBhR2x6TG1KdmIyd29KM05vY21sdWEwVnRjSFI1VkdGcGJDY3NJSFJ5ZFdVcE8xeHVJQ0FnSUhSb2FYTXVjMnRwY0VWdGNIUjVVRzl6YVhScGIyNXpJRDBnZEdocGN5NWliMjlzS0NkemEybHdSVzF3ZEhsUWIzTnBkR2x2Ym5NbkxDQm1ZV3h6WlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUdsdWFYUW9LVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWFXNXBkR2xoYkdsNlpXUXBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb0oxZGxZa3h2WjI4Z2MyVmpiMjVrSUdsdWFYUnBZV3hwZW1GMGFXOXVJU2NwTzF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WldRZ1BTQjBjblZsTzF4dUlDQWdJSFJvYVhNdWFHVnNjRlZ5YkNBOUlDY3ZhR1ZzY0M5MmFYTjFZV3hwZW1VdmRtbGxkMlZ5Y3k5M1pXSXRiRzluYnk1dFpDYzdYRzVjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1FnUFNCMWFTNWthWFlvSjA1dklHMWxjM05oWjJVbktUdGNiaUFnSUNCMGFHbHpMbTF6WjBodmMzUXVjM1I1YkdVdVpHbHpjR3hoZVNBOUlDZHViMjVsSnp0Y2JseHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GeklEMGdkV2t1WTJGdWRtRnpLQ2s3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YzNSNWJHVXVkMmxrZEdnZ1BTQW5NVEF3SlNjN1hHNWNiaUFnSUNCMGFHbHpMbWh2YzNRZ1BTQjFhUzVrYVhZb1czUm9hWE11YlhOblNHOXpkQ3dnZEdocGN5NWpZVzUyWVhOZEtUdGNibHh1SUNBZ0lDOHZJSFJvYVhNdWMyeHBaR1Z5SUQwZ2RXa3VjbUZ1WjJWVGJHbGtaWElvTUN3Z01qQXNJRElzSURVcE8xeHVJQ0FnSUM4dklIUm9hWE11YzJ4cFpHVnlMbkp2YjNRdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzRnSUNBZ0x5OGdkR2hwY3k1emJHbGtaWEl1Y205dmRDNXpkSGxzWlM1b1pXbG5hSFFnUFNBbk1USndlQ2M3WEc1Y2JpQWdJQ0JqYjI1emRDQm5aWFJOYjI1dmJXVnlJRDBnS0hBNklFUkhMbEJ2YVc1MEtUb2dXMjUxYldKbGNpd2djM1J5YVc1bklId2diblZzYkN3Z1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjhJRzUxYkd4ZElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHcFFiM01nUFNCTllYUm9MbVpzYjI5eUtIQXVlQ0F2SUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdncE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY0c5emFYUnBiMjRnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhUdGNibHh1SUNBZ0lDQWdhV1lnS0hCdmMybDBhVzl1SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYmFsQnZjeXdnYm5Wc2JDd2diblZzYkYwN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUcxdmJtOXRaWEk2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNBOUlFOWlhbVZqZEM1clpYbHpLSEJ2YzJsMGFXOXVMbVp5WlhFcFhHNGdJQ0FnSUNBZ0lDNW1hVzVrS0NodEtTQTlQaUJ3YjNOcGRHbHZiaTVtY21WeFcyMWRMbUp2ZFc1a2N5NWpiMjUwWVdsdWN5aHdMbmdzSUhBdWVTa3BPMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWElnUFQwOUlIVnVaR1ZtYVc1bFpDbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdWRXeHNMQ0J1ZFd4c1hUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdGIyNXZiV1Z5TENCd2IzTnBkR2x2Ymk1bWNtVnhXMjF2Ym05dFpYSmRYVHRjYmlBZ0lDQjlPMXh1WEc1Y2JpQWdJQ0F2THlCMGFHbHpMbk4xWW5NdWNIVnphQ2h5ZUdwekxtWnliMjFGZG1WdWREeE5iM1Z6WlVWMlpXNTBQaWgwYUdsekxtTmhiblpoY3l3Z0oyMXZkWE5sYjNabGNpY3BMbk4xWW5OamNtbGlaU2dvWlRvZ1RXOTFjMlZGZG1WdWRDa2dQVDRnZTF4dUlDQWdJQzh2SUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaHllR3B6TG1aeWIyMUZkbVZ1ZER4TmIzVnpaVVYyWlc1MFBpaDBhR2x6TG1OaGJuWmhjeXdnSjIxdmRYTmxiVzkyWlNjcExuTjFZbk5qY21saVpTZ29aVG9nVFc5MWMyVkZkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5bGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCaGNtZHpJRDBnWlNCaGN5Qk5iM1Z6WlVWMlpXNTBPMXh1SUNBZ0lDQWdZMjl1YzNRZ1cycFFiM01zSUcxdmJtOXRaWEpkSUQwZ1oyVjBUVzl1YjIxbGNpaDBhR2x6TG1OaGJuWmhjeTVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaWhoY21kektTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FtSmlCMGFHbHpMbk5sY1VOdmJDQW1KaUJ0YjI1dmJXVnlLU0I3WEc0Z0lDQWdJQ0FnSUhWcExuUnZiMngwYVhBdWMyaHZkMUp2ZDBkeWIzVndLSFJvYVhNdVpHRjBZVVp5WVcxbExDQW9hVkp2ZHlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE5sY1NBOUlIUm9hWE11YzJWeFEyOXNJUzVuWlhRb2FWSnZkeWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWeFRTQTlJSE5sY1NBL0lGZGxZa3h2WjI4dWMzQnNhWFIwWlhKQmMwWmhjM1JoS0hObGNTbGJkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJQ3NnYWxCdmMxMGdPaUJ1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnpaWEZOSUQwOVBTQnRiMjV2YldWeUlDWW1JSFJvYVhNdVpHRjBZVVp5WVcxbExtWnBiSFJsY2k1blpYUW9hVkp2ZHlrN1hHNGdJQ0FnSUNBZ0lIMHNJR0Z5WjNNdWVDQXJJREUyTENCaGNtZHpMbmtnS3lBeE5pazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjFhUzUwYjI5c2RHbHdMbWhwWkdVb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtTazdYRzVjYmlBZ0lDQjBhR2x6TG5acFpYZFRkV0p6TG5CMWMyZ29jbmhxY3k1bWNtOXRSWFpsYm5ROFRXOTFjMlZGZG1WdWRENG9kR2hwY3k1allXNTJZWE1zSUNkdGIzVnpaV1J2ZDI0bktTNXpkV0p6WTNKcFltVW9LR1U2SUUxdmRYTmxSWFpsYm5RcElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNnaGRHaHBjeTVqWVc1MllYTWdmSHdnWlM1aWRYUjBiMjRnSVQwZ01DbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCaGNtZHpJRDBnWlNCaGN5Qk5iM1Z6WlVWMlpXNTBPMXh1SUNBZ0lDQWdZMjl1YzNRZ1cycFFiM01zSUcxdmJtOXRaWEpkSUQwZ1oyVjBUVzl1YjIxbGNpaDBhR2x6TG1OaGJuWmhjeTVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaWhoY21kektTazdYRzVjYmlBZ0lDQWdJQzh2SUhCeVpYWmxiblJ6SUdSbGMyVnNaV04wSUdGc2JDQnliM2R6SUdsbUlIZGxJRzFwYzNNZ2JXOXViMjFsY2lCaWIzVnVaSE5jYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FtSmlCMGFHbHpMbk5sY1VOdmJDQW1KaUJ0YjI1dmJXVnlLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR0YwWVVaeVlXMWxMbk5sYkdWamRHbHZiaTVwYm1sMEtDaHBVbTkzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4SUQwZ2RHaHBjeTV6WlhGRGIyd2hMbWRsZENocFVtOTNLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6WlhGTklEMGdjMlZ4SUQ4Z1YyVmlURzluYnk1emNHeHBkSFJsY2tGelJtRnpkR0VvYzJWeEtWdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxjVTBnUFQwOUlHMXZibTl0WlhJZ0ppWWdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTa3BPMXh1WEc0Z0lDQWdkR2hwY3k1MmFXVjNVM1ZpY3k1d2RYTm9LSFZwTG05dVUybDZaVU5vWVc1blpXUW9kR2hwY3k1eWIyOTBLUzV6ZFdKelkzSnBZbVVvZEdocGN5NXliMjkwVDI1VGFYcGxRMmhoYm1kbFpDNWlhVzVrS0hSb2FYTXBLU2s3WEc1Y2JpQWdJQ0IwYUdsekxuSnZiM1F1WVhCd1pXNWtLSFJvYVhNdWFHOXpkQ2s3WEc0Z0lDQWdMeThnZEdocGN5NXliMjkwTG1Gd2NHVnVaRU5vYVd4a0tIUm9hWE11YzJ4cFpHVnlMbkp2YjNRcE8xeHVYRzRnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElISnZiM1JQYmxOcGVtVkRhR0Z1WjJWa0tHRnlaM002SUdGdWVTa2dlMXh1SUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVYRzRnSUNBZ0x5OGdZMjl1YzI5c1pTNWtaV0oxWnloZ1YyVmlURzluYnk1dmJsSnZiM1JUYVhwbFEyaGhibWRsWkNncElHQWdLMXh1SUNBZ0lDOHZJQ0FnWUhKdmIzUXVkMmxrZEdnOUpIdDBhR2x6TG5KdmIzUXVZMnhwWlc1MFYybGtkR2g5TENCeWIyOTBMbWhsYVdkb2REMGtlM1JvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhSOUxDQmdJQ3RjYmlBZ0lDQXZMeUFnSUdCallXNTJZWE11ZDJsa2RHZzlKSHQwYUdsekxtTmhiblpoY3k1M2FXUjBhSDBzSUdOaGJuWmhjeTVvWldsbmFIUTlKSHQwYUdsekxtTmhiblpoY3k1b1pXbG5hSFI5SUM1Z0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCQmMzTnBaMjV6SUh0QWJHbHVheUJ6WlhGRGIyeDlJR0Z1WkNCN1FHeHBibXNnWTNCOUlHSmhjMlZrSUc5dUlIdEFiR2x1YXlCelpYRjFaVzVqWlVOdmJIVnRiazVoYldWOUlHRnVaQ0JqWVd4c2N5QjdRR3hwYm1zZ2NtVnVaR1Z5ZlNncExseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQjFjR1JoZEdWVFpYRkRiMndvS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVaR0YwWVVaeVlXMWxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTmxjVU52YkNBOUlIUm9hWE11YzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsSUQ4Z2RHaHBjeTVrWVhSaFJuSmhiV1V1WTI5c0tIUm9hWE11YzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsS1NBNklHNTFiR3c3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTV6WlhGRGIyd2dQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxjVU52YkNBOUlIUm9hWE11Y0dsamExVndVMlZ4UTI5c0tIUm9hWE11WkdGMFlVWnlZVzFsS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhGMVpXNWpaVU52YkhWdGJrNWhiV1VnUFNCMGFHbHpMbk5sY1VOdmJDQS9JSFJvYVhNdWMyVnhRMjlzTG01aGJXVWdPaUJ1ZFd4c08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWMyVnhRMjlzS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVZM0FnUFNCWFpXSk1iMmR2TG5CcFkydFZjRkJoYkdWMGRHVW9kR2hwY3k1elpYRkRiMndwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJrNWhiV1Z6SUQwZ1cxMDdYRzRnSUNBZ0lDQWdJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE5SUMweE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1WdVpGQnZjMmwwYVc5dUlEMGdMVEU3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVZM0FnUFNCdWRXeHNPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkpsYm1SbGNpZ3BPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0IxY0dSaGRHVlFiM05wZEdsdmJuTW9LVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxuTmxjVU52YkNsY2JpQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJR3hsZENCallYUmxaMjl5YVdWek9pQW9jM1J5YVc1bklId2diblZzYkNrZ1cxMDdYRzRnSUNBZ2FXWWdLSFJvYVhNdWMyaHlhVzVyUlcxd2RIbFVZV2xzS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JwYm1ScFkyVnpPaUJKYm5Rek1rRnljbUY1SUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbWRsZEZObGJHVmpkR1ZrU1c1a1pYaGxjeWdwTzF4dUlDQWdJQ0FnWTJGMFpXZHZjbWxsY3lBOUlFRnljbUY1TG1aeWIyMG9ibVYzSUZObGRDaGNiaUFnSUNBZ0lDQWdRWEp5WVhrdVpuSnZiU2hCY25KaGVTaHBibVJwWTJWekxteGxibWQwYUNrdWEyVjVjeWdwS1M1dFlYQW9LR2s2SUc1MWJXSmxjaWtnUFQ0Z2RHaHBjeTV6WlhGRGIyd2hMbWRsZENocGJtUnBZMlZ6VzJsZEtTa3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1kyRjBaV2R2Y21sbGN5QTlJSFJvYVhNdWMyVnhRMjlzTG1OaGRHVm5iM0pwWlhNN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym5OMElHMWhlRXhsYm1kMGFDQTlJR05oZEdWbmIzSnBaWE11YkdWdVozUm9JRDRnTUNBL0lFMWhkR2d1YldGNEtDNHVMbU5oZEdWbmIzSnBaWE11YldGd0tGeHVJQ0FnSUNBZ0tITXBJRDArSUhNZ0lUMDlJRzUxYkd3Z1B5QlhaV0pNYjJkdkxuTndiR2wwZEdWeVFYTkdZWE4wWVNoektTNXNaVzVuZEdnZ09pQXdLU2tnT2lBd08xeHVYRzRnSUNBZ0x5OGdSMlYwSUhCdmMybDBhVzl1SUc1aGJXVnpJR1p5YjIwZ1pHRjBZU0JqYjJ4MWJXNGdkR0ZuSUNkd2IzTnBkR2x2Yms1aGJXVnpKMXh1SUNBZ0lHTnZibk4wSUhCdmMybDBhVzl1VG1GdFpYTlVlSFFnUFNCMGFHbHpMbk5sY1VOdmJDNW5aWFJVWVdjb0ozQnZjMmwwYVc5dVRtRnRaWE1uS1R0Y2JpQWdJQ0F2THlCR1lXeHNZbUZqYXlCcFppQW5jRzl6YVhScGIyNU9ZVzFsY3ljZ2RHRm5JR2x6SUc1dmRDQndjbTkyYVdSbFpGeHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBOUlIQnZjMmwwYVc5dVRtRnRaWE5VZUhRZ1B5QndiM05wZEdsdmJrNWhiV1Z6VkhoMExuTndiR2wwS0Njc0lDY3BMbTFoY0Nnb2Jpa2dQVDRnYmk1MGNtbHRLQ2twSURwY2JpQWdJQ0FnSUZzdUxpNUJjbkpoZVNodFlYaE1aVzVuZEdncExtdGxlWE1vS1YwdWJXRndLQ2hxVUc5ektTQTlQaUJnSkh0cVVHOXpJQ3NnTVgxZ0tUdGNibHh1SUNBZ0lIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQTlJQ2gwYUdsekxuTjBZWEowVUc5emFYUnBiMjVPWVcxbElDWW1JSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeUFtSmx4dUlDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJrNWhiV1Z6TG1sdVkyeDFaR1Z6S0hSb2FYTXVjM1JoY25SUWIzTnBkR2x2Yms1aGJXVXBLU0EvWEc0Z0lDQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE11YVc1a1pYaFBaaWgwYUdsekxuTjBZWEowVUc5emFYUnBiMjVPWVcxbEtTQTZJREE3WEc0Z0lDQWdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQTlJQ2gwYUdsekxtVnVaRkJ2YzJsMGFXOXVUbUZ0WlNBbUppQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTWdKaVpjYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeTVwYm1Oc2RXUmxjeWgwYUdsekxtVnVaRkJ2YzJsMGFXOXVUbUZ0WlNrcElEOWNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5NXBibVJsZUU5bUtIUm9hWE11Wlc1a1VHOXphWFJwYjI1T1lXMWxLU0E2SUNodFlYaE1aVzVuZEdnZ0xTQXhLVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ2ZG1WeWNtbGtaU0J2YmxCeWIzQmxjblI1UTJoaGJtZGxaQ2h3Y205d1pYSjBlVG9nUkVjdVVISnZjR1Z5ZEhrcE9pQjJiMmxrSUh0Y2JpQWdJQ0F2THlCamIyNXpiMnhsTG1SbFluVm5LR0JYWldKTWIyZHZMbTl1VUhKdmNHVnlkSGxEYUdGdVoyVmtLQ0FrZTNCeWIzQmxjblI1TG01aGJXVjlJRDBnSnljZ2ZTbGdLVHRjYmlBZ0lDQnpkWEJsY2k1dmJsQnliM0JsY25SNVEyaGhibWRsWkNod2NtOXdaWEowZVNrN1hHNWNiaUFnSUNCemQybDBZMmdnS0hCeWIzQmxjblI1TG01aGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkamIyNXphV1JsY2s1MWJHeFRaWEYxWlc1alpYTW5PbHh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZHpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVW5PbHh1SUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZUWlhGRGIyd29LVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKM04wWVhKMFVHOXphWFJwYjI1T1lXMWxKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVTJWeFEyOXNLQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2RsYm1SUWIzTnBkR2x2Yms1aGJXVW5PbHh1SUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZUWlhGRGIyd29LVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKM0J2YzJsMGFXOXVWMmxrZEdnbk9seHVJQ0FnSUNBZ2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQTlJSFJvYVhNdWNHOXphWFJwYjI1WGFXUjBhRHRjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5iV2x1U0dWcFoyaDBKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5iV0Y0U0dWcFoyaDBKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5abWw0VjJsa2RHZ25PbHh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZDJaWEowYVdOaGJFRnNhV2R1YldWdWRDYzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0oyaHZjbWw2YjI1MFlXeEJiR2xuYm0xbGJuUW5PbHh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZG1hWFJCY21WaEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmMyaHlhVzVyUlcxd2RIbFVZV2xzSnpwY2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFVHOXphWFJwYjI1ektDazdYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ2ZG1WeWNtbGtaU0JoYzNsdVl5QnZibFJoWW14bFFYUjBZV05vWldRb0tTQjdYRzRnSUNBZ1kyOXVjM1FnWkdGMFlVWnlZVzFsVkhoME9pQnpkSEpwYm1jZ1BTQjBhR2x6TG1SaGRHRkdjbUZ0WlNBL0lDZGtZWFJoSnlBNklDZHVkV3hzSnp0Y2JpQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQmlhVzg2SUZkbFlreHZaMjg4Skh0MGFHbHpMblpwWlhkbGNrbGtmVDR1YjI1VVlXSnNaVUYwZEdGamFHVmtLQ0JrWVhSaFJuSmhiV1VnUFNBa2UyUmhkR0ZHY21GdFpWUjRkSDBnS1NCemRHRnlkR0FwTzF4dUlDQWdJSE4xY0dWeUxtOXVWR0ZpYkdWQmRIUmhZMmhsWkNncE8xeHVYRzRnSUNBZ2RHaHBjeTUxY0dSaGRHVlRaWEZEYjJ3b0tUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZHY21GdFpTQWhQVDBnZG05cFpDQXdLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTjFZbk11Y0hWemFDaDBhR2x6TG1SaGRHRkdjbUZ0WlM1elpXeGxZM1JwYjI0dWIyNURhR0Z1WjJWa0xuTjFZbk5qY21saVpTZ29YeWtnUFQ0Z2RHaHBjeTV5Wlc1a1pYSW9LU2twTzF4dUlDQWdJQ0FnZEdocGN5NXpkV0p6TG5CMWMyZ29kR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG05dVEyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tGOHBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUxY0dSaGRHVlFiM05wZEdsdmJuTW9LVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb0tUdGNiaUFnSUNBZ0lIMHBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmhkMkZwZENCMGFHbHpMbWx1YVhRb0tUdGNiaUFnSUNCamIyNXpiMnhsTG1SbFluVm5LR0JpYVc4NklGZGxZa3h2WjI4OEpIdDBhR2x6TG5acFpYZGxja2xrZlQ0dWIyNVVZV0pzWlVGMGRHRmphR1ZrS0NrZ1pXNWtZQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWVhONWJtTWdaR1YwWVdOb0tDa2dlMXh1SUNBZ0lHTnZibk4wSUdSaGRHRkdjbUZ0WlZSNGRDQTlJR0FrZTNSb2FYTXVaR0YwWVVaeVlXMWxJRDhnSjJSaGRHRW5JRG9nSjI1MWJHd25mV0E3WEc0Z0lDQWdZMjl1YzI5c1pTNWtaV0oxWnloZ1ltbHZPaUJYWldKTWIyZHZQQ1I3ZEdocGN5NTJhV1YzWlhKSlpIMCtMbTl1VkdGaWJHVkJkSFJoWTJobFpDZ2daR0YwWVVaeVlXMWxJRDBnSkh0a1lYUmhSbkpoYldWVWVIUjlJQ2tnYzNSaGNuUmdLVHRjYmlBZ0lDQnpkWEJsY2k1a1pYUmhZMmdvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkbWxsZDFOMVluTXVabTl5UldGamFDZ29jM1ZpS1NBOVBpQnpkV0l1ZFc1emRXSnpZM0pwWW1Vb0tTazdYRzRnSUNBZ2RHaHBjeTVvYjNOMElTNXlaVzF2ZG1Vb0tUdGNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5QTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1FnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnZEdocGN5NW9iM04wSUQwZ2RXNWtaV1pwYm1Wa08xeHVYRzRnSUNBZ2RHaHBjeTVwYm1sMGFXRnNhWHBsWkNBOUlHWmhiSE5sTzF4dUlDQWdJR052Ym5OdmJHVXVaR1ZpZFdjb1lHSnBiem9nVjJWaVRHOW5iendrZTNSb2FYTXVkbWxsZDJWeVNXUjlQaTV2YmxSaFlteGxRWFIwWVdOb1pXUW9LU0JsYm1SZ0tUdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmYm5Wc2JGTmxjWFZsYm1ObEtHWnBiR3hsY2xKbGMybGtkV1VnUFNBbldDY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZibk5wWkdWeVRuVnNiRk5sY1hWbGJtTmxjeWxjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUVhKeVlYa29kR2hwY3k1TVpXNW5kR2dwTG1acGJHd29abWxzYkdWeVVtVnphV1IxWlNrdWFtOXBiaWduSnlrN1hHNWNiaUFnSUNCeVpYUjFjbTRnSnljN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdYMk5oYkdOMWJHRjBaU2dwSUh0Y2JpQWdJQ0JwWmlBb0lYUm9hWE11WTJGdWRtRnpJSHg4SUNGMGFHbHpMbWh2YzNRZ2ZId2dJWFJvYVhNdWMyVnhRMjlzSUh4OElDRjBhR2x6TG1SaGRHRkdjbUZ0WlNsY2JpQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJSFJvYVhNdVkyRnNZMU5wZW1Vb0tUdGNibHh1SUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6SUQwZ2JtVjNJRUZ5Y21GNUtIUm9hWE11VEdWdVozUm9LVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElIQnZjMDVoYldVNklITjBjbWx1WnlBOUlIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGMxdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhUdGNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRJRDBnYm1WM0lGQnZjMmwwYVc5dVNXNW1ieWh3YjNOT1lXMWxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUF5TURJeUxUQTFMVEExSUdGemEyRnNhMmx1SUdsdWMzUnlkV04wWldRZ2RHOGdjMmh2ZHlCWFpXSk1iMmR2SUdKaGMyVmtJRzl1SUdacGJIUmxjaUFvYm05MElITmxiR1ZqZEdsdmJpbGNiaUFnSUNCamIyNXpkQ0JwYm1ScFkyVnpJRDBnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkRk5sYkdWamRHVmtTVzVrWlhobGN5Z3BPMXh1SUNBZ0lDOHZJR052Ym5OMElHbHVaR2xqWlhNZ1BTQjBhR2x6TG1SaGRHRkdjbUZ0WlM1elpXeGxZM1JwYjI0dWRISjFaVU52ZFc1MElENGdNQ0EvSUhSb2FYTXVaR0YwWVVaeVlXMWxMbk5sYkdWamRHbHZiaTVuWlhSVFpXeGxZM1JsWkVsdVpHVjRaWE1vS1NBNlhHNGdJQ0FnTHk4Z0lDQjBhR2x6TG1SaGRHRkdjbUZ0WlM1bWFXeDBaWEl1WjJWMFUyVnNaV04wWldSSmJtUmxlR1Z6S0NrN1hHNWNiaUFnSUNCMGFHbHpMbkp2ZDNOTllYTnJaV1FnUFNCcGJtUnBZMlZ6TG14bGJtZDBhRHRjYmlBZ0lDQjBhR2x6TG5KdmQzTk9kV3hzSUQwZ01EdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdhU0J2WmlCcGJtUnBZMlZ6S1NCN1hHNGdJQ0FnSUNCc1pYUWdjem9nYzNSeWFXNW5JRDBnUEhOMGNtbHVaejRvZEdocGN5NXpaWEZEYjJ3dVoyVjBLR2twS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLQ0Z6S1NCN1hHNGdJQ0FnSUNBZ0lITWdQU0IwYUdsekxsOXVkV3hzVTJWeGRXVnVZMlVvS1R0Y2JpQWdJQ0FnSUNBZ0t5dDBhR2x6TG5KdmQzTk9kV3hzTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCamIyNXpkQ0J6WlhGTk9pQnpkSEpwYm1kYlhTQTlJRmRsWWt4dloyOHVjM0JzYVhSMFpYSkJjMFpoYzNSaEtITXBPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhbEJ2Y3lBOUlEQTdJR3BRYjNNZ1BDQjBhR2x6TGt4bGJtZDBhRHNnYWxCdmN5c3JLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ0U1c1bWJ5QTlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRTdYRzRnSUNBZ0lDQWdJR052Ym5OMElHMDZJSE4wY21sdVp5QTlJSE5sY1UxYmRHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlDc2dhbEJ2YzEwZ2ZId2dKeTBuTzF4dUlDQWdJQ0FnSUNCcFppQW9JU2h0SUdsdUlIQnRTVzVtYnlrcFhHNGdJQ0FnSUNBZ0lDQWdjRzFKYm1adlcyMWRJRDBnYm1WM0lGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOG9LVHRjYmlBZ0lDQWdJQ0FnY0cxSmJtWnZXMjFkTG1OdmRXNTBLeXM3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThqY21WbmFXOXVJRkJ2YkdsemFDQm1jbVZ4SUdOdmRXNTBjMXh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdMeThnWkdWc1pYUmxJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRmJKeTBuWFR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZibk5iYWxCdmMxMHVjbTkzUTI5MWJuUWdQU0F3TzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCdElHbHVJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRXBYRzRnSUNBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG5KdmQwTnZkVzUwSUNzOUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhGYmJWMHVZMjkxYm5RN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2Ymx4dVhHNGdJQ0FnWTI5dWMzUWdjaUE5SUhkcGJtUnZkeTVrWlhacFkyVlFhWGhsYkZKaGRHbHZPMXh1SUNBZ0lHTnZibk4wSUcxaGVFaGxhV2RvZENBOUlIUm9hWE11WTJGdWRtRnpMbWhsYVdkb2RDQXRJSFJvYVhNdVlYaHBjMGhsYVdkb2RDQXFJSEk3WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ6d2tlM1JvYVhNdWRtbGxkMlZ5U1dSOVBpNWZZMkZzWTNWc1lYUmxLQ2tnYldGNFNHVnBaMmgwUFNSN2JXRjRTR1ZwWjJoMGZTNWdLVHRjYmx4dUlDQWdJQzh2STNKbFoybHZiaUJEWVd4amRXeGhkR1VnYzJOeVpXVnVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbWNtVnhPaUI3SUZ0ak9pQnpkSEpwYm1kZE9pQlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZJSDBnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNW1jbVZ4TzF4dUlDQWdJQ0FnWTI5dWMzUWdjbTkzUTI5MWJuUWdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1eWIzZERiM1Z1ZER0Y2JseHVJQ0FnSUNBZ2JHVjBJSGs2SUc1MWJXSmxjaUE5SUhSb2FYTXVZWGhwYzBobGFXZG9kRHRjYmx4dUlDQWdJQ0FnWTI5dWMzUWdaVzUwY21sbGN5QTlJRTlpYW1WamRDNWxiblJ5YVdWektHWnlaWEVwTG5OdmNuUW9LR0VzSUdJcElEMCtJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRmJNRjBnSVQwOUlDY3RKeUFtSmlCaVd6QmRJQ0U5UFNBbkxTY3BYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0piTVYwdVkyOTFiblFnTFNCaFd6RmRMbU52ZFc1ME8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGhXekJkSUQwOVBTQW5MU2NnSmlZZ1lsc3dYU0E5UFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF3TzF4dUlDQWdJQ0FnSUNCbGJITmxJR2xtSUNoaFd6QmRJRDA5UFNBbkxTY3BYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQzB4TzF4dUlDQWdJQ0FnSUNCbGJITmxJQzhxSUNoaVd6QmRJRDA5UFNBbkxTY3BJQ292WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNzeE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR1Z1ZEhKNUlHOW1JR1Z1ZEhKcFpYTXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjRzFKYm1adk9pQlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZJRDBnWlc1MGNubGJNVjA3WEc0Z0lDQWdJQ0FnSUM4dklHTnZibk4wSUcwNklITjBjbWx1WnlBOUlHVnVkSEo1V3pCZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCb09pQnVkVzFpWlhJZ1BTQnRZWGhJWldsbmFIUWdLaUJ3YlVsdVptOHVZMjkxYm5RZ0x5QnliM2REYjNWdWREdGNibHh1SUNBZ0lDQWdJQ0J3YlVsdVptOHVZbTkxYm1SeklEMGdibVYzSUVSSExsSmxZM1FvYWxCdmN5QXFJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dzSUhrc0lIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ3NJR2dwTzF4dUlDQWdJQ0FnSUNCNUlDczlJR2c3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJMlZ1WkhKbFoybHZibHh1SUNCOVhHNWNiaUFnTHk4Z2NtVm1iR1ZqZENCamFHRnVaMlZ6SUcxaFpHVWdkRzhnWm1sc2RHVnlMM05sYkdWamRHbHZibHh1SUNCeVpXNWtaWElvY21WallXeGpJRDBnZEhKMVpTa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtMXpaMGh2YzNRcElIdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxuTmxjVU52YkNBbUppQWhkR2hwY3k1amNDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXpaMGh2YzNRaExtbHVibVZ5VkdWNGRDQTlJR0JWYm10dWIzZHVJSEJoYkdWMGRHVWdLR052YkhWdGJpQnpaVzFVZVhCbE9pQW5KSHQwYUdsekxuTmxjVU52YkM1elpXMVVlWEJsZlNjcExtQTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWJYTm5TRzl6ZENFdWMzUjViR1V1WkdsemNHeGhlU0E5SUNjbk8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0YzJkSWIzTjBJUzV6ZEhsc1pTNWthWE53YkdGNUlEMGdKMjV2Ym1Vbk8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hkR2hwY3k1allXNTJZWE1nZkh3Z0lYUm9hWE11YzJWeFEyOXNJSHg4SUNGMGFHbHpMbVJoZEdGR2NtRnRaU0I4ZkNBaGRHaHBjeTVqY0NsY2JpQWdJQ0FnSUhKbGRIVnlianRjYmx4dUlDQWdJR052Ym5OMElHY2dQU0IwYUdsekxtTmhiblpoY3k1blpYUkRiMjUwWlhoMEtDY3laQ2NwTzF4dUlDQWdJR2xtSUNnaFp5a2djbVYwZFhKdU8xeHVYRzRnSUNBZ2FXWWdLSEpsWTJGc1l5bGNiaUFnSUNBZ0lIUm9hWE11WDJOaGJHTjFiR0YwWlNncE8xeHVYRzRnSUNBZ1p5NXlaWE5sZEZSeVlXNXpabTl5YlNncE8xeHVJQ0FnSUdjdVptbHNiRk4wZVd4bElEMGdKM2RvYVhSbEp6dGNiaUFnSUNCbkxtWnBiR3hTWldOMEtEQXNJREFzSUhSb2FYTXVZMkZ1ZG1GekxuZHBaSFJvTENCMGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhRcE8xeHVJQ0FnSUdjdWRHVjRkRUpoYzJWc2FXNWxJRDBnZEdocGN5NTBaWGgwUW1GelpXeHBibVU3WEc1Y2JpQWdJQ0F2THlCUWNtVjJaVzUwY3lCa2FYWnBjMmx2YmlCaWVTQjZaWEp2SUc5dUlFeGxibWQwYUNBOUlEQmNiaUFnSUNCcFppQW9kR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJRDA5UFNBdE1TQjhmQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVJRDA5UFNBdE1TbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUM4dkkzSmxaMmx2YmlCUWJHOTBJSEJ2YzJsMGFXOXVUbUZ0WlhOY2JpQWdJQ0JuTG5KbGMyVjBWSEpoYm5ObWIzSnRLQ2s3WEc0Z0lDQWdaeTVtYVd4c1UzUjViR1VnUFNBbllteGhZMnNuTzF4dUlDQWdJR2N1ZEdWNGRFRnNhV2R1SUQwZ0oyTmxiblJsY2ljN1hHNGdJQ0FnWnk1bWIyNTBJRDBnSnpFd2NIZ2dVbTlpYjNSdkxDQlNiMkp2ZEc4Z1RHOWpZV3dzSUhOaGJuTXRjMlZ5YVdZbk8xeHVJQ0FnSUdOdmJuTjBJSEJ2YzA1aGJXVk5ZWGhYYVdSMGFDQTlJRTFoZEdndWJXRjRLQzR1TG5Sb2FYTXVjRzl6YVhScGIyNXpMbTFoY0Nnb2NHOXpLU0E5UGlCbkxtMWxZWE4xY21WVVpYaDBLSEJ2Y3k1dVlXMWxLUzUzYVdSMGFDa3BPMXh1SUNBZ0lHTnZibk4wSUdoVFkyRnNaU0E5SUhCdmMwNWhiV1ZOWVhoWGFXUjBhQ0E4SUNoMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lDMGdNaWtnUHlBeElEb2dLSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dnTFNBeUtTQXZJSEJ2YzA1aGJXVk5ZWGhYYVdSMGFEdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2NHOXpPaUJRYjNOcGRHbHZia2x1Wm04Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYVHRjYmlBZ0lDQWdJR2N1Y21WelpYUlVjbUZ1YzJadmNtMG9LVHRjYmlBZ0lDQWdJR2N1YzJWMFZISmhibk5tYjNKdEtGeHVJQ0FnSUNBZ0lDQm9VMk5oYkdVc0lEQXNJREFzSURFc1hHNGdJQ0FnSUNBZ0lHcFFiM01nS2lCMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lDc2dkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ0F2SURJc0lEQXBPMXh1SUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2h3YjNNdWJtRnRaU3dnTUN3Z01DazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dkkyVnVaSEpsWjJsdmJpQlFiRzkwSUhCdmMybDBhVzl1VG1GdFpYTmNibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JiYlc5dWIyMWxjaXdnY0cxSmJtWnZYU0J2WmlCUFltcGxZM1F1Wlc1MGNtbGxjeWgwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhLU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpQWhQVDBnSnkwbktTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZaUE5SUhCdFNXNW1ieTVpYjNWdVpITTdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JtYjI1MFUzUjViR1VnUFNBbk1UWndlQ0JTYjJKdmRHOHNJRkp2WW05MGJ5Qk1iMk5oYkN3Z2MyRnVjeTF6WlhKcFppYzdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1NHRmphM01nZEc4Z2MyTmhiR1VnZFhCd1pYSmpZWE5sSUdOb1lYSmhZM1JsY25NZ2RHOGdkR0Z5WjJWMElISmxZM1JoYm1kc1pWeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIVndjR1Z5WTJGelpVeGxkSFJsY2tGelkyVnVkQ0E5SURBdU1qVTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwSUQwZ01USXVNanRjYmx4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNBZ0lDQWdJQ0JuTG5OMGNtOXJaVk4wZVd4bElEMGdKMnhwWjJoMFozSmhlU2M3WEc0Z0lDQWdJQ0FnSUNBZ1p5NXNhVzVsVjJsa2RHZ2dQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZqZENoaUxteGxablFzSUdJdWRHOXdMQ0JpTG5kcFpIUm9MQ0JpTG1obGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1p5NW1hV3hzVTNSNWJHVWdQU0IwYUdsekxtTndMbWRsZENodGIyNXZiV1Z5S1NBL1B5QjBhR2x6TG1Od0xtZGxkQ2duYjNSb1pYSW5LVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuUmxlSFJCYkdsbmJpQTlJQ2RzWldaMEp6dGNiaUFnSUNBZ0lDQWdJQ0JuTG1admJuUWdQU0JtYjI1MFUzUjViR1U3WEc0Z0lDQWdJQ0FnSUNBZ0x5OW5MbVpwYkd4U1pXTjBLR0l1YkdWbWRDd2dZaTUwYjNBc0lHSXVkMmxrZEdnc0lHSXVhR1ZwWjJoMEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRWRzA2SUZSbGVIUk5aWFJ5YVdOeklEMGdaeTV0WldGemRYSmxWR1Y0ZENodGIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUNBZ0lDQWdJQzh2SUdsbUlDaHRUUzVoWTNSMVlXeENiM1Z1WkdsdVowSnZlRUZ6WTJWdWRDQWhQU0F3S1Z4dUlDQWdJQ0FnSUNBZ0lDOHZJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdiVG9nSkh0dGZTd2diVTB1WVdOMGRXRnNRbTkxYm1ScGJtZENiM2hCYzJObGJuUTZJQ1I3YlUwdVlXTjBkV0ZzUW05MWJtUnBibWRDYjNoQmMyTmxiblI5WUNrN1hHNWNiaUFnSUNBZ0lDQWdJQ0JuTG5ObGRGUnlZVzV6Wm05eWJTaGNiaUFnSUNBZ0lDQWdJQ0FnSUdJdWQybGtkR2dnTHlCdFZHMHVkMmxrZEdnc0lEQXNJREFzSUdJdWFHVnBaMmgwSUM4Z2RYQndaWEpqWVhObFRHVjBkR1Z5U0dWcFoyaDBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1lpNXNaV1owTENCaUxuUnZjQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaHRiMjV2YldWeUxDQXdMQ0F0ZFhCd1pYSmpZWE5sVEdWMGRHVnlRWE5qWlc1MEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdZMkZzWTFOcGVtVW9LU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5QjhmQ0FoZEdocGN5NW9iM04wS1Z4dUlDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdiR1YwSUhkcFpIUm9PaUJ1ZFcxaVpYSWdQU0IwYUdsekxreGxibWQwYUNBcUlIUm9hWE11Y0c5emFYUnBiMjVYYVdSMGFEdGNiaUFnSUNCc1pYUWdhR1ZwWjJoMElEMGdUV0YwYUM1dGFXNG9kR2hwY3k1dFlYaElaV2xuYUhRc0lFMWhkR2d1YldGNEtIUm9hWE11YldsdVNHVnBaMmgwTENCMGFHbHpMbkp2YjNRdVkyeHBaVzUwU0dWcFoyaDBLU2s3WEc1Y2JpQWdJQ0JwWmlBb2RHaHBjeTVtYVhSQmNtVmhLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjRVMk5oYkdVNklHNTFiV0psY2lBOUlIUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFFnTHlCb1pXbG5hSFE3WEc0Z0lDQWdJQ0JqYjI1emRDQjVVMk5oYkdVNklHNTFiV0psY2lBOUlIUm9hWE11Y205dmRDNWpiR2xsYm5SWGFXUjBhQ0F2SUhkcFpIUm9PMXh1SUNBZ0lDQWdZMjl1YzNRZ2MyTmhiR1VnUFNCTllYUm9MbTFoZUNneExDQk5ZWFJvTG0xcGJpaDRVMk5oYkdVc0lIbFRZMkZzWlNrcE8xeHVJQ0FnSUNBZ2QybGtkR2dnUFNCM2FXUjBhQ0FxSUhOallXeGxPMXh1SUNBZ0lDQWdhR1ZwWjJoMElEMGdhR1ZwWjJoMElDb2djMk5oYkdVN1hHNGdJQ0FnSUNCMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lEMGdkR2hwY3k1d2IzTnBkR2x2YmxkcFpIUm9JQ29nYzJOaGJHVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnY2lBOUlIZHBibVJ2ZHk1a1pYWnBZMlZRYVhobGJGSmhkR2x2TzF4dUlDQWdJSFJvYVhNdVkyRnVkbUZ6TG5kcFpIUm9JRDBnZDJsa2RHZ2dLaUJ5TzF4dUlDQWdJSFJvYVhNdVkyRnVkbUZ6TG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dVhHNGdJQ0FnTHk4Z1kyOXVjM1FnWTJGdWRtRnpTR1ZwWjJoME9pQnVkVzFpWlhJZ1BTQjNhV1IwYUNBK0lIUm9hWE11Y205dmRDNWpiR2xsYm5SWGFXUjBhQ0EvSUdobGFXZG9kQ0F0SURnZ09pQm9aV2xuYUhRN1hHNGdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0Nkb1pXbG5hSFFuTENCZ0pIdG9aV2xuYUhSOWNIaGdLVHRjYmlBZ0lDQmpiMjV6ZENCallXNTJZWE5JWldsbmFIUTZJRzUxYldKbGNpQTlJSFJvYVhNdWFHOXpkQzVqYkdsbGJuUklaV2xuYUhRN1hHNGdJQ0FnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUQwZ1kyRnVkbUZ6U0dWcFoyaDBJQ29nY2p0Y2JpQWdJQ0IwYUdsekxtTmhiblpoY3k1emRIbHNaUzV6WlhSUWNtOXdaWEowZVNnbmFHVnBaMmgwSnl3Z1lDUjdZMkZ1ZG1GelNHVnBaMmgwZlhCNFlDazdYRzVjYmlBZ0lDQXZMeUJCWkdwMWMzUWdhRzl6ZENCaGJtUWdjbTl2ZENCM2FXUjBhRnh1SUNBZ0lHbG1JQ2gwYUdsekxtWnBlRmRwWkhSb0tTQjdYRzRnSUNBZ0lDQXZMeUJtZFd4c0lIZHBaSFJvSUdadmNpQmpZVzUyWVhNZ2FHOXpkQ0JoYm1RZ2NtOXZkRnh1SUNBZ0lDQWdkR2hwY3k1eWIyOTBMbk4wZVd4bExuZHBaSFJvSUQwZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5kcFpIUm9JRDBnWUNSN2QybGtkR2g5Y0hoZ08xeHVJQ0FnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG1obGFXZG9kQ0E5SUdBa2UyaGxhV2RvZEgxd2VHQTdYRzRnSUNBZ0lDQjBhR2x6TG1odmMzUXVjM1I1YkdVdWMyVjBVSEp2Y0dWeWRIa29KMjkyWlhKbWJHOTNKeXdnSjJocFpHUmxiaWNzSUNkcGJYQnZjblJoYm5RbktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnTHk4Z1lXeHNiM2NnYzJOeWIyeHNJR05oYm5aaGN5QnBiaUJ5YjI5MFhHNGdJQ0FnSUNCMGFHbHpMbkp2YjNRdWMzUjViR1V1ZDJsa2RHZ2dQU0IwYUdsekxtaHZjM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQW5NVEF3SlNjN1hHNGdJQ0FnSUNCMGFHbHpMbWh2YzNRdWMzUjViR1V1YjNabGNtWnNiM2RZSUQwZ0oyRjFkRzhoYVcxd2IzSjBZVzUwSnp0Y2JpQWdJQ0FnSUhSb2FYTXVhRzl6ZEM1emRIbHNaUzV6WlhSUWNtOXdaWEowZVNnbmIzWmxjbVpzYjNjbkxDQnVkV3hzS1R0Y2JseHVJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZDBaWGgwTFdGc2FXZHVKeXdnZEdocGN5NW9iM0pwZW05dWRHRnNRV3hwWjI1dFpXNTBLVHRjYmx4dUlDQWdJQ0FnTHk4Z2RtVnlkR2xqWVd3Z1lXeHBaMjV0Wlc1MFhHNGdJQ0FnSUNCc1pYUWdhRzl6ZEZSdmNFMWhjbWRwYmlBOUlEQTdYRzRnSUNBZ0lDQnpkMmwwWTJnZ0tIUm9hWE11ZG1WeWRHbGpZV3hCYkdsbmJtMWxiblFwSUh0Y2JpQWdJQ0FnSUdOaGMyVWdKM1J2Y0NjNlhHNGdJQ0FnSUNBZ0lHaHZjM1JVYjNCTllYSm5hVzRnUFNBd08xeHVJQ0FnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0FnSUdOaGMyVWdKMjFwWkdSc1pTYzZYRzRnSUNBZ0lDQWdJR2h2YzNSVWIzQk5ZWEpuYVc0Z1BTQk5ZWFJvTG0xaGVDZ3dMQ0FvZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RDQXRJR2hsYVdkb2RDa2dMeUF5S1R0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZGliM1IwYjIwbk9seHVJQ0FnSUNBZ0lDQm9iM04wVkc5d1RXRnlaMmx1SUQwZ1RXRjBhQzV0WVhnb01Dd2dkR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBdElHaGxhV2RvZENrN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkdFlYSm5hVzR0ZEc5d0p5d2dZQ1I3YUc5emRGUnZjRTFoY21kcGJuMXdlR0FzSUNkcGJYQnZjblJoYm5RbktUdGNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUWdQQ0JvWldsbmFIUXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0Nkb1pXbG5hSFFuTENCZ0pIdDBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwZlhCNFlDazdYRzRnSUNBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2N0ZVNjc0lHNTFiR3dwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkdmRtVnlabXh2ZHkxNUp5d2dKMmhwWkdSbGJpY3NJQ2RwYlhCdmNuUmhiblFuS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlCamIyNXpiMnhsTG1SbFluVm5LRnh1SUNBZ0lDOHZJQ0FnWUhSb2FYTXVjbTl2ZEM1emRIbHNaUzVvWldsbmFIUWdQU0FrZTNSb2FYTXVjbTl2ZEM1emRIbHNaUzVvWldsbmFIUjlYRnh1WUNBclhHNGdJQ0FnTHk4Z0lDQmdkR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBOUlDUjdkR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZEgxY1hHNWdJQ3RjYmlBZ0lDQXZMeUFnSUdCMGFHbHpMbWh2YzNRdWMzUjViR1V1YUdWcFoyaDBJRDBnSkh0MGFHbHpMbWh2YzNRdWMzUjViR1V1YUdWcFoyaDBmVnhjYm1BZ0sxeHVJQ0FnSUM4dklDQWdZSFJvYVhNdWFHOXpkQzVqYkdsbGJuUklaV2xuYUhRZ1BTQWtlM1JvYVhNdWFHOXpkQzVqYkdsbGJuUklaV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNBblhGeHVKeUFyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMElDQWdJQ0FnSUQwZ0pIdDBhR2x6TG1OaGJuWmhjeTVvWldsbmFIUjlYRnh1WUNBclhHNGdJQ0FnTHk4Z0lDQmdkR2hwY3k1allXNTJZWE11YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxtTmhiblpoY3k1emRIbHNaUzVvWldsbmFIUjlZQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0RVJ5NURiMngxYlc1OUlITmxjVU52YkNCRGIyeDFiVzRnZEc4Z2JHOXZheUJtYjNJZ1lTQndZV3hsZEhSbFhHNGdJQ0FxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0FnYldsdVRHVnVaM1JvSUcxcGJtbHRkVzBnYkdWdVozUm9JRzltSUhObGNYVmxibU5sSUhSdklHUmxkR1ZqZENCd1lXeGxkSFJsSUNobGJYQjBlU0J6ZEhKcGJtZHpJR0Z5WlNCaGJHeHZkMlZrS1Z4dUlDQWdLaUJBY21WMGRYSnVJSHRUWlhGUVlXeGxkSFJsZlNCUVlXeGxkSFJsSUdOdmNuSmxjM0J2Ym1ScGJtY2dkRzhnZEdobElHRnNjR2hoWW1WMElHOW1JSFJvWlNCelpYRjFaVzVqWlhNZ2FXNGdkR2hsSUdOdmJIVnRibHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QndhV05yVlhCUVlXeGxkSFJsS0hObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCdGFXNU1aVzVuZEdnNklHNTFiV0psY2lBOUlEVXBPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JzWlhRZ2NtVnpPaUJUWlhGUVlXeGxkSFJsSUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzRnSUNBZ2MzZHBkR05vSUNoelpYRkRiMnd1YzJWdFZIbHdaU2tnZTF4dUlDQWdJR05oYzJVZ1FXMXBibTloWTJsa2N5NVRaVzFVZVhCbFRYVnNkR2x3YkdWQmJHbG5ibTFsYm5RNlhHNGdJQ0FnSUNCeVpYTWdQU0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11UjNKdmEwZHliM1Z3Y3p0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnVG5WamJHVnZkR2xrWlhNdVUyVnRWSGx3WlUxMWJIUnBjR3hsUVd4cFoyNXRaVzUwT2x4dUlDQWdJQ0FnY21WeklEMGdUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcwN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUNBZ1kyOXVjM1FnYzNSaGRITTZJRk5sY1VOdmJGTjBZWFJ6SUQwZ1YyVmlURzluYnk1blpYUlRkR0YwY3loelpYRkRiMndzSUcxcGJreGxibWQwYUN3Z1YyVmlURzluYnk1emNHeHBkSFJsY2tGelJtRnpkR0VwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZV3h3YUdGaVpYUkRZVzVrYVdSaGRHVnpPaUJiVTJWMFBITjBjbWx1Wno0c0lGTmxjVkJoYkdWMGRHVmRXMTBnUFNCYlhHNGdJQ0FnSUNCYmJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aE9kV05zWlc5MGFXUmxjeTVPWVcxbGN5a3BMQ0JPZFdOc1pXOTBhV1JsYzFCaGJHVjBkR1Z6TGtOb2NtOXRZWFJ2WjNKaGJWMHNYRzRnSUNBZ0lDQmJibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhCYldsdWIyRmphV1J6TGs1aGJXVnpLU2tzSUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3k1SGNtOXJSM0p2ZFhCelhTeGNiaUFnSUNCZE8xeHVJQ0FnSUM4dklFTmhiR04xYkdGMFpTQnNhV3RsYkdsb2IyOWtjeUJtYjNJZ1lXeHdhR0ZpWlhSZlkyRnVaR2xrWVhSbGMxeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFltVjBRMkZ1Wkdsa1lYUmxjMU5wYlRvZ2JuVnRZbVZ5VzEwZ1BTQmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTmNiaUFnSUNBZ0lDNXRZWEFvS0dNcElEMCtJRmRsWWt4dloyOHVaMlYwUVd4d2FHRmlaWFJUYVcxcGJHRnlhWFI1S0hOMFlYUnpMbVp5WlhFc0lHTmJNRjBwS1R0Y2JpQWdJQ0JqYjI1emRDQnRZWGhEYjNNZ1BTQk5ZWFJvTG0xaGVDZ3VMaTVoYkhCb1lXSmxkRU5oYm1ScFpHRjBaWE5UYVcwcE8xeHVJQ0FnSUdsbUlDaHRZWGhEYjNNZ1BpQXdMalkxS1Z4dUlDQWdJQ0FnY21WeklEMGdZV3h3YUdGaVpYUkRZVzVrYVdSaGRHVnpXMkZzY0doaFltVjBRMkZ1Wkdsa1lYUmxjMU5wYlM1cGJtUmxlRTltS0cxaGVFTnZjeWxkV3pGZE8xeHVJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lISmxjeUE5SUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsY3k1RGIyeHZjanRjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNBdktpb2dVM1JoZEhNZ2IyWWdjMlZ4ZFdWdVkyVnpJSGRwZEdnZ2MzQmxZMmxtYVdWa0lITndiR2wwZEdWeUlHWjFibU1zSUhKbGRIVnlibk1nZXlCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvSUgwdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkVjdVEyOXNkVzF1ZlNCelpYRkRiMnhjYmlBZ0lDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHMXBia3hsYm1kMGFGeHVJQ0FnS2lCQWNHRnlZVzBnZTFOd2JHbDBkR1Z5Um5WdVkzMGdjM0JzYVhSMFpYSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN0lGTmxjVU52YkZOMFlYUnpJSDBzSUhOaGJXVk1aVzVuZEdnNklHSnZiMnhsWVc0Z2ZTQnpkR0YwY3lCdlppQmpiMngxYlc0Z2MyVnhkV1Z1WTJWelhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1oyVjBVM1JoZEhNb2MyVnhRMjlzT2lCRVJ5NURiMngxYlc0c0lHMXBia3hsYm1kMGFEb2diblZ0WW1WeUxDQnpjR3hwZEhSbGNqb2dVM0JzYVhSMFpYSkdkVzVqS1RvZ1UyVnhRMjlzVTNSaGRITWdlMXh1SUNBZ0lHTnZibk4wSUdaeVpYRTZJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOUlEMGdlMzA3WEc0Z0lDQWdiR1YwSUhOaGJXVk1aVzVuZEdnZ1BTQjBjblZsTzF4dUlDQWdJR3hsZENCbWFYSnpkRXhsYm1kMGFDQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElITmxjU0J2WmlCelpYRkRiMnd1WTJGMFpXZHZjbWxsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYlZObGNTQTlJSE53YkdsMGRHVnlLSE5sY1NrN1hHNWNiaUFnSUNBZ0lHbG1JQ2htYVhKemRFeGxibWQwYUNBOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnSUNCbWFYSnpkRXhsYm1kMGFDQTlJRzFUWlhFdWJHVnVaM1JvTzF4dUlDQWdJQ0FnWld4elpTQnBaaUFvYlZObGNTNXNaVzVuZEdnZ0lUMDlJR1pwY25OMFRHVnVaM1JvS1Z4dUlDQWdJQ0FnSUNCellXMWxUR1Z1WjNSb0lEMGdabUZzYzJVN1hHNWNiaUFnSUNBZ0lHbG1JQ2h0VTJWeExteGxibWQwYUNBK0lHMXBia3hsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdiVk5sY1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNnaEtHMGdhVzRnWm5KbGNTa3BYRzRnSUNBZ0lDQWdJQ0FnSUNCbWNtVnhXMjFkSUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0JtY21WeFcyMWRJQ3M5SURFN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSHRtY21WeE9pQm1jbVZ4TENCellXMWxUR1Z1WjNSb09pQnpZVzFsVEdWdVozUm9mVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwUVd4d2FHRmlaWFJUYVcxcGJHRnlhWFI1S0daeVpYRTZJRTF2Ym05dFpYSkdjbVZ4Y3l3Z1lXeHdhR0ZpWlhRNklGTmxkRHh6ZEhKcGJtYytMQ0JuWVhCVGVXMWliMnc2SUhOMGNtbHVaeUE5SUNjdEp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ1kyOXVjM1FnYTJWNWN5QTlJRzVsZHlCVFpYUThjM1J5YVc1blBpaGJMaTR1Ym1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3lobWNtVnhLU2tzSUM0dUxtRnNjR2hoWW1WMFhTazdYRzRnSUNBZ2EyVjVjeTVrWld4bGRHVW9aMkZ3VTNsdFltOXNLVHRjYmx4dUlDQWdJR052Ym5OMElHWnlaWEZCT2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwUVRvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJRzBnYjJZZ2EyVjVjeWtnZTF4dUlDQWdJQ0FnWm5KbGNVRXVjSFZ6YUNodElHbHVJR1p5WlhFZ1B5Qm1jbVZ4VzIxZElEb2dNQ2s3WEc0Z0lDQWdJQ0JoYkhCb1lXSmxkRUV1Y0hWemFDaGhiSEJvWVdKbGRDNW9ZWE1vYlNrZ1B5QXhJRG9nTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJQzhxSUZSb1pYSmxJSGRsY21VZ1lTQm1aWGNnYVdSbFlYTTZJR05vYVMxemNYVmhjbVZrTENCd1pXRnljMjl1SUdOdmNuSmxiR0YwYVc5dUlDaDJZWEpwWVc1alpUOHBMQ0J6WTJGc1lYSWdjSEp2WkhWamRDQXFMMXh1SUNBZ0lHTnZibk4wSUdaeVpYRldPaUJXWldOMGIzSWdQU0J1WlhjZ1ZtVmpkRzl5S0daeVpYRkJLVHRjYmlBZ0lDQmpiMjV6ZENCaGJIQm9ZV0psZEZZNklGWmxZM1J2Y2lBOUlHNWxkeUJXWldOMGIzSW9ZV3h3YUdGaVpYUkJLVHRjYmlBZ0lDQmpiMjV6ZENCamIzTTZJRzUxYldKbGNpQTlJSFpsWTNSdmNrUnZkRkJ5YjJSMVkzUW9abkpsY1ZZc0lHRnNjR2hoWW1WMFZpa2dMeUFvZG1WamRHOXlUR1Z1WjNSb0tHWnlaWEZXS1NBcUlIWmxZM1J2Y2t4bGJtZDBhQ2hoYkhCb1lXSmxkRllwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdZMjl6TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRVpwY25OMElIUnllU0IwYnlCbWFXNWtJR052YkhWdGJpQjNhWFJvSUhObGJWUjVjR1VnSjJGc2FXZHVaV1JUWlhGMVpXNWpaU2N1WEc0Z0lDQXFJRTVsZUhRZ2JHOXZheUJtYjNJZ1kyOXNkVzF1SUhkcGRHZ2daR0YwWVNCaGJIQm9ZV0psZENCamIzSnlaWE53YjI1a2FXNW5JSFJ2SUdGdWVTQnZaaUIwYUdVZ2EyNXZkMjRnY0dGc1pYUjBaWE11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRWN1UkdGMFlVWnlZVzFsZlNCa1lYUmhSbkpoYldWY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCVWFHVWdZMjlzZFcxdUlIZGxJSGRsY21VZ2JHOXZhMmx1WnlCbWIzSWdiM0lnYm5Wc2JGeHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQndhV05yVlhCVFpYRkRiMndvWkdGMFlVWnlZVzFsT2lCRVJ5NUVZWFJoUm5KaGJXVXBPaUJFUnk1RGIyeDFiVzRnZkNCdWRXeHNJSHRjYmlBZ0lDQnNaWFFnY21Wek9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lEMGdaR0YwWVVaeVlXMWxMbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxLQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5LVHRjYmlBZ0lDQnBaaUFvY21WeklEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdZMjlzSUc5bUlHUmhkR0ZHY21GdFpTNWpiMngxYlc1ektTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtHTnZiQ0JoY3lCRVJ5NURiMngxYlc0c0lEVXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb1kzQWdJVDA5SUc1MWJHd2dKaVlnSVNoamNDQnBibk4wWVc1alpXOW1JRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxjeUE5SUdOdmJEdGNiaUFnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2JXOXViMjFsY2xKbElEMGdMMXhjV3loY1hIY3JLVnhjWFh3b1hGeDNLWHdvTFNrdlp6dGNibHh1SUNBdktpb2dVM0JzYVhRZ2MyVnhkV1Z1WTJVZ1ptOXlJSE5wYm1kc1pTQmphR0Z5WVdOMFpYSWdiVzl1YjIxbGNuTXNJSE54ZFdGeVpTQmljbUZqYTJWMGN5QnRkV3gwYVdOb1lYSWdiVzl1YjIxbGNpQnVZVzFsY3lCdmNpQm5ZWEFnYzNsdFltOXNMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyRnVlWDBnYzJWeElHOWlhbVZqZENCM2FYUm9JSE5sY1hWbGJtTmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQmhjbkpoZVNCdlppQnRiMjV2YldWeWMxeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCemNHeHBkSFJsY2tGelJtRnpkR0VvYzJWeE9pQmhibmtwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6T2lCemRISnBibWRiWFNBOUlIZDFQRkpsWjBWNGNFMWhkR05vUVhKeVlYaytLSE5sY1M1MGIxTjBjbWx1WnlncExtMWhkR05vUVd4c0tGZGxZa3h2WjI4dWJXOXViMjFsY2xKbEtTbGNiaUFnSUNBZ0lDNXRZWEFvS0cxaE9pQlNaV2RGZUhCTllYUmphRUZ5Y21GNUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUd4bGRDQnRVbVZ6T2lCemRISnBibWM3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzA2SUhOMGNtbHVaeUE5SUcxaFd6QmRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2JTNXNaVzVuZEdnZ1BpQXhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLRzBnYVc0Z1YyVmlURzluYnk1aFlWTjVibTl1ZVcxektTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdFVtVnpJRDBnVjJWaVRHOW5ieTVoWVZONWJtOXVlVzF6VzIxZE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCdFVtVnpJRDBnSnljN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQk1iMjVuSUcxdmJtOXRaWElnSnlSN2JYMG5JR2hoY3lCdWIzUWdZU0J6YUc5eWRDQnplVzV2Ym5sdExtQXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQnRVbVZ6SUQwZ2JUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdiVkpsY3p0Y2JpQWdJQ0FnSUgwcExuUnZRWEp5WVhrb0tUdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1IyVjBjeUJ0WlhSb2IyUWdkRzhnYzNCc2FYUWdjMlZ4ZFdWdVkyVWdZbmtnYzJWd1lYSmhkRzl5WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmVnh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJUY0d4cGRIUmxjbGRwZEdoVFpYQmhjbUYwYjNJb2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jcE9pQlRjR3hwZEhSbGNrWjFibU1nZTF4dUlDQWdJSEpsZEhWeWJpQW9jMlZ4T2lCemRISnBibWNwSUQwK0lIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCelpYRXVjM0JzYVhRb2MyVndZWEpoZEc5eUtUdGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVkbGRDQnpjR3hwZEhSbGNpQnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJWeklIUnZJRzF2Ym05dFpYSnpJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFUzQnNhWFIwWlhJb2RXNXBkSE02SUhOMGNtbHVaeXdnYzJWd1lYSmhkRzl5T2lCemRISnBibWNwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lHbG1JQ2gxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb0oyWmhjM1JoSnlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LQ2R6WlhCaGNtRjBiM0luS1NsY2JpQWdJQ0FnSUhKbGRIVnliaUJYWldKTWIyZHZMbWRsZEZOd2JHbDBkR1Z5VjJsMGFGTmxjR0Z5WVhSdmNpaHpaWEJoY21GMGIzSXBPMXh1SUNBZ0lHVnNjMlZjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVsZUhCbFkzUmxaQ0IxYm1sMGN5QWtlM1Z1YVhSemZTQXVZQ2s3WEc1Y2JpQWdJQ0F2THlCVVQwUlBPaUJUY0d4cGRIUmxjaUJtYjNJZ1NFVk1UVnh1SUNCOVhHNWNiaUFnTHlvcUlFOXViSGtnYzI5dFpTQnZaaUIwYUdVZ2MzbHViMjU1YlhNdUlGUm9aWE5sSUhkbGNtVWdiMkowWVdsdVpXUWdabkp2YlNCMGFHVWdZMngxYzNSbGNtVmtJRzlzYVdkdmNHVndkR2xrWlNCa1lYUmhjMlYwTGlBcUwxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QmhZVk41Ym05dWVXMXpPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0Y2JpQWdJQ0FuVzAxbFRteGxYU2M2SUNkTUp5d2dMeThnVG14bElDMGdibTl5YkdWMVkybHVaVnh1SUNBZ0lDZGJUV1ZCWFNjNklDZEJKeXhjYmlBZ0lDQW5XMDFsUjEwbk9pQW5SeWNzWEc0Z0lDQWdKMXROWlVaZEp6b2dKMFluTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlciB9IGZyb20gJy4vd29ya2Vycy9kaW1lbnNpb25hbGl0eS1yZWR1Y2luZy13b3JrZXItY3JlYXRvcic7XG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uKGRhdGFDb2wsIG1ldGhvZE5hbWUsIHNpbWlsYXJpdHlNZXRyaWMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcyA9IHlpZWxkIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcih7IGRhdGE6IGRhdGFDb2wsIG1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyB9LCBtZXRob2ROYW1lLCBvcHRpb25zKTtcbiAgICAgICAgZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXMuZW1iZWRkaW5nID0gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXMuZW1iZWRkaW5nLm1hcChpdCA9PiBub3JtYWxpemUoaXQpKTtcbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWeGRXVnVZMlV0YzNCaFkyVXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKelpYRjFaVzVqWlMxemNHRmpaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3UVVGRlFTeFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc2FVUkJRV2xFTEVOQlFVTTdRVUZITlVVc1QwRkJUeXhGUVVGRkxHbERRVUZwUXl4RlFVRXJRaXhOUVVGTkxHdEVRVUZyUkN4RFFVRkRPMEZCUjJ4SkxFMUJRVTBzVlVGQlowSXNiME5CUVc5RExFTkJRM1JFTEU5QlFYRkRMRVZCUTNKRExGVkJRV3RDTEVWQlEyeENMR2RDUVVFMlJDeEZRVU0zUkN4UFFVRmhPenRSUVVWaUxFMUJRVTBzZFVKQlFYVkNMRWRCUTNwQ0xFMUJRVTBzYVVOQlFXbERMRU5CUTI1RExFVkJRVVVzU1VGQlNTeEZRVUZGTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVc1owSkJRV2RDTEVWQlFXZENMRVZCUTNwRUxGVkJRVlVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVTNRaXgxUWtGQmRVSXNRMEZCUXl4VFFVRlRMRWRCUVVjc2RVSkJRWFZDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJReTlHTEU5QlFVOHNkVUpCUVhWQ0xFTkJRVU03U1VGRGJrTXNRMEZCUXp0RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZXlCTllYUnlhWGdzSUZabFkzUnZjaUI5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN0lHNXZjbTFoYkdsNlpTQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1psWTNSdmNpMXZjR1Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNXBiWEJ2Y25RZ2V5QkNhWFJCY25KaGVVMWxkSEpwWTNNc0lGTjBjbWx1WjAxbGRISnBZM01zSUZaaGJHbGtWSGx3WlhNc0lGWmxZM1J2Y2sxbGRISnBZM01nZlNCbWNtOXRJQ2N1TDNSNWNHVmtMVzFsZEhKcFkzTW5PMXh1YVcxd2IzSjBJSHNnWTNKbFlYUmxSR2x0Wlc1emFXNWhiR2wwZVZKbFpIVmphVzVuVjI5eWEyVnlMQ0JKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFFnZlNCbWNtOXRJQ2N1TDNkdmNtdGxjbk12WkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJbk8xeHVYRzVjYm1WNGNHOXlkQ0JoYzNsdVl5Qm1kVzVqZEdsdmJpQnlaV1IxWTJWRWFXMWxibk5wYm1Gc2FYUjVWMmwwYUU1dmNtMWhiR2w2WVhScGIyNG9YRzRnSUNBZ1pHRjBZVU52YkRvZ1FtbDBRWEp5WVhsYlhYeFdaV04wYjNKYlhYeHpkSEpwYm1kYlhTd2dYRzRnSUNBZ2JXVjBhRzlrVG1GdFpUb2djM1J5YVc1bkxDQmNiaUFnSUNCemFXMXBiR0Z5YVhSNVRXVjBjbWxqT2lCQ2FYUkJjbkpoZVUxbGRISnBZM044Vm1WamRHOXlUV1YwY21samMzeFRkSEpwYm1kTlpYUnlhV056TEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5rcE9pQlFjbTl0YVhObFBFbFNaV1IxWTJWRWFXMWxibk5wYjI1aGJHbDBlVkpsYzNWc2RENGdlMXh1WEc0Z0lDQWdZMjl1YzNRZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE02SUVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZENBOVhHNGdJQ0FnSUNBZ0lHRjNZV2wwSUdOeVpXRjBaVVJwYldWdWMybHVZV3hwZEhsU1pXUjFZMmx1WjFkdmNtdGxjaWhjYmlBZ0lDQWdJQ0FnSUNBZ0lIc2daR0YwWVRvZ1pHRjBZVU52YkN3Z2JXVjBjbWxqT2lCemFXMXBiR0Z5YVhSNVRXVjBjbWxqSUgwZ1lYTWdWbUZzYVdSVWVYQmxjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWxkR2h2WkU1aGJXVXNJRzl3ZEdsdmJuTXBPMXh1WEc0Z0lDQWdaR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZTWlhNdVpXMWlaV1JrYVc1bklEMGdaR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZTWlhNdVpXMWlaV1JrYVc1bkxtMWhjQ2hwZENBOVBpQnViM0p0WVd4cGVtVW9hWFFwS1R0Y2JpQWdJQ0J5WlhSMWNtNGdaR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZTWlhNN1hHNTlJbDE5IiwiaW1wb3J0ICogYXMgZmwgZnJvbSAnZmFzdGVzdC1sZXZlbnNodGVpbic7XG5pbXBvcnQgeyBqYXJvV2lua2xlciB9IGZyb20gJ2phcm8td2lua2xlci10eXBlc2NyaXB0JztcbmltcG9ydCB7IGRpc3RhbmNlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmV4cG9ydCBjb25zdCBBdmFpbGFibGVNZXRyaWNzID0ge1xuICAgICdWZWN0b3InOiB7XG4gICAgICAgICdFdWNsaWRlYW5EaXN0YW5jZSc6IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLFxuICAgIH0sXG4gICAgJ1N0cmluZyc6IHtcbiAgICAgICAgJ0xldmVuc2h0ZWluJzogZmwuZGlzdGFuY2UsXG4gICAgICAgICdKYXJvLVdpbmtsZXInOiBqYXJvV2lua2xlcixcbiAgICB9LFxuICAgICdCaXRBcnJheSc6IHtcbiAgICAgICAgJ1Rhbmltb3RvJzogZGlzdGFuY2VNZXRyaWNzWydUYW5pbW90byddLFxuICAgICAgICAnRGljZSc6IGRpc3RhbmNlTWV0cmljc1snRGljZSddLFxuICAgICAgICAnQXN5bW1ldHJpYyc6IGRpc3RhbmNlTWV0cmljc1snQXN5bW1ldHJpYyddLFxuICAgICAgICAnQnJhdW4tQmxhbnF1ZXQnOiBkaXN0YW5jZU1ldHJpY3NbJ0JyYXVuLUJsYW5xdWV0J10sXG4gICAgICAgICdDb3NpbmUnOiBkaXN0YW5jZU1ldHJpY3NbJ0Nvc2luZSddLFxuICAgICAgICAnS3VsY3p5bnNraSc6IGRpc3RhbmNlTWV0cmljc1snS3VsY3p5bnNraSddLFxuICAgICAgICAnTWMtQ29ubmF1Z2hleSc6IGRpc3RhbmNlTWV0cmljc1snTWMtQ29ubmF1Z2hleSddLFxuICAgICAgICAnUm9nb3QtR29sZGJlcmcnOiBkaXN0YW5jZU1ldHJpY3NbJ1JvZ290LUdvbGRiZXJnJ10sXG4gICAgICAgICdSdXNzZWwnOiBkaXN0YW5jZU1ldHJpY3NbJ1J1c3NlbCddLFxuICAgICAgICAnU29rYWwnOiBkaXN0YW5jZU1ldHJpY3NbJ1Nva2FsJ10sXG4gICAgfSxcbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKSB7XG4gICAgICAgIHJldFt2YWxdID0ga2V5O1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbi8qKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgc3RyaW5nIG1lYXN1cmVzLiAqL1xuZXhwb3J0IGNsYXNzIE1lYXN1cmUge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTWVhc3VyZSB3aXRoIC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kIE1ldGhvZCB0byBjYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2VlbiBzdHJpbmdzLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG1ldGhvZCkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgICAgdGhpcy5kYXRhVHlwZSA9IE1ldHJpY1RvRGF0YVR5cGVbbWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGZ1bmN0aW9uIHNwZWNpZmllZC5cbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUoKSB7XG4gICAgICAgIGNvbnN0IGRpY3QgPSBBdmFpbGFibGVNZXRyaWNzO1xuICAgICAgICByZXR1cm4gZGljdFt0aGlzLmRhdGFUeXBlXVt0aGlzLm1ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBieSB0aGUgZ2l2ZW4gZGF0YSB0eXBlLlxuICAgICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSBkYXRhVHlwZSBNZXRyaWMncyBkYXRhIHR5cGVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gTWV0cmljIG5hbWVzIHdoaWNoIGV4cGVjdHMgdGhlIGdpdmVuIGRhdGEgdHlwZVxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRyaWNCeURhdGFUeXBlKGRhdGFUeXBlKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2RhdGFUeXBlXSk7XG4gICAgfVxuICAgIC8qKiBSZXR1cm5zIG1ldHJpYyBuYW1lcyBhdmFpbGFibGUuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVGRExHVkJRV1VzUlVGQlF5eE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJRMnBHTEU5QlFVOHNSVUZCUXl3d1FrRkJNRUlzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTVE5HTEUxQlFVMHNRMEZCUXl4TlFVRk5MR2RDUVVGblFpeEhRVUZITzBsQlF6bENMRkZCUVZFc1JVRkJSVHRSUVVOU0xHMUNRVUZ0UWl4RlFVRkZMREJDUVVFd1FqdExRVU5vUkR0SlFVTkVMRkZCUVZFc1JVRkJSVHRSUVVOU0xHRkJRV0VzUlVGQlJTeEZRVUZGTEVOQlFVTXNVVUZCVVR0UlFVTXhRaXhqUVVGakxFVkJRVVVzVjBGQlZ6dExRVU0xUWp0SlFVTkVMRlZCUVZVc1JVRkJSVHRSUVVOV0xGVkJRVlVzUlVGQlJTeGxRVUZsTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTNaRExFMUJRVTBzUlVGQlJTeGxRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXk5Q0xGbEJRVmtzUlVGQlJTeGxRVUZsTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUXpORExHZENRVUZuUWl4RlFVRkZMR1ZCUVdVc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTnVSQ3hSUVVGUkxFVkJRVVVzWlVGQlpTeERRVUZETEZGQlFWRXNRMEZCUXp0UlFVTnVReXhaUVVGWkxFVkJRVVVzWlVGQlpTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVTXpReXhsUVVGbExFVkJRVVVzWlVGQlpTeERRVUZETEdWQlFXVXNRMEZCUXp0UlFVTnFSQ3huUWtGQlowSXNSVUZCUlN4bFFVRmxMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdVVUZEYmtRc1VVRkJVU3hGUVVGRkxHVkJRV1VzUTBGQlF5eFJRVUZSTEVOQlFVTTdVVUZEYmtNc1QwRkJUeXhGUVVGRkxHVkJRV1VzUTBGQlF5eFBRVUZQTEVOQlFVTTdTMEZEYkVNN1EwRkRSaXhEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRWEZDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdTMEZETlVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQmNVSXNSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSVHRKUVVOeVF5eExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1IwRkJlVUlzUTBGQlF5eERRVUZETEVWQlFVVTdVVUZETVVVc1IwRkJSeXhEUVVGRExFZEJRWGxDTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1MwRkRkRU03U1VGRFJDeFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTmlMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVmRVTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1NVRkJhMEk3U1VGREwwTXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eEpRVUZyUWp0SlFVTnFSQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF6dEJRVU01UXl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eEpRVUZyUWp0SlFVTXZReXhQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGRkJRVkVzUTBGQlF6dEJRVU0xUXl4RFFVRkRPMEZCUlVRc05FUkJRVFJFTzBGQlF6VkVMRTFCUVUwc1QwRkJUeXhQUVVGUE8wbEJTV3hDT3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEUxQlFXOUNPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUYxUWl4RFFVRkRPMGxCUTJwRkxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzVlVGQlZUdFJRVU5tTEUxQlFVMHNTVUZCU1N4SFFVRnpSQ3huUWtGQlowSXNRMEZCUXp0UlFVTnFSaXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlF6RkRMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVFMFFqdFJRVU0xUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN08wMUJSVVU3U1VGRFJpeE5RVUZOTEV0QlFVc3NhVUpCUVdsQ08xRkJRekZDTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdac0lHWnliMjBnSjJaaGMzUmxjM1F0YkdWMlpXNXphSFJsYVc0bk8xeHVhVzF3YjNKMElIdHFZWEp2VjJsdWEyeGxjbjBnWm5KdmJTQW5hbUZ5YnkxM2FXNXJiR1Z5TFhSNWNHVnpZM0pwY0hRbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdGthWE4wWVc1alpVMWxkSEpwWTNOOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzTnBiV2xzWVhKcGRIa3RiV1YwY21samN5YzdYRzVwYlhCdmNuUWdlMk5oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12WW1sMExXRnljbUY1Snp0Y2JtbHRjRzl5ZENCN1ZtVmpkRzl5TENCVGRISnBibWRFYVdOMGFXOXVZWEo1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCQmRtRnBiR0ZpYkdWTlpYUnlhV056SUQwZ2UxeHVJQ0FuVm1WamRHOXlKem9nZTF4dUlDQWdJQ2RGZFdOc2FXUmxZVzVFYVhOMFlXNWpaU2M2SUdOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sTEZ4dUlDQjlMRnh1SUNBblUzUnlhVzVuSnpvZ2UxeHVJQ0FnSUNkTVpYWmxibk5vZEdWcGJpYzZJR1pzTG1ScGMzUmhibU5sTEZ4dUlDQWdJQ2RLWVhKdkxWZHBibXRzWlhJbk9pQnFZWEp2VjJsdWEyeGxjaXhjYmlBZ2ZTeGNiaUFnSjBKcGRFRnljbUY1SnpvZ2UxeHVJQ0FnSUNkVVlXNXBiVzkwYnljNklHUnBjM1JoYm1ObFRXVjBjbWxqYzFzblZHRnVhVzF2ZEc4blhTeGNiaUFnSUNBblJHbGpaU2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuUkdsalpTZGRMRnh1SUNBZ0lDZEJjM2x0YldWMGNtbGpKem9nWkdsemRHRnVZMlZOWlhSeWFXTnpXeWRCYzNsdGJXVjBjbWxqSjEwc1hHNGdJQ0FnSjBKeVlYVnVMVUpzWVc1eGRXVjBKem9nWkdsemRHRnVZMlZOWlhSeWFXTnpXeWRDY21GMWJpMUNiR0Z1Y1hWbGRDZGRMRnh1SUNBZ0lDZERiM05wYm1Vbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkowTnZjMmx1WlNkZExGeHVJQ0FnSUNkTGRXeGplbmx1YzJ0cEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZExkV3hqZW5sdWMydHBKMTBzWEc0Z0lDQWdKMDFqTFVOdmJtNWhkV2RvWlhrbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkowMWpMVU52Ym01aGRXZG9aWGtuWFN4Y2JpQWdJQ0FuVW05bmIzUXRSMjlzWkdKbGNtY25PaUJrYVhOMFlXNWpaVTFsZEhKcFkzTmJKMUp2WjI5MExVZHZiR1JpWlhKbkoxMHNYRzRnSUNBZ0oxSjFjM05sYkNjNklHUnBjM1JoYm1ObFRXVjBjbWxqYzFzblVuVnpjMlZzSjEwc1hHNGdJQ0FnSjFOdmEyRnNKem9nWkdsemRHRnVZMlZOWlhSeWFXTnpXeWRUYjJ0aGJDZGRMRnh1SUNCOUxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0JQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1Z4dUlDQXVjbVZrZFdObEtDaHlaWFE2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtzSUd0bGVTa2dQVDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnZG1Gc0lHOW1JRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iYTJWNUlHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBwS1NCN1hHNGdJQ0FnSUNCeVpYUmJkbUZzSUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMGdQU0JyWlhrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHNJSHQ5S1R0Y2JseHVaWGh3YjNKMElIUjVjR1VnUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTTdYRzVsZUhCdmNuUWdkSGx3WlNCVGRISnBibWROWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYkoxTjBjbWx1WnlkZE8xeHVaWGh3YjNKMElIUjVjR1VnUW1sMFFYSnlZWGxOWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYkowSnBkRUZ5Y21GNUoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCV1pXTjBiM0pOWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYkoxWmxZM1J2Y2lkZE8xeHVaWGh3YjNKMElIUjVjR1VnUzI1dmQyNU5aWFJ5YVdOeklEMGdVM1J5YVc1blRXVjBjbWxqY3lCOElFSnBkRUZ5Y21GNVRXVjBjbWxqY3lCOElGWmxZM1J2Y2sxbGRISnBZM003WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRlpoYkdsa1ZIbHdaWE1nUFNCN1pHRjBZVG9nYzNSeWFXNW5XMTBzSUcxbGRISnBZem9nVTNSeWFXNW5UV1YwY21samMzMGdmQ0I3WkdGMFlUb2dWbVZqZEc5eVcxMHNJRzFsZEhKcFl6b2dWbVZqZEc5eVRXVjBjbWxqYzMwZ2ZGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIdGtZWFJoT2lCQ2FYUkJjbkpoZVZ0ZExDQnRaWFJ5YVdNNklFSnBkRUZ5Y21GNVRXVjBjbWxqYzMwN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMU4wY21sdVowMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMU4wY21sdVp5YzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwSnBkRUZ5Y21GNVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5RbWwwUVhKeVlYa25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTldaV04wYjNKTlpYUnlhV01vYm1GdFpUb2dTMjV2ZDI1TlpYUnlhV056S1NCN1hHNGdJSEpsZEhWeWJpQk5aWFJ5YVdOVWIwUmhkR0ZVZVhCbFcyNWhiV1ZkSUQwOUlDZFdaV04wYjNJbk8xeHVmVnh1WEc0dktpb2dWVzVwWm1sbFpDQmpiR0Z6Y3lCcGJYQnNaVzFsYm5ScGJtY2daR2xtWm1WeVpXNTBJSE4wY21sdVp5QnRaV0Z6ZFhKbGN5NGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5aV0Z6ZFhKbElIdGNiaUFnY0hKdmRHVmpkR1ZrSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJ5YVdOek8xeHVJQ0J3Y205MFpXTjBaV1FnWkdGMFlWUjVjR1U2SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQk5aV0Z6ZFhKbElIZHBkR2dnTGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdiV1YwYUc5a0lFMWxkR2h2WkNCMGJ5QmpZV3hqZFd4aGRHVWdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQnpkSEpwYm1kekxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamRHOXlLRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056S1NCN1hHNGdJQ0FnZEdocGN5NXRaWFJvYjJRZ1BTQnRaWFJvYjJRN1hHNGdJQ0FnZEdocGN5NWtZWFJoVkhsd1pTQTlJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJiV1YwYUc5a1hTQmhjeUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCamRYTjBiMjBnYzNSeWFXNW5JR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVJSE53WldOcFptbGxaQzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlFTmhiR3hpWVdOcklHOW1JSFJvWlNCdFpXRnpkWEpsSUdOb2IzTmxiaTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRTFsWVhOMWNtVnlYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwVFdWaGMzVnlaU2dwT2lCRWFYTjBZVzVqWlUxbGRISnBZeUI3WEc0Z0lDQWdZMjl1YzNRZ1pHbGpkRG9nZTF0clpYazZJSE4wY21sdVoxMDZJSHRiYTJWNU1qb2djM1J5YVc1blhUb2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOWZTQTlJRUYyWVdsc1lXSnNaVTFsZEhKcFkzTTdYRzRnSUNBZ2NtVjBkWEp1SUdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYxYmRHaHBjeTV0WlhSb2IyUmRPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWTNWemRHOXRJSE4wY21sdVp5QmthWE4wWVc1alpTQmllU0IwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMEYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMzBnWkdGMFlWUjVjR1VnVFdWMGNtbGpKM01nWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JOWlhSeWFXTWdibUZ0WlhNZ2QyaHBZMmdnWlhod1pXTjBjeUIwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJOWlhSeWFXTkNlVVJoZEdGVWVYQmxLR1JoZEdGVWVYQmxPaUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE1wT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iWkdGMFlWUjVjR1ZkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJRzFsZEhKcFl5QnVZVzFsY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQXFMMXh1SUNCemRHRjBhV01nWjJWMElHRjJZV2xzWVdKc1pVMWxZWE4xY21WektDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG10bGVYTW9RWFpoYVd4aFlteGxUV1YwY21samN5azdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCB7IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MnO1xubGV0IHpvb20gPSBmYWxzZTtcbi8vIFNlYXJjaGVzIGZvciBhY3Rpdml0eSBjbGlmZnMgaW4gYSBjaGVtaWNhbCBkYXRhc2V0IGJ5IHNlbGVjdGVkIGN1dG9mZlxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBzZXFDb2wsIGF4ZXNOYW1lcywgc2NhdHRlclRpdGxlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBzaW1pbGFyaXR5TWV0cmljLCBtZXRob2ROYW1lLCBzZW1UeXBlLCB1bml0cywgc2VxU3BhY2VGdW5jLCBzaW1GdW5jLCB0b29sdGlwRHJhd0Z1bmMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgTUlOX1NJTUlMQVJJVFkgPSA4MDtcbiAgICAgICAgY29uc3QgaW5pdGlhbFNpbWlsYXJpdHlMaW1pdCA9IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA/IE1JTl9TSU1JTEFSSVRZIDogc2ltaWxhcml0eSAvIDEwMDtcbiAgICAgICAgY29uc3QgeyBkaXN0YW5jZSwgY29vcmRpbmF0ZXMgfSA9IHlpZWxkIHNlcVNwYWNlRnVuYyh7XG4gICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgICBzaW1pbGFyaXR5TWV0cmljOiBzaW1pbGFyaXR5TWV0cmljLFxuICAgICAgICAgICAgZW1iZWRBeGVzTmFtZXM6IGF4ZXNOYW1lcyxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvb3JkaW5hdGVzKVxuICAgICAgICAgICAgZGYuY29sdW1ucy5hZGQoY29sKTtcbiAgICAgICAgY29uc3QgZGZTZXEgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW0RHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgJ3NlcScsIHNlcUNvbC50b0xpc3QoKSldKTtcbiAgICAgICAgY29uc3QgZGltID0gc2VxQ29sLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc2ltQXJyID0gQXJyYXkoZGltIC0gMSk7XG4gICAgICAgIGlmICghZGlzdGFuY2UpXG4gICAgICAgICAgICB5aWVsZCBnZXRTaW1pbGFyaXRpZXNNYXJpeChkaW0sIHNlcUNvbCwgZGZTZXEsIHNpbUFyciwgc2ltRnVuYyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlLCBzaW1BcnIpO1xuICAgICAgICBjb25zdCBvcHRTaW1pbGFyaXR5TGltaXQgPSBpbml0aWFsU2ltaWxhcml0eUxpbWl0O1xuICAgICAgICBjb25zdCBzaW1WYWxzID0gW107XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzID0gW107XG4gICAgICAgIGNvbnN0IG4xID0gW107XG4gICAgICAgIGNvbnN0IG4yID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogIT0gZGltIC0gMSAtIGk7ICsraikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpbSA9IHNpbUFycltpXS5nZXQoaik7XG4gICAgICAgICAgICAgICAgaWYgKHNpbSA+PSBvcHRTaW1pbGFyaXR5TGltaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgbjEucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgbjIucHVzaChpICsgaiArIDEpO1xuICAgICAgICAgICAgICAgICAgICBzaW1WYWxzLnB1c2goc2ltKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGkpIC0gYWN0aXZpdGllcy5nZXQoaSArIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaW0gIT0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhbGlWYWxzLnB1c2goZGlmZiAvICgxIC0gc2ltKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhbGlWYWxzLnB1c2goSW5maW5pdHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpVmFsc1dpdGhvdXRJbmZpbml0eSA9IHNhbGlWYWxzLmZpbHRlcihpdCA9PiBpdCAhPT0gSW5maW5pdHkpO1xuICAgICAgICBjb25zdCBzYWxpTWluID0gTWF0aC5taW4oLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICAgICAgICBjb25zdCBzYWxpTWF4ID0gTWF0aC5tYXgoLi4uc2FsaVZhbHNXaXRob3V0SW5maW5pdHkpO1xuICAgICAgICBjb25zdCBzYWxpT3BhY2l0eUNvZWYgPSAwLjggLyAoc2FsaU1heCAtIHNhbGlNaW4pO1xuICAgICAgICBjb25zdCBuZWlnaGJvdXJzQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICAgICAgICBjb25zdCBzaW1pbGFyaXR5Q291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICAgICAgICBjb25zdCBzYWxpQ291bnQgPSBuZXcgQXJyYXkoZGltKS5maWxsKDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBuMS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgbmVpZ2hib3Vyc0NvdW50W24xW2ldXSArPSAxO1xuICAgICAgICAgICAgbmVpZ2hib3Vyc0NvdW50W24yW2ldXSArPSAxO1xuICAgICAgICAgICAgc2ltaWxhcml0eUNvdW50W24xW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgICAgICAgICAgc2ltaWxhcml0eUNvdW50W24yW2ldXSArPSBzaW1WYWxzW2ldO1xuICAgICAgICAgICAgaWYgKHNhbGlWYWxzW2ldICE9IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2aXRpZXMuZ2V0KG4xW2ldKSA+IGFjdGl2aXRpZXMuZ2V0KG4yW2ldKSlcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24xW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHNhbGlDb3VudFtuMltpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2FsaSA9IERHLkNvbHVtbi5mcm9tTGlzdCgnZG91YmxlJywgYHNhbGlfJHtheGVzTmFtZXNbMF0uc3Vic3RyaW5nKGF4ZXNOYW1lc1swXS5sYXN0SW5kZXhPZignXycpKX1gLCBzYWxpQ291bnQpO1xuICAgICAgICBkZi5jb2x1bW5zLmFkZChzYWxpKTtcbiAgICAgICAgY29uc3QgdmlldyA9IGdyb2suc2hlbGwuZ2V0VGFibGVWaWV3KGRmLm5hbWUpO1xuICAgICAgICBjb25zdCBzcCA9IHZpZXcuYWRkVmlld2VyKERHLlZpZXdlci5zY2F0dGVyUGxvdChkZiwge1xuICAgICAgICAgICAgeENvbHVtbk5hbWU6IGF4ZXNOYW1lc1swXSxcbiAgICAgICAgICAgIHlDb2x1bW5OYW1lOiBheGVzTmFtZXNbMV0sXG4gICAgICAgICAgICBzaXplOiBzYWxpLm5hbWUsXG4gICAgICAgICAgICBjb2xvcjogYWN0aXZpdGllcy5uYW1lLFxuICAgICAgICAgICAgc2hvd1hTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93WVNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dTaXplU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd0NvbG9yU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgbWFya2VyTWluU2l6ZTogNSxcbiAgICAgICAgICAgIG1hcmtlck1heFNpemU6IDI1LFxuICAgICAgICAgICAgdGl0bGU6IHNjYXR0ZXJUaXRsZVxuICAgICAgICB9KSk7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IHNwLmdldEluZm8oKVsnY2FudmFzJ107XG4gICAgICAgIGNvbnN0IGxpbmVzUmVzID0gY3JlYXRlTGluZXMobjEsIG4yLCBzZXFDb2wsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cyk7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBzID0ge307XG4gICAgICAgIGxpbmVzUmVzLmxpbmVzRGYub25DdXJyZW50Q2VsbENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNb2xJZHggPSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wgJiYgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sLm5hbWUgPT09ICcyX3NlcScgPyAxIDogMDtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID1cbiAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IC0xID8gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XS5tb2xzW2N1cnJlbnRNb2xJZHhdIDogLTE7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vblNlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBpZiAobGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzUmVzLmxpbmVzW2xpbmVzUmVzLmxpbmVzRGYubW91c2VPdmVyUm93SWR4XTtcbiAgICAgICAgICAgICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsaW5lc0RmR3JpZCA9IGxpbmVzUmVzLmxpbmVzRGYucGxvdC5ncmlkKCkuc29ydChbJ2FjdF9kaWZmJ10sIFtmYWxzZV0pO1xuICAgICAgICBsaW5lc0RmR3JpZC5vbkNlbGxDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgem9vbSA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsaXN0Q2xpZmZzTGluayA9IHVpLmJ1dHRvbihgJHtsaW5lc1Jlcy5saW5lc0RmLnJvd0NvdW50fSBjbGlmZnNgLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGlmZnNEaWFsb2cgPSB1aS5kaWFsb2coeyB0aXRsZTogJ0FjdGl2aXR5IGNsaWZmcycgfSlcbiAgICAgICAgICAgICAgICAuYWRkKGxpbmVzRGZHcmlkLnJvb3QpXG4gICAgICAgICAgICAgICAgLnNob3coKTtcbiAgICAgICAgICAgIGNsaWZmc0RpYWxvZy5yb290LmlkID0gJ2NsaWZmc19kaWFsb2cnO1xuICAgICAgICB9KTtcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS50b3AgPSAnMTBweCc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnJpZ2h0ID0gJzEwcHgnO1xuICAgICAgICBzcC5yb290LmFwcGVuZChsaXN0Q2xpZmZzTGluayk7XG4gICAgICAgIGxldCB0aW1lcjtcbiAgICAgICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgIHRpbWVyID0gZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRvb2x0aXBzW2xpbmUuaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkcmF3VG9vbHRpcFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwczogdG9vbHRpcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogbGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZjogZGYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxQ29sOiBzZXFDb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHk6IGFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcERyYXdGdW5jKGRyYXdUb29sdGlwUGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB1aS50b29sdGlwLnNob3codG9vbHRpcHNbbGluZS5pZF0sIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9KTtcbiAgICAgICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5lLnNlbGVjdGVkID0gIWxpbmUuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuc2VsZWN0aW9uLnNldChsaW5lLmlkLCBsaW5lLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldEFsbChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzLmZvckVhY2goKGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSBsaW5lLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPSBsaW5lLmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuY3VycmVudFJvd0lkeCA9IGxpbmUubW9sc1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXQoMCwgbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3Aub25FdmVudCgnZDQtYmVmb3JlLWRyYXctc2NlbmUnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSByZW5kZXJMaW5lcyhzcCwgYXhlc05hbWVzWzBdLCBheGVzTmFtZXNbMV0sIGxpbmVzUmVzLCBzYWxpVmFscywgc2FsaU9wYWNpdHlDb2VmLCBzYWxpTWluKTtcbiAgICAgICAgICAgIGlmICh6b29tKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudExpbmUgPSBsaW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4MSA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeTEgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHgyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5MiA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeERpZmYgPSBNYXRoLmFicyh4MSAtIHgyKSAqIDU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHlEaWZmID0gTWF0aC5hYnMoeTEgLSB5MikgKiA1O1xuICAgICAgICAgICAgICAgICAgICBzcC56b29tKHgxIDwgeDIgPyB4MSAtIHhEaWZmIDogeDIgLSB4RGlmZiwgeTEgPiB5MiA/IHkxICsgeURpZmYgOiB5MiArIHlEaWZmLCB4MSA+IHgyID8geDEgKyB4RGlmZiA6IHgyICsgeERpZmYsIHkxIDwgeTIgPyB5MSAtIHlEaWZmIDogeTIgLSB5RGlmZik7XG4gICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5hZGRQcm9wZXJ0eSgnc2ltaWxhcml0eUxpbWl0JywgJ2RvdWJsZScsIG9wdFNpbWlsYXJpdHlMaW1pdCk7XG4gICAgICAgIHJldHVybiBzcDtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzKSB7XG4gICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCBkaXN0ID0gTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICAgICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgICAgICBpZiAoZGlzdCA8IDIpXG4gICAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcCwgeEF4aXMsIHlBeGlzLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbikge1xuICAgIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHhBeGlzKTtcbiAgICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICAgICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICAgICAgbGluZXNbaV0uYSA9IFtwb2ludEZyb20ueCwgcG9pbnRGcm9tLnldO1xuICAgICAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICAgICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgbGluZS5tb3ZlVG8obGluZXNbaV0uYVswXSwgbGluZXNbaV0uYVsxXSk7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSAqIHNhbGlPcGFjaXR5Q29lZjtcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZXNbaV0uaWQgPT09IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA/IDMgOiAxO1xuICAgICAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICAgICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gY3JlYXRlTGluZXMobjEsIG4yLCBzZXEsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cykge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBudW0xID0gbjFbaV07XG4gICAgICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICAgICAgbGluZXMucHVzaCh7IGlkOiBpLCBtb2xzOiBbbnVtMSwgbnVtMl0sIHNlbGVjdGVkOiBmYWxzZSwgYTogW10sIGI6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAgICAgLmluaXQoKGkpID0+IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pIC0gYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1sxXSkpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaSkgPT4gaSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaSkgPT4gc2FsaVZhbHNbaV0pO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgcmV0dXJuIHsgbGluZXMsIGxpbmVzRGYgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeChkaW0sIHNlcUNvbCwgZGZTZXEsIHNpbUFyciwgc2ltRnVuYykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICAgICAgICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgICAgICAgICAgc2ltQXJyW2ldID0gKHlpZWxkIHNpbUZ1bmMoZGZTZXEuY29sKCdzZXEnKSwgbW9sKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpbUFycjtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZXMsIHNpbUFycikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltIC0gMTsgKytpKSB7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICAgICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICAgICAgc2ltQXJyW2ldID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3NpbWlsYXJpdHknLCBGbG9hdDMyQXJyYXkuZnJvbShzaW1pbGFyaXR5QXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBzaW1BcnI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV04wYVhacGRIa3RZMnhwWm1aekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWVdOMGFYWnBkSGt0WTJ4cFptWnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenRCUVVGQkxFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRE1VTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVTjBReXhQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJSWFJETEU5QlFVOHNSVUZCUlN4NVFrRkJlVUlzUlVGQlJTeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJjME0zUml4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRmFrSXNkMFZCUVhkRk8wRkJRM2hGTEUxQlFVMHNWVUZCWjBJc2FVSkJRV2xDTEVOQlEyNURMRVZCUVdkQ0xFVkJRMmhDTEUxQlFXbENMRVZCUTJwQ0xGTkJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEZWQlFYRkNMRVZCUTNKQ0xGVkJRV3RDTEVWQlEyeENMR2RDUVVGM1FpeEZRVU40UWl4VlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVN4RlFVTmlMRmxCUVRaRkxFVkJRemRGTEU5QlFXMUZMRVZCUTI1RkxHVkJRWEZFTEVWQlEzSkVMRTlCUVdFN08xRkJRMllzVFVGQlRTeDNRa0ZCZDBJc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUVUZCVFN4alFVRmpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSVEZDTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVVMVJpeE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhIUVVGSExFMUJRVTBzV1VGQldTeERRVUZETzFsQlEycEVMRTFCUVUwc1JVRkJSU3hOUVVGTk8xbEJRMlFzVlVGQlZTeEZRVUZGTEZWQlFWVTdXVUZEZEVJc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xbEJRMnhETEdOQlFXTXNSVUZCUlN4VFFVRlRPMWxCUTNwQ0xFOUJRVThzUlVGQlJTeFBRVUZQTzFOQlEycENMRU5CUVVNc1EwRkJRenRSUVVWSUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWMEZCVnp0WlFVTXpRaXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWMFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hOUVVGTkxFZEJRV2RDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wTXNTVUZCU1N4RFFVRkRMRkZCUVZFN1dVRkRXQ3hOUVVGTkxHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3V1VGRmFFVXNhVU5CUVdsRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVelJDeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExITkNRVUZ6UWl4RFFVRkRPMUZCUld4RUxFMUJRVTBzVDBGQlR5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxGRkJRVkVzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hGUVVGRkxFZEJRV0VzUlVGQlJTeERRVUZETzFGQlEzaENMRTFCUVUwc1JVRkJSU3hIUVVGaExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZYTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlhKRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhGUVVGRk8yOUNRVU0zUWl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTllMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPM2RDUVVOV0xGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdPM2RDUVVWb1F5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8ybENRVU16UWp0aFFVTkdPMU5CUTBZN1VVRkZSQ3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGRrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1IwRkJSeXhIUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUjJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXZReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNURMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzWlVGQlpTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0xUWl4bFFVRmxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja01zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJReTlETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08yOUNRVVZvUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzFOQlEwWTdVVUZGUkN4TlFVRk5MRWxCUVVrc1IwRkJZeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlJXcEpMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhKQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTVReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNSQ3hYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEWml4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFbEJRVWs3V1VGRGRFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1owSkJRV2RDTEVWQlFVVXNTMEZCU3p0WlFVTjJRaXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxPMWxCUTNoQ0xHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyaENMR0ZCUVdFc1JVRkJSU3hGUVVGRk8xbEJRMnBDTEV0QlFVc3NSVUZCUlN4WlFVRlpPMU5CUTNCQ0xFTkJRVU1zUTBGQmVVSXNRMEZCUXp0UlFVVTFRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTI1R0xFMUJRVTBzVVVGQlVTeEhRVUZSTEVWQlFVVXNRMEZCUXp0UlFVVjZRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZEYmtRc1RVRkJUU3hoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhPMmRDUVVONFFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRWdzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdXVUZETTBRc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJRekZFTEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEYkVRc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRE0wTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8yZENRVU01UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0blFrRkRMMElzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPMjlDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dGhRVU01UWp0WlFVTkVMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFN2IwSkJRMW9zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEwZ3NWMEZCVnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hYUVVGWExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUZEZMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTnlReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEZOQlFWTXNSVUZCUlN4SFFVRkhMRVZCUVVVN1dVRkRNMFVzVFVGQlRTeFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhEUVVGRE8ybENRVU4yUkN4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dHBRa0ZEY2tJc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFZpeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRGVrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlZMRU5CUVVNN1VVRkRNME1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMnhETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU53UXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFdEJRWEZDTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRV2xDTzFsQlF6bEVMRmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEZUVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8zZENRVU4wUWl4TlFVRk5MR2xDUVVGcFFpeEhRVUZIT3pSQ1FVTjRRaXhSUVVGUkxFVkJRVVVzVVVGQlVUczBRa0ZEYkVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3TkVKQlExWXNSVUZCUlN4RlFVRkZMRVZCUVVVN05FSkJRMDRzVFVGQlRTeEZRVUZGTEUxQlFVMDdORUpCUTJRc1VVRkJVU3hGUVVGRkxGVkJRVlU3TkVKQlEzQkNMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6czBRa0ZEYUVJc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNsQ1FVTnFRaXhEUVVGQk8zZENRVU5FTEdWQlFXVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzNGQ1FVTndRenR2UWtGRFJDeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOc1JUdFpRVU5JTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOWUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlRMRXRCUVdsQ08xbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHR2UWtGRGFrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdiMEpCUXk5Q0xGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRmRrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8zZENRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0dlFrRkZOMElzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVUczBRa0ZEV2l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU5LTzNGQ1FVRk5PMjlDUVVOTUxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZET1VNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGVrTXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOb1F5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzNkQ1FVTnFSQ3hGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR4UWtGRGFrUTdhVUpCUTBZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXh6UWtGQmMwSXNRMEZCUXp0aFFVTXZRaXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTm1MRTFCUVUwc1MwRkJTeXhIUVVGSExGZEJRVmNzUTBGQlF5eEZRVUZGTEVWQlF6RkNMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROVVVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1RVRkJUU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03WjBKQlF6RkVMRlZCUVZVc1EwRkJReXhIUVVGRkxFVkJRVVU3YjBKQlEySXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGREwwUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGREwwUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGREwwUXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGREwwUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5zUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyeERMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1JVRkRka01zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkpMRXRCUVVzc1JVRkRiRU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1JVRkRha01zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8yZENRVU4yUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlExSXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJRenRoUVVOa08xRkJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGVEN4RlFVRkZMRU5CUVVNc1YwRkJWeXhEUVVGRExHbENRVUZwUWl4RlFVRkZMRkZCUVZFc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMUZCUTJoRkxFOUJRVThzUlVGQlJTeERRVUZETzBsQlExb3NRMEZCUXp0RFFVRkJPMEZCUlVRc1UwRkJVeXhwUWtGQmFVSXNRMEZCUXl4TFFVRlZMRVZCUVVVc1RVRkJWeXhGUVVGRkxFdEJRV003U1VGRGFFVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1NVRkROVU1zVFVGQlRTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEzQkRMRTFCUVUwc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJRenRKUVVOdVF5eExRVUZMTEUxQlFVMHNTVUZCU1N4SlFVRkpMRXRCUVVzc1JVRkJSVHRSUVVONFFpeE5RVUZOTEVsQlFVa3NSMEZEVWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRrY3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRaUVVOV0xFOUJRVThzU1VGQlNTeERRVUZETzB0QlEyWTdTVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJDeFRRVUZUTEZkQlFWY3NRMEZCUXl4RlFVRjNRaXhGUVVNelF5eExRVUZoTEVWQlFVVXNTMEZCWVN4RlFVRkZMRkZCUVhkQ0xFVkJRVVVzVVVGQmEwSXNSVUZCUlN4bFFVRjFRaXhGUVVGRkxFOUJRV1U3U1VGRGNFZ3NUVUZCVFN4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF6dEpRVU0zUWl4TlFVRk5MRTFCUVUwc1IwRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUU0UWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wbEJRMjVGTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUUyUWl4RFFVRkRPMGxCUTJoRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4VFFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTTVReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTVUZET1VNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdVVUZEY2tNc1RVRkJUU3hUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pHTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVSaXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0JETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1RVRkJUU3hGUVVGRkxFTkJRVU03VVVGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU14UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTXhSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJReXhsUVVGbExFTkJRVU03VVVGRE4wWXNSMEZCUnl4RFFVRkRMRmRCUVZjc1IwRkJSeXhSUVVGUkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXp0UlFVTTVReXhIUVVGSExFTkJRVU1zVTBGQlV5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNaRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOc1FqdEpRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxGTkJRVk1zVjBGQlZ5eERRVU5zUWl4RlFVRlpMRVZCUTFvc1JVRkJXU3hGUVVOYUxFZEJRV01zUlVGRFpDeFZRVUZ4UWl4RlFVTnlRaXhSUVVGclFpeEZRVU5zUWl4UFFVRmxMRVZCUTJZc1MwRkJZVHRKUVVOaUxFMUJRVTBzUzBGQlN5eEhRVUZaTEVWQlFVVXNRMEZCUXp0SlFVTXhRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnNReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRia0lzVFVGQlRTeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMjVDTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVWQlFVVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNN1MwRkRlRVU3U1VGRFJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRiRVFzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNKR0xFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnlSaXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNN1UwRkRjRU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMFJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF5OUVMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGNrVXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdTVUZEYkVRc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRiRVFzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBsQlEzaERMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZGTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVONFF5eFBRVUZQTEVWQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJReXhEUVVGRE8wRkJRekZDTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVdkQ0xHOUNRVUZ2UWl4RFFVTjBReXhIUVVGWExFVkJRMWdzVFVGQmFVSXNSVUZEYWtJc1MwRkJiVUlzUlVGRGJrSXNUVUZCYlVJc1JVRkRia0lzVDBGQmJVVTdPMUZCUjNKRkxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTJwRExFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE1VSXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOcVF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhOUVVGTkxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZGTEVOQlFVTTdVMEZEZEVRN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPME5CUVVFN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYVVOQlFXbERMRU5CUVVNc1IwRkJWeXhGUVVGRkxGTkJRV2xDTEVWQlFVVXNUVUZCYlVJN1NVRkZia2NzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zVFVGQlRTeGhRVUZoTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTNwQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTTVRaXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEhsQ1FVRjVRaXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGFrVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF6dExRVU40Ump0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHNnWjJWMFUybHRhV3hoY21sMGVVWnliMjFFYVhOMFlXNWpaU0I5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVXhwYm1VZ2UxeHVJQ0JwWkRvZ2JuVnRZbVZ5TzF4dUlDQnRiMnh6T2lCdWRXMWlaWEpiWFR0Y2JpQWdjMlZzWldOMFpXUTZJR0p2YjJ4bFlXNDdYRzRnSUdFNklHNTFiV0psY2x0ZE95QXZMeUJiZUN3Z2VWMWNiaUFnWWpvZ2JuVnRZbVZ5VzEwN0lDOHZJRnQ0TENCNVhWeHVmVnh1WEc1cGJuUmxjbVpoWTJVZ1NWSmxibVJsY21Wa1RHbHVaWE1nZTF4dUlDQnNhVzVsY3pvZ1NVeHBibVZiWFR0Y2JpQWdiR2x1WlhORVpqb2dSRWN1UkdGMFlVWnlZVzFsTzF4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWxUWlhGMVpXNWpaVk53WVdObFVHRnlZVzF6SUh0Y2JpQWdJQ0J6WlhGRGIydzZJRVJITGtOdmJIVnRiaXhjYmlBZ0lDQnRaWFJvYjJST1lXMWxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2MybHRhV3hoY21sMGVVMWxkSEpwWXpvZ2MzUnlhVzVuTEZ4dUlDQWdJR1Z0WW1Wa1FYaGxjMDVoYldWek9pQnpkSEpwYm1kYlhTeGNiaUFnSUNCdmNIUnBiMjV6UHpvZ1lXNTVYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWTmxjWFZsYm1ObFUzQmhZMlZTWlhOMWJIUWdlMXh1SUNBZ0lHUnBjM1JoYm1ObE9pQk5ZWFJ5YVhnN1hHNGdJQ0FnWTI5dmNtUnBibUYwWlhNNklFUkhMa052YkhWdGJreHBjM1E3WEc0Z0lIMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKUkhKaGQxUnZiMngwYVhCUVlYSmhiWE1nZTF4dUlDQjBiMjlzZEdsd2N6b2dZVzU1TEZ4dUlDQnNhVzVsT2lCSlRHbHVaU3hjYmlBZ1pHWTZJRVJITGtSaGRHRkdjbUZ0WlN4Y2JpQWdjMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNYRzRnSUdGamRHbDJhWFI1T2lCRVJ5NURiMngxYlc0c1hHNGdJSGc2SUc1MWJXSmxjaXhjYmlBZ2VUb2diblZ0WW1WeVhHNTlYRzVjYm14bGRDQjZiMjl0SUQwZ1ptRnNjMlU3WEc1Y2JpOHZJRk5sWVhKamFHVnpJR1p2Y2lCaFkzUnBkbWwwZVNCamJHbG1abk1nYVc0Z1lTQmphR1Z0YVdOaGJDQmtZWFJoYzJWMElHSjVJSE5sYkdWamRHVmtJR04xZEc5bVpseHVaWGh3YjNKMElHRnplVzVqSUdaMWJtTjBhVzl1SUdkbGRFRmpkR2wyYVhSNVEyeHBabVp6S0Z4dUlDQWdJR1JtT2lCRVJ5NUVZWFJoUm5KaGJXVXNJRnh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQmNiaUFnSUNCaGVHVnpUbUZ0WlhNNklITjBjbWx1WjF0ZExGeHVJQ0FnSUhOallYUjBaWEpVYVhSc1pUb2djM1J5YVc1bkxGeHVJQ0FnSUdGamRHbDJhWFJwWlhNNklFUkhMa052YkhWdGJpd2dYRzRnSUNBZ2MybHRhV3hoY21sMGVUb2diblZ0WW1WeUxGeHVJQ0FnSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUhOMGNtbHVaeXdnWEc0Z0lDQWdiV1YwYUc5a1RtRnRaVG9nYzNSeWFXNW5MQ0JjYmlBZ0lDQnpaVzFVZVhCbE9pQnpkSEpwYm1jc1hHNGdJQ0FnZFc1cGRITTZJSE4wY21sdVp5eGNiaUFnSUNCelpYRlRjR0ZqWlVaMWJtTTZJQ2h3WVhKaGJYTTZJRWxUWlhGMVpXNWpaVk53WVdObFVHRnlZVzF6S1NBOVBpQlFjbTl0YVhObFBFbFRaWEYxWlc1alpWTndZV05sVW1WemRXeDBQaXhjYmlBZ0lDQnphVzFHZFc1ak9pQW9ZMjlzT2lCRVJ5NURiMngxYlc0c0lHMXZiRG9nYzNSeWFXNW5LU0E5UGlCUWNtOXRhWE5sUEVSSExrTnZiSFZ0YmlCOElHNTFiR3crTEZ4dUlDQWdJSFJ2YjJ4MGFYQkVjbUYzUm5WdVl6b2dLSEJoY21GdGN6b2dTVVJ5WVhkVWIyOXNkR2x3VUdGeVlXMXpLU0E5UGlCMmIybGtMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwSURvZ1VISnZiV2x6WlR4RVJ5NVdhV1YzWlhJK0lIdGNiaUFnWTI5dWMzUWdZWFYwYjIxaGRHbGpVMmx0YVd4aGNtbDBlVXhwYldsMElEMGdabUZzYzJVN1hHNGdJR052Ym5OMElFMUpUbDlUU1UxSlRFRlNTVlJaSUQwZ09EQTdYRzVjYmlBZ1kyOXVjM1FnYVc1cGRHbGhiRk5wYldsc1lYSnBkSGxNYVcxcGRDQTlJR0YxZEc5dFlYUnBZMU5wYldsc1lYSnBkSGxNYVcxcGRDQS9JRTFKVGw5VFNVMUpURUZTU1ZSWklEb2djMmx0YVd4aGNtbDBlU0F2SURFd01EdGNibHh1SUNCamIyNXpkQ0I3WkdsemRHRnVZMlVzSUdOdmIzSmthVzVoZEdWemZTQTlJR0YzWVdsMElITmxjVk53WVdObFJuVnVZeWg3WEc0Z0lDQWdjMlZ4UTI5c09pQnpaWEZEYjJ3c1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2JXVjBhRzlrVG1GdFpTeGNiaUFnSUNCemFXMXBiR0Z5YVhSNVRXVjBjbWxqT2lCemFXMXBiR0Z5YVhSNVRXVjBjbWxqTEZ4dUlDQWdJR1Z0WW1Wa1FYaGxjMDVoYldWek9pQmhlR1Z6VG1GdFpYTXNYRzRnSUNBZ2IzQjBhVzl1Y3pvZ2IzQjBhVzl1YzF4dUlDQjlLVHRjYmx4dUlDQm1iM0lnS0dOdmJuTjBJR052YkNCdlppQmpiMjl5WkdsdVlYUmxjeWxjYmlBZ0lDQmtaaTVqYjJ4MWJXNXpMbUZrWkNoamIyd3BPMXh1WEc0Z0lHTnZibk4wSUdSbVUyVnhJRDBnUkVjdVJHRjBZVVp5WVcxbExtWnliMjFEYjJ4MWJXNXpLRnRFUnk1RGIyeDFiVzR1Wm5KdmJVeHBjM1FvSjNOMGNtbHVaeWNzSUNkelpYRW5MQ0J6WlhGRGIyd3VkRzlNYVhOMEtDa3BYU2s3WEc0Z0lHTnZibk4wSUdScGJTQTlJSE5sY1VOdmJDNXNaVzVuZEdnN1hHNGdJR052Ym5OMElITnBiVUZ5Y2pvZ1JFY3VRMjlzZFcxdVcxMGdQU0JCY25KaGVTaGthVzBnTFNBeEtUdGNibHh1SUNCcFppQW9JV1JwYzNSaGJtTmxLVnh1SUNBZ0lHRjNZV2wwSUdkbGRGTnBiV2xzWVhKcGRHbGxjMDFoY21sNEtHUnBiU3dnYzJWeFEyOXNMQ0JrWmxObGNTd2djMmx0UVhKeUxDQnphVzFHZFc1aktUdGNiaUFnWld4elpWeHVJQ0FnSUdkbGRGTnBiV2xzWVhKcGRHbGxjMDFoY21sNFJuSnZiVVJwYzNSaGJtTmxjeWhrYVcwc0lHUnBjM1JoYm1ObExDQnphVzFCY25JcE8xeHVYRzRnSUdOdmJuTjBJRzl3ZEZOcGJXbHNZWEpwZEhsTWFXMXBkQ0E5SUdsdWFYUnBZV3hUYVcxcGJHRnlhWFI1VEdsdGFYUTdYRzVjYmlBZ1kyOXVjM1FnYzJsdFZtRnNjem9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWTI5dWMzUWdjMkZzYVZaaGJITTZJRzUxYldKbGNsdGRJRDBnVzEwN1hHNGdJR052Ym5OMElHNHhPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0JqYjI1emRDQnVNam9nYm5WdFltVnlXMTBnUFNCYlhUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBaFBTQmthVzBnTFNBeE95QXJLMmtwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ01Ec2dhaUFoUFNCa2FXMGdMU0F4SUMwZ2FUc2dLeXRxS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J6YVcwNklHNTFiV0psY2lBOUlITnBiVUZ5Y2x0cFhTNW5aWFFvYWlrN1hHNWNiaUFnSUNBZ0lHbG1JQ2h6YVcwZ1BqMGdiM0IwVTJsdGFXeGhjbWwwZVV4cGJXbDBLU0I3WEc0Z0lDQWdJQ0FnSUc0eExuQjFjMmdvYVNrN1hHNGdJQ0FnSUNBZ0lHNHlMbkIxYzJnb2FTQXJJR29nS3lBeEtUdGNiaUFnSUNBZ0lDQWdjMmx0Vm1Gc2N5NXdkWE5vS0hOcGJTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBabVlnUFNCTllYUm9MbUZpY3loaFkzUnBkbWwwYVdWekxtZGxkQ2hwS1NBdElHRmpkR2wyYVhScFpYTXVaMlYwS0drZ0t5QnFJQ3NnTVNrcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYzJsdElDRTlJREVwWEc0Z0lDQWdJQ0FnSUNBZ2MyRnNhVlpoYkhNdWNIVnphQ2hrYVdabUlDOGdLREVnTFNCemFXMHBLVHRjYmlBZ0lDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQWdJSE5oYkdsV1lXeHpMbkIxYzJnb1NXNW1hVzVwZEhrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHTnZibk4wSUhOaGJHbFdZV3h6VjJsMGFHOTFkRWx1Wm1sdWFYUjVJRDBnYzJGc2FWWmhiSE11Wm1sc2RHVnlLR2wwSUQwK0lHbDBJQ0U5UFNCSmJtWnBibWwwZVNrN1hHNGdJR052Ym5OMElITmhiR2xOYVc0Z1BTQk5ZWFJvTG0xcGJpZ3VMaTV6WVd4cFZtRnNjMWRwZEdodmRYUkpibVpwYm1sMGVTazdYRzRnSUdOdmJuTjBJSE5oYkdsTllYZ2dQU0JOWVhSb0xtMWhlQ2d1TGk1ellXeHBWbUZzYzFkcGRHaHZkWFJKYm1acGJtbDBlU2s3WEc0Z0lHTnZibk4wSUhOaGJHbFBjR0ZqYVhSNVEyOWxaaUE5SURBdU9DOG9jMkZzYVUxaGVDQXRJSE5oYkdsTmFXNHBPMXh1WEc1Y2JpQWdZMjl1YzNRZ2JtVnBaMmhpYjNWeWMwTnZkVzUwSUQwZ2JtVjNJRUZ5Y21GNUtHUnBiU2t1Wm1sc2JDZ3dLVHRjYmlBZ1kyOXVjM1FnYzJsdGFXeGhjbWwwZVVOdmRXNTBJRDBnYm1WM0lFRnljbUY1S0dScGJTa3VabWxzYkNnd0tUdGNiaUFnWTI5dWMzUWdjMkZzYVVOdmRXNTBJRDBnYm1WM0lFRnljbUY1S0dScGJTa3VabWxzYkNnd0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBaFBTQnVNUzVzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUc1bGFXZG9ZbTkxY25ORGIzVnVkRnR1TVZ0cFhWMGdLejBnTVR0Y2JpQWdJQ0J1WldsbmFHSnZkWEp6UTI5MWJuUmJiakpiYVYxZElDczlJREU3WEc0Z0lDQWdjMmx0YVd4aGNtbDBlVU52ZFc1MFcyNHhXMmxkWFNBclBTQnphVzFXWVd4elcybGRPMXh1SUNBZ0lITnBiV2xzWVhKcGRIbERiM1Z1ZEZ0dU1sdHBYVjBnS3owZ2MybHRWbUZzYzF0cFhUdGNiaUFnSUNCcFppQW9jMkZzYVZaaGJITmJhVjBnSVQwZ1NXNW1hVzVwZEhrcElIdGNiaUFnSUNBZ0lHbG1JQ2hoWTNScGRtbDBhV1Z6TG1kbGRDaHVNVnRwWFNrZ1BpQmhZM1JwZG1sMGFXVnpMbWRsZENodU1sdHBYU2twWEc0Z0lDQWdJQ0FnSUhOaGJHbERiM1Z1ZEZ0dU1WdHBYVjBnS3owZ2MyRnNhVlpoYkhOYmFWMDdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUhOaGJHbERiM1Z1ZEZ0dU1sdHBYVjBnS3owZ2MyRnNhVlpoYkhOYmFWMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MyRnNhVG9nUkVjdVEyOXNkVzF1SUQwZ1JFY3VRMjlzZFcxdUxtWnliMjFNYVhOMEtDZGtiM1ZpYkdVbkxDQmdjMkZzYVY4a2UyRjRaWE5PWVcxbGMxc3dYUzV6ZFdKemRISnBibWNvWVhobGMwNWhiV1Z6V3pCZExteGhjM1JKYm1SbGVFOW1LQ2RmSnlrcGZXQXNJSE5oYkdsRGIzVnVkQ2s3WEc1Y2JpQWdaR1l1WTI5c2RXMXVjeTVoWkdRb2MyRnNhU2s3WEc1Y2JpQWdZMjl1YzNRZ2RtbGxkeUE5SUdkeWIyc3VjMmhsYkd3dVoyVjBWR0ZpYkdWV2FXVjNLR1JtTG01aGJXVXBPMXh1SUNCamIyNXpkQ0J6Y0NBOUlIWnBaWGN1WVdSa1ZtbGxkMlZ5S0VSSExsWnBaWGRsY2k1elkyRjBkR1Z5VUd4dmRDaGtaaXdnZTF4dUlDQWdJSGhEYjJ4MWJXNU9ZVzFsT2lCaGVHVnpUbUZ0WlhOYk1GMHNYRzRnSUNBZ2VVTnZiSFZ0Yms1aGJXVTZJR0Y0WlhOT1lXMWxjMXN4WFN4Y2JpQWdJQ0J6YVhwbE9pQnpZV3hwTG01aGJXVXNYRzRnSUNBZ1kyOXNiM0k2SUdGamRHbDJhWFJwWlhNdWJtRnRaU3hjYmlBZ0lDQnphRzkzV0ZObGJHVmpkRzl5T2lCbVlXeHpaU3hjYmlBZ0lDQnphRzkzV1ZObGJHVmpkRzl5T2lCbVlXeHpaU3hjYmlBZ0lDQnphRzkzVTJsNlpWTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J6YUc5M1EyOXNiM0pUWld4bFkzUnZjam9nWm1Gc2MyVXNYRzRnSUNBZ2JXRnlhMlZ5VFdsdVUybDZaVG9nTlN4Y2JpQWdJQ0J0WVhKclpYSk5ZWGhUYVhwbE9pQXlOU3hjYmlBZ0lDQjBhWFJzWlRvZ2MyTmhkSFJsY2xScGRHeGxYRzRnSUgwcEtTQmhjeUJFUnk1VFkyRjBkR1Z5VUd4dmRGWnBaWGRsY2p0Y2JseHVJQ0JqYjI1emRDQmpZVzUyWVhNZ1BTQW9jM0F1WjJWMFNXNW1ieWdwSUdGeklHRnVlU2xiSjJOaGJuWmhjeWRkTzF4dUlDQmpiMjV6ZENCc2FXNWxjMUpsY3lBOUlHTnlaV0YwWlV4cGJtVnpLRzR4TENCdU1pd2djMlZ4UTI5c0xDQmhZM1JwZG1sMGFXVnpMQ0J6WVd4cFZtRnNjeXdnYzJWdFZIbHdaU3dnZFc1cGRITXBPMXh1SUNCamIyNXpkQ0IwYjI5c2RHbHdjem9nWVc1NUlEMGdlMzA3WEc1Y2JpQWdiR2x1WlhOU1pYTXViR2x1WlhORVppNXZia04xY25KbGJuUkRaV3hzUTJoaGJtZGxaQzV6ZFdKelkzSnBZbVVvS0NrZ1BUNGdlMXh1SUNBZ0lHTnZibk4wSUdOMWNuSmxiblJOYjJ4SlpIZ2dQU0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUkRiMndnSmlZZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1amRYSnlaVzUwUTI5c0xtNWhiV1VnUFQwOUlDY3lYM05sY1NjZ1B5QXhJRG9nTUR0Y2JpQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVkzVnljbVZ1ZEZKdmQwbGtlQ0E5WEc0Z0lDQWdJQ0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUlNiM2RKWkhnZ0lUMDlJQzB4SUQ4Z2JHbHVaWE5TWlhNdWJHbHVaWE5iYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNFhTNXRiMnh6VzJOMWNuSmxiblJOYjJ4SlpIaGRJRG9nTFRFN1hHNGdJQ0FnYzNBdVpHRjBZVVp5WVcxbExuTmxiR1ZqZEdsdmJpNXpaWFFvTUN3Z0lXeHBibVZ6VW1WekxteHBibVZ6V3pCZExuTmxiR1ZqZEdWa0tUdGNiaUFnSUNCemNDNWtZWFJoUm5KaGJXVXVjMlZzWldOMGFXOXVMbk5sZENnd0xDQnNhVzVsYzFKbGN5NXNhVzVsYzFzd1hTNXpaV3hsWTNSbFpDazdYRzRnSUNBZ2JHbHVaWE5FWmtkeWFXUXVhVzUyWVd4cFpHRjBaU2dwTzF4dUlDQjlLVHRjYmx4dUlDQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtOXVVMlZzWldOMGFXOXVRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LRjhwSUQwK0lIdGNiaUFnSUNCcFppQW9iR2x1WlhOU1pYTXViR2x1WlhORVppNXRiM1Z6WlU5MlpYSlNiM2RKWkhnZ0lUMDlJQzB4S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JzYVc1bElEMGdiR2x1WlhOU1pYTXViR2x1WlhOYmJHbHVaWE5TWlhNdWJHbHVaWE5FWmk1dGIzVnpaVTkyWlhKU2IzZEpaSGhkTzF4dUlDQWdJQ0FnYkdsdVpTNXpaV3hsWTNSbFpDQTlJQ0ZzYVc1bExuTmxiR1ZqZEdWa08xeHVJQ0FnSUNBZ2FXWWdLQ0ZzYVc1bExuTmxiR1ZqZEdWa0tWeHVJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMFFXeHNLR1poYkhObEtUdGNiaUFnSUNCOVhHNGdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTXVabTl5UldGamFDZ29iQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR3d1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUd3dWJXOXNjeTVtYjNKRllXTm9LQ2h0S1NBOVBpQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtHMHNJSFJ5ZFdVcEtUdGNiaUFnSUNCOUtUdGNiaUFnSUNCc2FXNWxjMFJtUjNKcFpDNXBiblpoYkdsa1lYUmxLQ2s3WEc0Z0lIMHBPMXh1WEc0Z0lHTnZibk4wSUd4cGJtVnpSR1pIY21sa0lEMGdiR2x1WlhOU1pYTXViR2x1WlhORVppNXdiRzkwTG1keWFXUW9LUzV6YjNKMEtGc25ZV04wWDJScFptWW5YU3dnVzJaaGJITmxYU2s3WEc1Y2JpQWdiR2x1WlhORVprZHlhV1F1YjI1RFpXeHNRMnhwWTJzdWMzVmljMk55YVdKbEtDZ3BJRDArSUh0Y2JpQWdJQ0I2YjI5dElEMGdkSEoxWlR0Y2JpQWdmU2s3WEc1Y2JpQWdZMjl1YzNRZ2JHbHpkRU5zYVdabWMweHBibXNnUFNCMWFTNWlkWFIwYjI0b1lDUjdiR2x1WlhOU1pYTXViR2x1WlhORVppNXliM2REYjNWdWRIMGdZMnhwWm1aellDd2dLQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR05zYVdabWMwUnBZV3h2WnlBOUlIVnBMbVJwWVd4dlp5aDdkR2wwYkdVNklDZEJZM1JwZG1sMGVTQmpiR2xtWm5NbmZTbGNiaUFnSUNBZ0lDNWhaR1FvYkdsdVpYTkVaa2R5YVdRdWNtOXZkQ2xjYmlBZ0lDQWdJQzV6YUc5M0tDazdYRzRnSUNBZ1kyeHBabVp6UkdsaGJHOW5Mbkp2YjNRdWFXUWdQU0FuWTJ4cFptWnpYMlJwWVd4dlp5YzdYRzRnSUgwcE8xeHVJQ0JzYVhOMFEyeHBabVp6VEdsdWF5NXpkSGxzWlM1d2IzTnBkR2x2YmlBOUlDZGhZbk52YkhWMFpTYzdYRzRnSUd4cGMzUkRiR2xtWm5OTWFXNXJMbk4wZVd4bExuUnZjQ0E5SUNjeE1IQjRKenRjYmlBZ2JHbHpkRU5zYVdabWMweHBibXN1YzNSNWJHVXVjbWxuYUhRZ1BTQW5NVEJ3ZUNjN1hHNGdJSE53TG5KdmIzUXVZWEJ3Wlc1a0tHeHBjM1JEYkdsbVpuTk1hVzVyS1R0Y2JseHVJQ0JzWlhRZ2RHbHRaWEk2SUU1dlpHVktVeTVVYVcxbGIzVjBPMXh1SUNCallXNTJZWE11WVdSa1JYWmxiblJNYVhOMFpXNWxjaWduYlc5MWMyVnRiM1psSnl3Z1puVnVZM1JwYjI0Z0tHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtTQjdYRzRnSUNBZ1kyeGxZWEpVYVcxbGIzVjBLSFJwYldWeUtUdGNiaUFnSUNCMGFXMWxjaUE5SUdkc2IySmhiQzV6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lHTnZibk4wSUd4cGJtVWdQU0JqYUdWamEwTjFjbk52Y2s5dVRHbHVaU2hsZG1WdWRDd2dZMkZ1ZG1GekxDQnNhVzVsYzFKbGN5NXNhVzVsY3lrN1hHNGdJQ0FnSUNCcFppQW9iR2x1WlNBbUppQmtaaTV0YjNWelpVOTJaWEpTYjNkSlpIZ2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaGRHOXZiSFJwY0hOYmJHbHVaUzVwWkYwcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmtjbUYzVkc5dmJIUnBjRkJoY21GdGN5QTlJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUnZiMngwYVhCek9pQjBiMjlzZEdsd2N5eGNiaUFnSUNBZ0lDQWdJQ0FnSUd4cGJtVTZJR3hwYm1Vc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWmpvZ1pHWXNYRzRnSUNBZ0lDQWdJQ0FnSUNCelpYRkRiMnc2SUhObGNVTnZiQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHRmpkR2wyYVhSNU9pQmhZM1JwZG1sMGFXVnpMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VEb2daWFpsYm5RdVkyeHBaVzUwV0N4Y2JpQWdJQ0FnSUNBZ0lDQWdJSGs2SUdWMlpXNTBMbU5zYVdWdWRGbGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2RHOXZiSFJwY0VSeVlYZEdkVzVqS0dSeVlYZFViMjlzZEdsd1VHRnlZVzF6S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQjFhUzUwYjI5c2RHbHdMbk5vYjNjb2RHOXZiSFJwY0hOYmJHbHVaUzVwWkYwc0lHVjJaVzUwTG1Oc2FXVnVkRmdzSUdWMlpXNTBMbU5zYVdWdWRGa3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHNJREV3TURBcE8xeHVJQ0I5S1R0Y2JseHVJQ0JqWVc1MllYTXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25iVzkxYzJWa2IzZHVKeXdnWm5WdVkzUnBiMjRvWlhabGJuUTZJRTF2ZFhObFJYWmxiblFwSUh0Y2JpQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ1kyaGxZMnREZFhKemIzSlBia3hwYm1Vb1pYWmxiblFzSUdOaGJuWmhjeXdnYkdsdVpYTlNaWE11YkdsdVpYTXBPMXh1SUNBZ0lHbG1JQ2hzYVc1bElDWW1JR1JtTG0xdmRYTmxUM1psY2xKdmQwbGtlQ0E5UFQwZ0xURXBJSHRjYmlBZ0lDQWdJR2xtSUNobGRtVnVkQzVqZEhKc1MyVjVLU0I3WEc0Z0lDQWdJQ0FnSUd4cGJtVXVjMlZzWldOMFpXUWdQU0FoYkdsdVpTNXpaV3hsWTNSbFpEdGNiaUFnSUNBZ0lDQWdiR2x1WlhOU1pYTXViR2x1WlhORVppNXpaV3hsWTNScGIyNHVjMlYwS0d4cGJtVXVhV1FzSUd4cGJtVXVjMlZzWldOMFpXUXBPMXh1WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiR2x1WlM1elpXeGxZM1JsWkNsY2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMFFXeHNLR1poYkhObEtUdGNibHh1SUNBZ0lDQWdJQ0JzYVc1bGMxSmxjeTVzYVc1bGN5NW1iM0pGWVdOb0tDaHNLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0d3dWMyVnNaV04wWldRcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JzTG0xdmJITXVabTl5UldGamFDZ29iU2tnUFQ0Z1pHWXVjMlZzWldOMGFXOXVMbk5sZENodExDQjBjblZsS1NrN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdhV1lnS0d4cGJtVnpVbVZ6TG14cGJtVnpSR1l1WTNWeWNtVnVkRkp2ZDBsa2VDQWhQVDBnYkdsdVpTNXBaQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0E5SUd4cGJtVXVhV1E3WEc0Z0lDQWdJQ0FnSUNBZ1pHWXVZM1Z5Y21WdWRGSnZkMGxrZUNBOUlHeHBibVV1Ylc5c2Mxc3dYVHRjYmlBZ0lDQWdJQ0FnSUNCa1ppNXpaV3hsWTNScGIyNHVjMlYwS0RBc0lDRnNhVzVsYzFKbGN5NXNhVzVsYzFzd1hTNXpaV3hsWTNSbFpDazdYRzRnSUNBZ0lDQWdJQ0FnWkdZdWMyVnNaV04wYVc5dUxuTmxkQ2d3TENCc2FXNWxjMUpsY3k1c2FXNWxjMXN3WFM1elpXeGxZM1JsWkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBwTzF4dVhHNGdJSE53TG05dVJYWmxiblFvSjJRMExXSmxabTl5WlMxa2NtRjNMWE5qWlc1bEp5bGNiaUFnSUNBdWMzVmljMk55YVdKbEtDaGZLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0JzYVc1bGN5QTlJSEpsYm1SbGNreHBibVZ6S0hOd0xGeHVJQ0FnSUNBZ0lDQmhlR1Z6VG1GdFpYTmJNRjBzSUdGNFpYTk9ZVzFsYzFzeFhTd2diR2x1WlhOU1pYTXNJSE5oYkdsV1lXeHpMQ0J6WVd4cFQzQmhZMmwwZVVOdlpXWXNJSE5oYkdsTmFXNHBPMXh1SUNBZ0lDQWdhV1lnS0hwdmIyMHBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRFeHBibVVnUFNCc2FXNWxjMXRzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUlNiM2RKWkhoZE8xeHVJQ0FnSUNBZ0lDQnpaWFJVYVcxbGIzVjBLQ2dwUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIZ3hJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTUYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1GMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGt4SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1WMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNRjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhneUlEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNRjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTVYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIa3lJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTVYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1WMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGhFYVdabUlEMGdUV0YwYUM1aFluTW9lREVnTFNCNE1pa3FOVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0I1UkdsbVppQTlJRTFoZEdndVlXSnpLSGt4SUMwZ2VUSXBLalU3WEc0Z0lDQWdJQ0FnSUNBZ2MzQXVlbTl2YlNoNE1TQThJSGd5SUQ4Z2VERWdMU0I0UkdsbVppQTZJSGd5SUMwZ2VFUnBabVlzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjVNU0ErSUhreUlEOGdlVEVnS3lCNVJHbG1aaUE2SUhreUlDQXJJSGxFYVdabUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZURFZ1BpQjRNaUEvSUhneElDc2dlRVJwWm1ZZ09pQjRNaUFySUhoRWFXWm1MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VURWdQQ0I1TWlBL0lIa3hJQzBnZVVScFptWWdPaUI1TWlBdElIbEVhV1ptS1R0Y2JpQWdJQ0FnSUNBZ2ZTd2dNekF3S1R0Y2JpQWdJQ0FnSUNBZ2VtOXZiU0E5SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lITndMbUZrWkZCeWIzQmxjblI1S0NkemFXMXBiR0Z5YVhSNVRHbHRhWFFuTENBblpHOTFZbXhsSnl3Z2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMEtUdGNiaUFnY21WMGRYSnVJSE53TzF4dWZWeHVYRzVtZFc1amRHbHZiaUJqYUdWamEwTjFjbk52Y2s5dVRHbHVaU2hsZG1WdWREb2dZVzU1TENCallXNTJZWE02SUdGdWVTd2diR2x1WlhNNklFbE1hVzVsVzEwcE9pQkpUR2x1WlNCOElHNTFiR3dnZTF4dUlDQmpiMjV6ZENCeVpXTjBJRDBnWTJGdWRtRnpMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENncE8xeHVJQ0JqYjI1emRDQjRJRDBnWlhabGJuUXVZMnhwWlc1MFdDQXRJSEpsWTNRdWJHVm1kRHRjYmlBZ1kyOXVjM1FnZVNBOUlHVjJaVzUwTG1Oc2FXVnVkRmtnTFNCeVpXTjBMblJ2Y0R0Y2JpQWdabTl5SUNoamIyNXpkQ0JzYVc1bElHOW1JR3hwYm1WektTQjdYRzRnSUNBZ1kyOXVjM1FnWkdsemRDQTlYRzRnSUNBZ0lDQk5ZWFJvTG1GaWN5aE5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlWc3dYU0F0SUhnc0lHeHBibVV1WVZzeFhTQXRJSGtwSUN0Y2JpQWdJQ0FnSUUxaGRHZ3VhSGx3YjNRb2JHbHVaUzVpV3pCZElDMGdlQ3dnYkdsdVpTNWlXekZkSUMwZ2VTa2dMU0JOWVhSb0xtaDVjRzkwS0d4cGJtVXVZVnN3WFNBdElHeHBibVV1WWxzd1hTd2diR2x1WlM1aFd6RmRJQzBnYkdsdVpTNWlXekZkS1NrN1hHNGdJQ0FnYVdZZ0tHUnBjM1FnUENBeUtWeHVJQ0FnSUNBZ2NtVjBkWEp1SUd4cGJtVTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlHNTFiR3c3WEc1OVhHNWNibVoxYm1OMGFXOXVJSEpsYm1SbGNreHBibVZ6S0hOd09pQkVSeTVUWTJGMGRHVnlVR3h2ZEZacFpYZGxjaXhjYmlBZ2VFRjRhWE02SUhOMGNtbHVaeXdnZVVGNGFYTTZJSE4wY21sdVp5d2diR2x1WlhOU1pYTTZJRWxTWlc1a1pYSmxaRXhwYm1WekxDQnpZV3hwVm1Gc2N6b2diblZ0WW1WeVcxMHNJSE5oYkdsUGNHRmphWFI1UTI5bFpqb2diblZ0WW1WeUxDQnpZV3hwVFdsdU9pQnVkVzFpWlhJcE9pQkpUR2x1WlNCYlhTQjdYRzRnSUdOdmJuTjBJR3hwYm1WeklEMGdiR2x1WlhOU1pYTXViR2x1WlhNN1hHNGdJR052Ym5OMElHTmhiblpoY3lBOUlDaHpjQzVuWlhSSmJtWnZLQ2tnWVhNZ2UxdHBibVJsZURvZ2MzUnlhVzVuWFNBNklHRnVlWDBwV3lkallXNTJZWE1uWFR0Y2JpQWdZMjl1YzNRZ1kzUjRJRDBnWTJGdWRtRnpMbWRsZEVOdmJuUmxlSFFvSnpKa0p5a2dZWE1nUTJGdWRtRnpVbVZ1WkdWeWFXNW5RMjl1ZEdWNGRESkVPMXh1SUNCamIyNXpkQ0I0SUQwZ2MzQXVaR0YwWVVaeVlXMWxJUzVqYjJ4MWJXNXpMbUo1VG1GdFpTaDRRWGhwY3lrN1hHNGdJR052Ym5OMElIa2dQU0J6Y0M1a1lYUmhSbkpoYldVaExtTnZiSFZ0Ym5NdVlubE9ZVzFsS0hsQmVHbHpLVHRjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNhVzVsY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUhCdmFXNTBSbkp2YlNBOUlITndMbmR2Y214a1ZHOVRZM0psWlc0b2VDNW5aWFFvYkdsdVpYTmJhVjB1Ylc5c2Mxc3dYU2tzSUhrdVoyVjBLR3hwYm1WelcybGRMbTF2YkhOYk1GMHBLVHRjYmlBZ0lDQmpiMjV6ZENCd2IybHVkRlJ2SUQwZ2MzQXVkMjl5YkdSVWIxTmpjbVZsYmloNExtZGxkQ2hzYVc1bGMxdHBYUzV0YjJ4eld6RmRLU3dnZVM1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzeFhTa3BPMXh1SUNBZ0lHeHBibVZ6VzJsZExtRWdQU0JiY0c5cGJuUkdjbTl0TG5nc0lIQnZhVzUwUm5KdmJTNTVYVHRjYmlBZ0lDQnNhVzVsYzF0cFhTNWlJRDBnVzNCdmFXNTBWRzh1ZUN3Z2NHOXBiblJVYnk1NVhUdGNiaUFnSUNCamIyNXpkQ0JzYVc1bElEMGdibVYzSUZCaGRHZ3lSQ2dwTzF4dUlDQWdJR3hwYm1VdWJXOTJaVlJ2S0d4cGJtVnpXMmxkTG1GYk1GMHNJR3hwYm1WelcybGRMbUZiTVYwcE8xeHVJQ0FnSUdOdmJuTjBJR052Ykc5eUlEMGdiR2x1WlhOYmFWMHVjMlZzWldOMFpXUWdQeUFuTWpVMUxESTFOU3d3SnlBNklDY3dMREV5T0N3d0p6dGNiaUFnSUNCamIyNXpkQ0J2Y0dGamFYUjVJRDBnYzJGc2FWWmhiSE5iYVYwZ1BUMDlJRWx1Wm1sdWFYUjVJRDhnTVNBNklEQXVNaUFySUNoellXeHBWbUZzYzF0cFhTQXRJSE5oYkdsTmFXNHBLbk5oYkdsUGNHRmphWFI1UTI5bFpqdGNiaUFnSUNCamRIZ3VjM1J5YjJ0bFUzUjViR1VnUFNCZ2NtZGlZU2drZTJOdmJHOXlmU3drZTI5d1lXTnBkSGw5S1dBN1hHNGdJQ0FnWTNSNExteHBibVZYYVdSMGFDQTlJR3hwYm1WelcybGRMbWxrSUQwOVBTQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGdnUHlBeklEb2dNVHRjYmlBZ0lDQnNhVzVsTG14cGJtVlVieWhzYVc1bGMxdHBYUzVpV3pCZExDQnNhVzVsYzF0cFhTNWlXekZkS1R0Y2JpQWdJQ0JqZEhndWMzUnliMnRsS0d4cGJtVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnNhVzVsY3p0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxUR2x1WlhNb1hHNGdJRzR4T2lCdWRXMWlaWEpiWFN3Z1hHNGdJRzR5T2lCdWRXMWlaWEpiWFN3Z1hHNGdJSE5sY1RvZ1JFY3VRMjlzZFcxdUxDQmNiaUFnWVdOMGFYWnBkR2xsY3pvZ1JFY3VRMjlzZFcxdUxDQmNiaUFnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkTEZ4dUlDQnpaVzFVZVhCbE9pQnpkSEpwYm1jc1hHNGdJSFZ1YVhSek9pQnpkSEpwYm1jcElEb2dTVkpsYm1SbGNtVmtUR2x1WlhNZ2UxeHVJQ0JqYjI1emRDQnNhVzVsY3pvZ1NVeHBibVZiWFNBOUlGdGRPMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNHhMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWTI5dWMzUWdiblZ0TVNBOUlHNHhXMmxkTzF4dUlDQWdJR052Ym5OMElHNTFiVElnUFNCdU1sdHBYVHRjYmlBZ0lDQnNhVzVsY3k1d2RYTm9LSHRwWkRvZ2FTd2diVzlzY3pvZ1cyNTFiVEVzSUc1MWJUSmRMQ0J6Wld4bFkzUmxaRG9nWm1Gc2MyVXNJR0U2SUZ0ZExDQmlPaUJiWFgwcE8xeHVJQ0I5WEc0Z0lHTnZibk4wSUd4cGJtVnpSR1lnUFNCRVJ5NUVZWFJoUm5KaGJXVXVZM0psWVhSbEtHeHBibVZ6TG14bGJtZDBhQ2s3WEc0Z0lHeHBibVZ6UkdZdVkyOXNkVzF1Y3k1aFpHUk9aWGRUZEhKcGJtY29KekZmYzJWeEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJ6WlhFdVoyVjBLR3hwYm1WelcybGRMbTF2YkhOYk1GMHBLVHRjYmlBZ2JHbHVaWE5FWmk1amIyeDFiVzV6TG1Ga1pFNWxkMU4wY21sdVp5Z25NbDl6WlhFbktTNXBibWwwS0NocE9pQnVkVzFpWlhJcElEMCtJSE5sY1M1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzeFhTa3BPMXh1SUNCc2FXNWxjMFJtTG1OdmJIVnRibk11WVdSa1RtVjNSbXh2WVhRb0oyRmpkRjlrYVdabUp5bGNiaUFnSUNBdWFXNXBkQ2dvYVRvZ2JuVnRZbVZ5S1NBOVBpQk5ZWFJvTG1GaWN5aGhZM1JwZG1sMGFXVnpMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NBdElHRmpkR2wyYVhScFpYTXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1NrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkSmJuUW9KMnhwYm1WZmFXNWtaWGduS1M1cGJtbDBLQ2hwT2lCdWRXMWlaWElwSUQwK0lHa3BPMXh1SUNCc2FXNWxjMFJtTG1OdmJIVnRibk11WVdSa1RtVjNSbXh2WVhRb0ozTmhiR2tuS1M1cGJtbDBLQ2hwT2lCdWRXMWlaWElwSUQwK0lITmhiR2xXWVd4elcybGRLVHRjYmlBZ2JHbHVaWE5FWmk1amIyd29KekZmYzJWeEp5a2hMblJoWjNOYlJFY3VWRUZIVXk1VlRrbFVVMTBnUFNCMWJtbDBjenRjYmlBZ2JHbHVaWE5FWmk1amIyd29KekpmYzJWeEp5a2hMblJoWjNOYlJFY3VWRUZIVXk1VlRrbFVVMTBnUFNCMWJtbDBjenRjYmlBZ2JHbHVaWE5FWmk1amIyd29KekZmYzJWeEp5a2hMbk5sYlZSNWNHVWdQU0J6WlcxVWVYQmxPMXh1SUNCc2FXNWxjMFJtTG1OdmJDZ25NbDl6WlhFbktTRXVjMlZ0Vkhsd1pTQTlJSE5sYlZSNWNHVTdYRzRnSUhKbGRIVnliaUI3YkdsdVpYTXNJR3hwYm1WelJHWjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1lYTjVibU1nWm5WdVkzUnBiMjRnWjJWMFUybHRhV3hoY21sMGFXVnpUV0Z5YVhnb1hHNGdJQ0FnWkdsdE9pQnVkVzFpWlhJc0lGeHVJQ0FnSUhObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0JrWmxObGNUb2dSRWN1UkdGMFlVWnlZVzFsTENCY2JpQWdJQ0J6YVcxQmNuSTZJRVJITGtOdmJIVnRibHRkTEZ4dUlDQWdJSE5wYlVaMWJtTTZJQ2hqYjJ3NklFUkhMa052YkhWdGJpd2diVzlzT2lCemRISnBibWNwSUQwK0lGQnliMjFwYzJVOFJFY3VRMjlzZFcxdUlId2diblZzYkQ1Y2JpQWdJQ0FwWEc0Z0lEb2dVSEp2YldselpUeEVSeTVEYjJ4MWJXNWJYVDRnZTF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQWhQU0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCamIyNXpkQ0J0YjJ3Z1BTQnpaWEZEYjJ3dVoyVjBLR2twTzF4dUlDQWdJR1JtVTJWeExuSnZkM011Y21WdGIzWmxRWFFvTUN3Z01Td2dabUZzYzJVcE8xeHVJQ0FnSUhOcGJVRnljbHRwWFNBOUlDaGhkMkZwZENCemFXMUdkVzVqS0dSbVUyVnhMbU52YkNnbmMyVnhKeWtoTENCdGIyd3BLU0U3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE5wYlVGeWNqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRGTnBiV2xzWVhKcGRHbGxjMDFoY21sNFJuSnZiVVJwYzNSaGJtTmxjeWhrYVcwNklHNTFiV0psY2l3Z1pHbHpkR0Z1WTJWek9pQk5ZWFJ5YVhnc0lITnBiVUZ5Y2pvZ1JFY3VRMjlzZFcxdVcxMHBYRzRnSURvZ1JFY3VRMjlzZFcxdVcxMGdlMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiU0F0SURFN0lDc3JhU2tnZTF4dUlDQWdJR052Ym5OMElITnBiV2xzWVhKcGRIbEJjbklnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdhU0FySURFN0lHb2dQQ0JrYVcwN0lDc3JhaWxjYmlBZ0lDQWdJSE5wYldsc1lYSnBkSGxCY25JdWNIVnphQ2huWlhSVGFXMXBiR0Z5YVhSNVJuSnZiVVJwYzNSaGJtTmxLR1JwYzNSaGJtTmxjMXRwWFZ0cVhTa3BPMXh1SUNBZ0lITnBiVUZ5Y2x0cFhTQTlJRVJITGtOdmJIVnRiaTVtY205dFJteHZZWFF6TWtGeWNtRjVLQ2R6YVcxcGJHRnlhWFI1Snl3Z1JteHZZWFF6TWtGeWNtRjVMbVp5YjIwb2MybHRhV3hoY21sMGVVRnljaWtwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ6YVcxQmNuSTdYRzU5SWwxOSIsImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaW1lbnNpbmFsaXR5UmVkdWNpbmdXb3JrZXIoZGF0YU1ldHJpYywgbWV0aG9kLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIobmV3IFVSTCgnLi9kaW1lbnNpb25hbGl0eS1yZWR1Y2VyJywgaW1wb3J0Lm1ldGEudXJsKSk7XG4gICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBjb2x1bW5EYXRhOiBkYXRhTWV0cmljLmRhdGEsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgIG1lYXN1cmU6IGRhdGFNZXRyaWMubWV0cmljLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGRpc3RhbmNlLCBlbWJlZGRpbmcgfSB9KSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHsgZGlzdGFuY2U6IGRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYmVkZGluZyB9KTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHRaVzV6YVc5dVlXeHBkSGt0Y21Wa2RXTnBibWN0ZDI5eWEyVnlMV055WldGMGIzSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKa2FXMWxibk5wYjI1aGJHbDBlUzF5WldSMVkybHVaeTEzYjNKclpYSXRZM0psWVhSdmNpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZwUWtFc1RVRkJUU3hWUVVGVkxHbERRVUZwUXl4RFFVRkRMRlZCUVhOQ0xFVkJRVVVzVFVGQll5eEZRVU5zUml4UFFVRmhPMGxCUldwQ0xFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTXNWVUZCVXl4UFFVRlBPMUZCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExEQkNRVUV3UWl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTm9SaXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEycENMRlZCUVZVc1JVRkJSU3hWUVVGVkxFTkJRVU1zU1VGQlNUdFpRVU16UWl4TlFVRk5MRVZCUVVVc1RVRkJUVHRaUVVOa0xFOUJRVThzUlVGQlJTeFZRVUZWTEVOQlFVTXNUVUZCVFR0WlFVTXhRaXhQUVVGUExFVkJRVVVzVDBGQlR6dFRRVU5xUWl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hOUVVGTkxFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJReXhSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTNCRUxFOUJRVThzUTBGQlF5eEZRVUZETEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxGTkJRVk1zUlVGQlF5eERRVUZETEVOQlFVTTdVVUZEY2tRc1EwRkJReXhEUVVGRE8wbEJRMG9zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEVEN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnVFdGMGNtbDRJSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0V1lXeHBaRlI1Y0dWemZTQm1jbTl0SUNjdUxpOTBlWEJsWkMxdFpYUnlhV056Snp0Y2JseHVMeW9xWEc0Z0tpQkJJSGR2Y210bGNpQjBieUJ3WlhKbWIzSnRJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmhiR2xrVkhsd1pYTjlJR1JoZEdGTlpYUnlhV01nVkdobElHUmhkR0VnZEc4Z2NISnZZMlZ6Y3k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnRaWFJvYjJRZ1FTQnRaWFJvYjJRZ2IyWWdaR2x0Wlc1emFXOXVZV3hwZEhrZ2NtVmtkV04wYVc5dUxseHVJQ29nUUhCaGNtRnRJRzl3ZEdsdmJuTWdMU0JyWlhrdGRtRnNkV1VnY0dGcGNuTmNiaUFxSUVCd1lYSmhiU0J5WlhSMWNtNUVhWE4wWVc1alpVMWhkSEpwZUZ4dUlDb2dRSEpsZEhWeWJpQjdVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStmU0JTWlhOMWJIUnBibWNnWlcxaVpXUmthVzVuSUdGdVpDQmthWE4wWVc1alpTQnRZWFJ5YVhndVhHNGdLaTljYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZKbFpIVmpaVVJwYldWdWMybHZibUZzYVhSNVVtVnpkV3gwSUh0Y2JpQWdaR2x6ZEdGdVkyVTZJRTFoZEhKcGVEdGNiaUFnWlcxaVpXUmthVzVuT2lCTllYUnlhWGc3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpjbVZoZEdWRWFXMWxibk5wYm1Gc2FYUjVVbVZrZFdOcGJtZFhiM0pyWlhJb1pHRjBZVTFsZEhKcFl6b2dWbUZzYVdSVWVYQmxjeXdnYldWMGFHOWtPaUJ6ZEhKcGJtY3NYRzRnSUNBZ0lDQnZjSFJwYjI1elB6b2dZVzU1S1RvZ1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK0lIdGNibHh1SUNCeVpYUjFjbTRnYm1WM0lGQnliMjFwYzJVb1puVnVZM1JwYjI0b2NtVnpiMngyWlNrZ2UxeHVJQ0FnSUdOdmJuTjBJSGR2Y210bGNpQTlJRzVsZHlCWGIzSnJaWElvYm1WM0lGVlNUQ2duTGk5a2FXMWxibk5wYjI1aGJHbDBlUzF5WldSMVkyVnlKeXdnYVcxd2IzSjBMbTFsZEdFdWRYSnNLU2s3WEc0Z0lDQWdkMjl5YTJWeUxuQnZjM1JOWlhOellXZGxLSHRjYmlBZ0lDQWdJR052YkhWdGJrUmhkR0U2SUdSaGRHRk5aWFJ5YVdNdVpHRjBZU3hjYmlBZ0lDQWdJRzFsZEdodlpEb2diV1YwYUc5a0xGeHVJQ0FnSUNBZ2JXVmhjM1Z5WlRvZ1pHRjBZVTFsZEhKcFl5NXRaWFJ5YVdNc1hHNGdJQ0FnSUNCdmNIUnBiMjV6T2lCdmNIUnBiMjV6TEZ4dUlDQWdJSDBwTzF4dUlDQWdJSGR2Y210bGNpNXZibTFsYzNOaFoyVWdQU0FvZTJSaGRHRTZJSHRrYVhOMFlXNWpaU3dnWlcxaVpXUmthVzVuZlgwcElEMCtJSHRjYmlBZ0lDQWdjbVZ6YjJ4MlpTaDdaR2x6ZEdGdVkyVTZJR1JwYzNSaGJtTmxMQ0JsYldKbFpHUnBibWM2SUdWdFltVmtaR2x1WjMwcE8xeHVJQ0FnSUgwN1hHNGdJSDBwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBmbG9hdCBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBmbG9hdCBnZW5lcmF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21GbG9hdChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogcmFuZ2U7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGludGVnZXIgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gaW50ZWdlciBnZW5lcmF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21JbnQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb21GbG9hdChyYW5nZSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21GdVpHOXRMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWNtRnVaRzl0TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFhRVUZYTEVOQlFVTXNTMEZCWVR0SlFVTjJReXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRMMElzUTBGQlF6dEJRVVZFT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUzBGQllUdEpRVU55UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRlRU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ1pteHZZWFFnWm5KdmJTQXdJSFJ2SUhKaGJtZGxMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J5WVc1blpTQk5ZWGdnWjJWdVpYSmhkR2x1WnlCMllXeDFaUzVjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1FTQnlZVzVrYjIwZ1pteHZZWFFnWjJWdVpYSmhkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbUZ1Wkc5dFJteHZZWFFvY21GdVoyVTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJOWVhSb0xuSmhibVJ2YlNncElDb2djbUZ1WjJVN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdhVzUwWldkbGNpQm1jbTl0SURBZ2RHOGdjbUZ1WjJVdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlISmhibWRsSUUxaGVDQm5aVzVsY21GMGFXNW5JSFpoYkhWbExseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JCSUhKaGJtUnZiU0JwYm5SbFoyVnlJR2RsYm1WeVlYUmxaQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlISmhibVJ2YlVsdWRDaHlZVzVuWlRvZ2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1Wm14dmIzSW9jbUZ1Wkc5dFJteHZZWFFvY21GdVoyVXBLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuZXhwb3J0IGNvbnN0IHNpbWlsYXJpdHlNZXRyaWMgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9TaW1pbGFyaXR5LFxuICAgICdEaWNlJzogZGljZVNpbWlsYXJpdHksXG4gICAgJ0FzeW1tZXRyaWMnOiBhc3ltbWV0cmljU2ltaWxhcml0eSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSxcbiAgICAnQ29zaW5lJzogY29zaW5lU2ltaWxhcml0eSxcbiAgICAnS3VsY3p5bnNraSc6IGt1bGN6eW5za2lTaW1pbGFyaXR5LFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5U2ltaWxhcml0eSxcbiAgICAnUm9nb3QtR29sZGJlcmcnOiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSxcbiAgICAnUnVzc2VsJzogcnVzc2VsU2ltaWxhcml0eSxcbiAgICAnU29rYWwnOiBzb2thbFNpbWlsYXJpdHksXG4gICAgJ0hhbW1pbmcnOiBoYW1taW5nU2ltaWxhcml0eSxcbiAgICAnRXVjbGlkZWFuJzogZXVjbGlkZWFuU2ltaWxhcml0eSxcbn07XG5leHBvcnQgY29uc3QgZGlzdGFuY2VNZXRyaWNzID0ge1xuICAgICdUYW5pbW90byc6IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgJ0RpY2UnOiBkaWNlRGlzdGFuY2UsXG4gICAgJ0FzeW1tZXRyaWMnOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgJ0JyYXVuLUJsYW5xdWV0JzogYnJhdW5CbGFucXVldERpc3RhbmNlLFxuICAgICdDb3NpbmUnOiBjb3NpbmVEaXN0YW5jZSxcbiAgICAnS3VsY3p5bnNraSc6IGt1bGN6eW5za2lEaXN0YW5jZSxcbiAgICAnTWMtQ29ubmF1Z2hleSc6IG1jQ29ubmF1Z2hleURpc3RhbmNlLFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICAnUnVzc2VsJzogcnVzc2VsRGlzdGFuY2UsXG4gICAgJ1Nva2FsJzogc29rYWxEaXN0YW5jZSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdEaXN0YW5jZSxcbiAgICAnRXVjbGlkZWFuJzogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IENIRU1fU0lNSUxBUklUWV9NRVRSSUNTID0gWydUYW5pbW90bycsICdEaWNlJywgJ0Nvc2luZScsICdIYW1taW5nJywgJ0V1Y2xpZGVhbiddO1xuZXhwb3J0IGZ1bmN0aW9uIHRhbmltb3RvU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDEuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvICh0b3RhbCAtIGNvbW1vbik7XG59XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9EaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkodGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaWNlU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIDIgKiBjb21tb24gLyB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaWNlRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGRpY2VTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb3NpbmVTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gTWF0aC5zcXJ0KHRvdGFsKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb3NpbmVEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoY29zaW5lU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhbkRpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpIC0gMiAqIHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFtbWluZ1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIHJldHVybiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGhhbW1pbmdEaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFtbWluZ0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvICgyICogdG90YWwgLSAzICogY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb2thbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShzb2thbFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCkgLyAoMiAqIHRvdGFsUHJvZCk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShrdWxjenluc2tpU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5U2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCB0b3RhbFByb2QgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWxQcm9kID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAoY29tbW9uICogdG90YWwgLSB0b3RhbFByb2QpIC8gdG90YWxQcm9kO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1jQ29ubmF1Z2hleURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgbWluID0gTWF0aC5taW4oeC50cnVlQ291bnQoKSwgeS50cnVlQ291bnQoKSk7XG4gICAgaWYgKG1pbiA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gbWluO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoYXN5bW1ldHJpY1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtYXggPSBNYXRoLm1heCh4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWF4ID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtYXg7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShicmF1bkJsYW5xdWV0U2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVzc2VsU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgaWYgKHgubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyB4Lmxlbmd0aDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocnVzc2VsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICBjb25zdCB0b3RhbCA9IHguY291bnRCaXRzKHRydWUpICsgeS5jb3VudEJpdHModHJ1ZSk7XG4gICAgY29uc3QgbGVuID0geC5sZW5ndGg7XG4gICAgY29uc3QgZGlmZiA9IGxlbiAtIHRvdGFsICsgY29tbW9uO1xuICAgIGlmICgoY29tbW9uID09IGxlbikgfHwgKGRpZmYgPT0gbGVuKSlcbiAgICAgICAgcmV0dXJuIDEuMDtcbiAgICBlbHNlXG4gICAgICAgIHJldHVybiBjb21tb24gLyB0b3RhbCArIGRpZmYgLyAoMiAqIGxlbiAtIHRvdGFsKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHJvZ290R29sZGJlcmdTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlKSB7XG4gICAgcmV0dXJuIDEgLyAoMSArIGRpc3RhbmNlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNpbWlsYXJpdHkpIHtcbiAgICByZXR1cm4gMSAvIHNpbWlsYXJpdHkgLSAxO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoLCBuLCBkaXN0KSB7XG4gICAgZnVuY3Rpb24gbWF4QnkodmFsdWVzLCBvcmRlckJ5KSB7XG4gICAgICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgICAgIGxldCBtYXhPcmRlckJ5ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbWF4T3JkZXJCeSA9IGVsZW1lbnRPcmRlckJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3Vic2V0ID0gW3JhbmRvbUludChsZW5ndGggLSAxKV07XG4gICAgY29uc3QgY29tcGxlbWVudCA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICghc3Vic2V0LmluY2x1ZGVzKGkpKVxuICAgICAgICAgICAgY29tcGxlbWVudC5hZGQoaSk7XG4gICAgfVxuICAgIHdoaWxlIChzdWJzZXQubGVuZ3RoIDwgbikge1xuICAgICAgICBjb25zdCBpZHggPSBtYXhCeShjb21wbGVtZW50LnZhbHVlcygpLCAoaSkgPT4gTWF0aC5taW4uYXBwbHkoTWF0aCwgc3Vic2V0Lm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgICAgfSkpKTtcbiAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1YnNldDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMybHRhV3hoY21sMGVTMXRaWFJ5YVdOekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVTkJMRTlCUVU4c1JVRkJReXhUUVVGVExFVkJRVU1zVFVGQlRTeFZRVUZWTEVOQlFVTTdRVUZGYmtNc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVRKRU8wbEJRM1JHTEZWQlFWVXNSVUZCUlN4clFrRkJhMEk3U1VGRE9VSXNUVUZCVFN4RlFVRkZMR05CUVdNN1NVRkRkRUlzV1VGQldTeEZRVUZGTEc5Q1FVRnZRanRKUVVOc1F5eG5Ra0ZCWjBJc1JVRkJSU3gxUWtGQmRVSTdTVUZEZWtNc1VVRkJVU3hGUVVGRkxHZENRVUZuUWp0SlFVTXhRaXhaUVVGWkxFVkJRVVVzYjBKQlFXOUNPMGxCUTJ4RExHVkJRV1VzUlVGQlJTeHpRa0ZCYzBJN1NVRkRka01zWjBKQlFXZENMRVZCUVVVc2RVSkJRWFZDTzBsQlEzcERMRkZCUVZFc1JVRkJSU3huUWtGQlowSTdTVUZETVVJc1QwRkJUeXhGUVVGRkxHVkJRV1U3U1VGRGVFSXNVMEZCVXl4RlFVRkZMR2xDUVVGcFFqdEpRVU0xUWl4WFFVRlhMRVZCUVVVc2JVSkJRVzFDTzBOQlEycERMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeGxRVUZsTEVkQlFUSkVPMGxCUTNKR0xGVkJRVlVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkROVUlzVFVGQlRTeEZRVUZGTEZsQlFWazdTVUZEY0VJc1dVRkJXU3hGUVVGRkxHdENRVUZyUWp0SlFVTm9ReXhuUWtGQlowSXNSVUZCUlN4eFFrRkJjVUk3U1VGRGRrTXNVVUZCVVN4RlFVRkZMR05CUVdNN1NVRkRlRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eGxRVUZsTEVWQlFVVXNiMEpCUVc5Q08wbEJRM0pETEdkQ1FVRm5RaXhGUVVGRkxIRkNRVUZ4UWp0SlFVTjJReXhSUVVGUkxFVkJRVVVzWTBGQll6dEpRVU40UWl4UFFVRlBMRVZCUVVVc1lVRkJZVHRKUVVOMFFpeFRRVUZUTEVWQlFVVXNaVUZCWlR0SlFVTXhRaXhYUVVGWExFVkJRVVVzYVVKQlFXbENPME5CUXk5Q0xFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4MVFrRkJkVUlzUjBGQlJ5eERRVUZETEZWQlFWVXNSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0QlFVVTVSaXhOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVNMVF5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RFFVRkRPMUZCUTFvc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRek5ETEU5QlFVOHNUVUZCVFN4SFFVRkhMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEyNURMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGRrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTNSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOeVJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFbEJRVWtzUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZEV2l4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eERRVUZETEVkQlFVY3NUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVNMVFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRmxCUVZrc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU51UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM1pFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zU1VGQlNTeExRVUZMTEVsQlFVa3NRMEZCUXp0UlFVTmFMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEyNURMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWTBGQll5eERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNKRUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE0wUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h0UWtGQmJVSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVNeFJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6VkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYVVKQlFXbENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZETEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOc1JpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2xDUVVGcFFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNoRUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpGRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaVUZCWlN4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM1JFTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4yUlN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHVkJRV1VzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTjBSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF6VkRMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UXl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTndSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXhSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEc5Q1FVRnZRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6TkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRelZETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRla1FzVDBGQlR5eDVRa0ZCZVVJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU12UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxITkNRVUZ6UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRemRFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTm9SQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeERRVUZETzFGQlEyaENMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1IwRkJSeXhUUVVGVExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdRVUZEYkVRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHZRa0ZCYjBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU16UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJwRkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNiMEpCUVc5Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZETTBRc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRia1FzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTldMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRkRUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4clFrRkJhMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTjZSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2RVSkJRWFZDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRPVVFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h4UWtGQmNVSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVNMVJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEyeEZMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGRrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU03VVVGRFppeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXpRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOeVJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6TkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEY0VRc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTnlRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVkQlFVY3NTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJRenRKUVVOc1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXp0UlFVRkZMRTlCUVU4c1IwRkJSeXhEUVVGRE96dFJRVU0xUXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhMUVVGTExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU40UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxIRkNRVUZ4UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRelZFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVVc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeDVRa0ZCZVVJc1EwRkJReXhSUVVGblFqdEpRVU40UkN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNRMEZCUXp0QlFVTTNRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhsQ1FVRjVRaXhEUVVGRExGVkJRV3RDTzBsQlF6RkVMRTlCUVU4c1EwRkJReXhIUVVGSExGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETlVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGakxFVkJRVVVzUTBGQlV5eEZRVUZGTEVsQlFYZERPMGxCUTJ4SExGTkJRVk1zUzBGQlN5eERRVUZETEUxQlFXZERMRVZCUVVVc1QwRkJPRUk3VVVGRE4wVXNTVUZCU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM0JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVWMFFpeExRVUZMTEUxQlFVMHNUMEZCVHl4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVNMVFpeE5RVUZOTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4VlFVRlZMRWxCUVVrc1NVRkJTU3hKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZWTEVWQlFVVTdaMEpCUTNKRUxGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdaMEpCUTI1Q0xGVkJRVlVzUjBGQlJ5eGpRVUZqTEVOQlFVTTdZVUZETjBJN1UwRkRSanRSUVVORUxFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlJUZENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEY2tJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMUZCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVFNFFpeEZRVU12UXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTenRaUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzU1VGQlNTeEhRVUZITEVWQlFVVTdXVUZEVUN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1MwRkRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuTGk5aWFYUXRZWEp5WVhrbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxSmJuUjlJR1p5YjIwZ0p5NHZjbUZ1Wkc5dEp6dGNibHh1Wlhod2IzSjBJR052Ym5OMElITnBiV2xzWVhKcGRIbE5aWFJ5YVdNNklIdGJibUZ0WlRvZ2MzUnlhVzVuWFRvZ0tIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrZ1BUNGdiblZ0WW1WeWZTQTlJSHRjYmlBZ0oxUmhibWx0YjNSdkp6b2dkR0Z1YVcxdmRHOVRhVzFwYkdGeWFYUjVMRnh1SUNBblJHbGpaU2M2SUdScFkyVlRhVzFwYkdGeWFYUjVMRnh1SUNBblFYTjViVzFsZEhKcFl5YzZJR0Z6ZVcxdFpYUnlhV05UYVcxcGJHRnlhWFI1TEZ4dUlDQW5RbkpoZFc0dFFteGhibkYxWlhRbk9pQmljbUYxYmtKc1lXNXhkV1YwVTJsdGFXeGhjbWwwZVN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTGRXeGplbmx1YzJ0cEp6b2dhM1ZzWTNwNWJuTnJhVk5wYldsc1lYSnBkSGtzWEc0Z0lDZE5ZeTFEYjI1dVlYVm5hR1Y1SnpvZ2JXTkRiMjV1WVhWbmFHVjVVMmx0YVd4aGNtbDBlU3hjYmlBZ0oxSnZaMjkwTFVkdmJHUmlaWEpuSnpvZ2NtOW5iM1JIYjJ4a1ltVnlaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZFNkWE56Wld3bk9pQnlkWE56Wld4VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuVTI5cllXd25PaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa3NYRzRnSUNkSVlXMXRhVzVuSnpvZ2FHRnRiV2x1WjFOcGJXbHNZWEpwZEhrc1hHNGdJQ2RGZFdOc2FXUmxZVzRuT2lCbGRXTnNhV1JsWVc1VGFXMXBiR0Z5YVhSNUxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR1JwYzNSaGJtTmxUV1YwY21samN6b2dlMXR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtTQTlQaUJ1ZFcxaVpYSjlJRDBnZTF4dUlDQW5WR0Z1YVcxdmRHOG5PaUIwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNBblJHbGpaU2M2SUdScFkyVkVhWE4wWVc1alpTeGNiaUFnSjBGemVXMXRaWFJ5YVdNbk9pQmhjM2x0YldWMGNtbGpSR2x6ZEdGdVkyVXNYRzRnSUNkQ2NtRjFiaTFDYkdGdWNYVmxkQ2M2SUdKeVlYVnVRbXhoYm5GMVpYUkVhWE4wWVc1alpTeGNiaUFnSjBOdmMybHVaU2M2SUdOdmMybHVaVVJwYzNSaGJtTmxMRnh1SUNBblMzVnNZM3A1Ym5OcmFTYzZJR3QxYkdONmVXNXphMmxFYVhOMFlXNWpaU3hjYmlBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCdFkwTnZibTVoZFdkb1pYbEVhWE4wWVc1alpTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVowUnBjM1JoYm1ObExGeHVJQ0FuVW5WemMyVnNKem9nY25WemMyVnNSR2x6ZEdGdVkyVXNYRzRnSUNkVGIydGhiQ2M2SUhOdmEyRnNSR2x6ZEdGdVkyVXNYRzRnSUNkSVlXMXRhVzVuSnpvZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQW5SWFZqYkdsa1pXRnVKem9nWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVzWEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1EwaEZUVjlUU1UxSlRFRlNTVlJaWDAxRlZGSkpRMU1nUFNCYkoxUmhibWx0YjNSdkp5d2dKMFJwWTJVbkxDQW5RMjl6YVc1bEp5d2dKMGhoYlcxcGJtY25MQ0FuUlhWamJHbGtaV0Z1SjEwN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjBZVzVwYlc5MGIxTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ2FXWWdLSFJ2ZEdGc0lEMDlJREFwWEc0Z0lDQWdjbVYwZFhKdUlERXVNRHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tIUnZkR0ZzSUMwZ1kyOXRiVzl1S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJoYm1sdGIzUnZSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29kR0Z1YVcxdmRHOVRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdScFkyVlRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcklIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlESWdLaUJqYjIxdGIyNGdMeUIwYjNSaGJEdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdScFkyVkVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaGthV05sVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpiM05wYm1WVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUUxaGRHZ3VjM0Z5ZENoMGIzUmhiQ2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpiM05wYm1WRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHVjFZMnhwWkdWaGJsTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEZOcGJXbHNZWEpwZEhsR2NtOXRSR2x6ZEdGdVkyVW9aWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tTQXRJRElxZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2hoYlcxcGJtZFRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSVGFXMXBiR0Z5YVhSNVJuSnZiVVJwYzNSaGJtTmxLR2hoYlcxcGJtZEVhWE4wWVc1alpTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJvWVcxdGFXNW5SR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJSGd1ZEhKMVpVTnZkVzUwS0NrZ0t5QjVMblJ5ZFdWRGIzVnVkQ2dwSUMwZ01pcDRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCemIydGhiRk5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdZMjl1YzNRZ1kyOXRiVzl1SUQwZ2VDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcE8xeHVJQ0J5WlhSMWNtNGdZMjl0Ylc5dUlDOGdLRElnS2lCMGIzUmhiQ0F0SURNZ0tpQmpiMjF0YjI0cE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzI5cllXeEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHpiMnRoYkZOcGJXbHNZWEpwZEhrb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhM1ZzWTNwNWJuTnJhVk5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdZMjl1YzNRZ2RHOTBZV3hRY205a0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcUlIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJGQnliMlFnUFQwZ01DbGNiaUFnSUNCeVpYUjFjbTRnTUM0d08xeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUhKbGRIVnliaUFvWTI5dGJXOXVJQ29nZEc5MFlXd3BJQzhnS0RJZ0tpQjBiM1JoYkZCeWIyUXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFVUnBjM1JoYm1ObEtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtHdDFiR042ZVc1emEybFRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUcxalEyOXVibUYxWjJobGVWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3Z0xTQjBiM1JoYkZCeWIyUXBJQzhnZEc5MFlXeFFjbTlrTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdiV05EYjI1dVlYVm5hR1Y1UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJoYzNsdGJXVjBjbWxqVTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCdGFXNGdQU0JOWVhSb0xtMXBiaWg0TG5SeWRXVkRiM1Z1ZENncExDQjVMblJ5ZFdWRGIzVnVkQ2dwS1R0Y2JpQWdhV1lnS0cxcGJpQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklHMXBianRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRnplVzF0WlhSeWFXTkVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaGhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0WVhnZ1BTQk5ZWFJvTG0xaGVDaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFoZUNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxaGVEdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdKeVlYVnVRbXhoYm5GMVpYUkVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaGljbUYxYmtKc1lXNXhkV1YwVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnlkWE56Wld4VGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR2xtSUNoNExteGxibWQwYUNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUhndWJHVnVaM1JvTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjblZ6YzJWc1JHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2NuVnpjMlZzVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNWpiM1Z1ZEVKcGRITW9kSEoxWlNrZ0t5QjVMbU52ZFc1MFFtbDBjeWgwY25WbEtUdGNiaUFnWTI5dWMzUWdiR1Z1SUQwZ2VDNXNaVzVuZEdnN1hHNGdJR052Ym5OMElHUnBabVlnUFNCc1pXNGdMU0IwYjNSaGJDQXJJR052YlcxdmJqdGNiaUFnYVdZZ0tDaGpiMjF0YjI0Z1BUMGdiR1Z1S1NCOGZDQW9aR2xtWmlBOVBTQnNaVzRwS1NCeVpYUjFjbTRnTVM0d08xeHVJQ0JsYkhObElISmxkSFZ5YmlCamIyMXRiMjRnTHlCMGIzUmhiQ0FySUdScFptWWdMeUFvTWlBcUlHeGxiaUF0SUhSdmRHRnNLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2h5YjJkdmRFZHZiR1JpWlhKblUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuWlhSVGFXMXBiR0Z5YVhSNVJuSnZiVVJwYzNSaGJtTmxLR1JwYzNSaGJtTmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ2NtVjBkWEp1SURFZ0x5QW9JREVnS3lCa2FYTjBZVzVqWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLSE5wYldsc1lYSnBkSGs2SUc1MWJXSmxjaWtnZTF4dUlDQnlaWFIxY200Z01TQXZJSE5wYldsc1lYSnBkSGtnTFNBeE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtTQjdYRzRnSUdaMWJtTjBhVzl1SUcxaGVFSjVLSFpoYkhWbGN6b2dTWFJsY21GaWJHVkpkR1Z5WVhSdmNqeHVkVzFpWlhJK0xDQnZjbVJsY2tKNU9pQW9hVG9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWElwSUh0Y2JpQWdJQ0JzWlhRZ2JXRjRWbUZzZFdVZ1BTQnVkV3hzTzF4dUlDQWdJR3hsZENCdFlYaFBjbVJsY2tKNUlEMGdiblZzYkR0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1pXeGxiV1Z1ZENCdlppQjJZV3gxWlhNcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdWc1pXMWxiblJQY21SbGNrSjVJRDBnYjNKa1pYSkNlU2hsYkdWdFpXNTBLVHRjYmlBZ0lDQWdJR2xtSUNodFlYaFBjbVJsY2tKNUlEMDlJRzUxYkd3Z2ZId2daV3hsYldWdWRFOXlaR1Z5UW5rZ1BpQnRZWGhQY21SbGNrSjVLU0I3WEc0Z0lDQWdJQ0FnSUcxaGVGWmhiSFZsSUQwZ1pXeGxiV1Z1ZER0Y2JpQWdJQ0FnSUNBZ2JXRjRUM0prWlhKQ2VTQTlJR1ZzWlcxbGJuUlBjbVJsY2tKNU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiV0Y0Vm1Gc2RXVTdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnpkV0p6WlhRZ1BTQmJjbUZ1Wkc5dFNXNTBLR3hsYm1kMGFDQXRJREVwWFR0Y2JpQWdZMjl1YzNRZ1kyOXRjR3hsYldWdWRDQTlJRzVsZHlCVFpYUW9LVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR3hsYm1kMGFEc2dLeXRwS1NCN1hHNGdJQ0FnYVdZZ0tDRnpkV0p6WlhRdWFXNWpiSFZrWlhNb2FTa3BYRzRnSUNBZ0lDQmpiMjF3YkdWdFpXNTBMbUZrWkNocEtUdGNiaUFnZlZ4dVhHNGdJSGRvYVd4bElDaHpkV0p6WlhRdWJHVnVaM1JvSUR3Z2Jpa2dlMXh1SUNBZ0lHTnZibk4wSUdsa2VDQTlJRzFoZUVKNUtGeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNTJZV3gxWlhNb0tTQmhjeUJKZEdWeVlXSnNaVWwwWlhKaGRHOXlQRzUxYldKbGNqNHNYRzRnSUNBZ0lDQW9hU2tnUFQ0Z1RXRjBhQzV0YVc0dVlYQndiSGtvVFdGMGFDd2djM1ZpYzJWMExtMWhjQ2htZFc1amRHbHZiaWgyWVd3c0lHbHVaR1Y0S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2FYTjBLR2tzSUhaaGJDazdYRzRnSUNBZ0lDQjlLU2twTzF4dUlDQWdJR2xtSUNocFpIZ3BJSHRjYmlBZ0lDQWdJSE4xWW5ObGRDNXdkWE5vS0dsa2VDazdYRzRnSUNBZ0lDQmpiMjF3YkdWdFpXNTBMbVJsYkdWMFpTaHBaSGdwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdjM1ZpYzJWME8xeHVmVnh1SWwxOSIsIi8qKlxuICogRGVub3RlcyBhIHZlY3RvciBvZiBmbG9hdGluZyBwb2l0IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yXG4gKiBAZXh0ZW5kcyB7RmxvYXQzMkFycmF5fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9yIGV4dGVuZHMgRmxvYXQzMkFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBhIHR3by1kaW1lbnNpb25hbCBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE1hdHJpeFxuICogQGV4dGVuZHMge0FycmF5PFZlY3Rvcj59XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgY2FydGVzaWFuIGNvb3JkaW5hdGVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb29yZGluYXRlc1xuICogQGV4dGVuZHMge01hdHJpeH1cbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGVzIGV4dGVuZHMgTWF0cml4IHtcbn1cbi8qKlxuICogRGVub3RlcyBhbiBhcnJheSBvZiBhcmJpdHJhcnktdHlwZWQgdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yc1xuICogQGV4dGVuZHMge0FycmF5PGFueT59XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3JzIGV4dGVuZHMgQXJyYXkge1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pTMWtaV05zWVhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEZsQlFWazdRMEZCUnp0QlFVVXpRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRXRCUVdFN1EwRkJSenRCUVVVMVF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1YwRkJXU3hUUVVGUkxFMUJRVTA3UTBGQlJ6dEJRVVV4UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEV0QlFWVTdRMEZCUnlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5QndiMmwwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVm1WamRHOXlYRzRnS2lCQVpYaDBaVzVrY3lCN1JteHZZWFF6TWtGeWNtRjVmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1WamRHOXlJR1Y0ZEdWdVpITWdSbXh2WVhRek1rRnljbUY1SUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFMWhkSEpwZUZ4dUlDb2dRR1Y0ZEdWdVpITWdlMEZ5Y21GNVBGWmxZM1J2Y2o1OVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5ZWFJ5YVhnZ1pYaDBaVzVrY3lCQmNuSmhlVHhXWldOMGIzSStJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCallYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpYTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRU52YjNKa2FXNWhkR1Z6WEc0Z0tpQkFaWGgwWlc1a2N5QjdUV0YwY21sNGZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRMjl2Y21ScGJtRjBaWE1nWlhoMFpXNWtjeUJOWVhSeWFYZ2dlMzFjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdGdUlHRnljbUY1SUc5bUlHRnlZbWwwY21GeWVTMTBlWEJsWkNCMlpXTjBiM0p6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCV1pXTjBiM0p6WEc0Z0tpQkFaWGgwWlc1a2N5QjdRWEp5WVhrOFlXNTVQbjFjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZabFkzUnZjbk1nWlhoMFpXNWtjeUJCY25KaGVUeGhibmsrSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJR1JwWTNScGIyNWhjbmtnWTI5dWRHRnBibWx1WnlCbWRXNWpkR2x2YmlCdmNIUnBiMjV6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQjBlWEJsSUU5d2RHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVDNCMGFXOXVjeUE5SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nWVc1NWZUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR04xYzNSdmJTQmthWE4wWVc1alpTQnRaWFJ5YVdNZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUdkcGRtVnVJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhSNWNHVWdSR2x6ZEdGdVkyVk5aWFJ5YVdOY2JpQXFJRUJ3WVhKaGJTQjdZVzU1ZlNCMk1TQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWXlJRlJvWlNCelpXTnZibVFnZG1WamRHOXlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCRWFYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pYTmxJSFIzYnlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdkSGx3WlNCRWFYTjBZVzVqWlUxbGRISnBZeUE5SUNoMk1Ub2dZVzU1TENCMk1qb2dZVzU1S1NBOVBpQW9iblZ0WW1WeUtUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0VnYzJsdGNHeGxJSE4wY21sdVp5QjBieUJ6ZEhKcGJtY2daR2xqZEdsdmJtRnllUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWRIbHdaU0JUZEhKcGJtZEVhV04wYVc5dVlYSjVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3VzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1bmZUdGNiaUpkZlE9PSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5mdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgZmlsbCA9IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGRpbWVuc2lvbjEpLmZpbGwoZmlsbCkubWFwKCgpID0+IChuZXcgVmVjdG9yKGRpbWVuc2lvbjIpLmZpbGwoZmlsbCkpKTtcbn1cbi8qKlxuICogVHJhbnNwb3NlIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4IFRoZSBtYXRyaXggdG8gYmUgdHJhbnNwb3NlZC5cbiAqIEByZXR1cm4ge01hdHJpeH0gVHJhbnNwb3NlZCBtYXRyaXguXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZU1hdHJpeChtYXRyaXgpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gKG5ldyBWZWN0b3IobWF0cml4Lmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGopID0+IChtYXRyaXhbal1baV0pKSkpO1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWN0b3JzIHdpdGggdGhlIHNlY29uZCBvbmUgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZ2l2ZW4gcmF0aW8uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge251bWJlcn0gW211bHRpcGxpZXI9MV0gQSBtdWx0aXBsaWVyIHRvIGJlIHVzZWQgYmVmb3JlIHRoZSBzZWNvbmQgdmVjdG9yIGlzIGFkZGVkLlxuICogQHJldHVybiB7VmVjdG9yfSBOZXcgdmVjdG9yIGNvbnRhaW5lZCB0aGUgcmVzdWx0IG9mIG9wZXJhdGlvbiBwK211bHRpcGxpZXIqcS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckFkZChwLCBxLCBtdWx0aXBsaWVyID0gMSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IHAubGVuZ3RoO1xuICAgIGFzc2VydChuSXRlbXMgPT0gcS5sZW5ndGgsICdWZWN0b3IgbGVuZ3RocyBkbyBub3QgbWF0Y2guJyk7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1bXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gYmUgc3VtbWVkLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVjdG9yJ3MgaXRlbXMgc3VtLlxuICovXG5mdW5jdGlvbiBpdGVtc1N1bSh2KSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsICs9IHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdXFhcmVzIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIHNxdWFyZS5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gQSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsJ3MgaXRlbXMgc3F1YXJlZC5cbiAqL1xuZnVuY3Rpb24gdmVjdG9yU3F1YXJlKHYpIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2Lmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2KSB7XG4gICAgbGV0IHNxclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKVxuICAgICAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIE1hdGguc3FydChzcXJTdW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjEsIHYyKSB7XG4gICAgaWYgKHYxLmxlbmd0aCAhPSB2Mi5sZW5ndGgpXG4gICAgICAgIHRocm93IEVycm9yKCdUaGUgZGltZW5zaW9uYWxpdHkgb2YgdGhlIHZlY3RvcnMgbXVzdCBtYXRjaCcpO1xuICAgIGxldCBwcm9kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYxLmxlbmd0aDsgaSsrKVxuICAgICAgICBwcm9kICs9IHYxW2ldICogdjJbaV07XG4gICAgcmV0dXJuIHByb2Q7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IFtzY2FsZT0xLl0gTWF4IHZhbHVlIGdpdmVuIGJ5IHJhbmRvbSBnZW5lcmF0b3IuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IEEgbmV3IG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSYW5kb21NYXRyaXgoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgc2NhbGUgPSAxLikge1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbjE7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRpbWVuc2lvbjI7ICsrailcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IHJhbmRvbUZsb2F0KHNjYWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiB2ZWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UocCwgcSkge1xuICAgIGNvbnN0IGRpZmYgPSB2ZWN0b3JBZGQocCwgcSwgLTEpO1xuICAgIGNvbnN0IHNxZGlmZiA9IHZlY3RvclNxdWFyZShkaWZmKTtcbiAgICBjb25zdCBzcWRpZmZTdW1tID0gaXRlbXNTdW0oc3FkaWZmKTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxZGlmZlN1bW0pO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZGlzdGFuY2UgbWF0cml4IHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yc30gZGF0YSBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMuXG4gKiBAcGFyYW0ge0Rpc3RhbmNlTWV0cmljfSBkaXN0YW5jZSBDdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtNYXRyaXh9IENhbGN1bGF0ZWQgY3VzdG9tIGRpc3RhbmNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNEaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgY29uc3QgZCA9IChkYXRhW2ldID09IG51bGwpIHx8IChkYXRhW2pdID09IG51bGwpID8gMCA6IGRpc3RhbmNlKGRhdGFbaV0sIGRhdGFbal0pO1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqIEdlbmVyYXRlcyBhcnJheSBmcm9tIGEgcmFuZ2UgW2JlZ2luOyBlbmRdIG9yIFtiZWdpbjsgZW5kKSBpZiBlbmRFeGNsdXNpdmUuICoqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlblJhbmdlKGJlZ2luLCBlbmQsIGVuZEV4Y2x1c2l2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZW5kIC0gYmVnaW4gKyAoZW5kRXhjbHVzaXZlID8gMCA6IDEpO1xuICAgIGNvbnN0IHNlcmllcyA9IG5ldyBJbnQzMkFycmF5KG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSlcbiAgICAgICAgc2VyaWVzW2ldID0gYmVnaW4gKyBpO1xuICAgIHJldHVybiBzZXJpZXM7XG59XG4vKipcbiogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuKlxuKiBAZXhwb3J0XG4qIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4qIEByZXR1cm4ge251bWJlcltdfSBUaGUgb3JkZXIgY29tcHV0ZWQuXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGEsIGIpID0+IChiWzBdIC0gYVswXSkgOiAoYSwgYikgPT4gKGFbMF0gLSBiWzBdKTtcbiAgICBjb25zdCBkZWNvciA9ICh2LCBpKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICAgIGNvbnN0IHVuZGVjb3IgPSAoYSkgPT4gYVsxXTsgLy8gbGVhdmUgb25seSBpbmRleFxuICAgIGNvbnN0IF9hcmdzb3J0ID0gKGFycikgPT4gYXJyLm1hcChkZWNvcikuc29ydChzb3J0Zm4pLm1hcCh1bmRlY29yKTtcbiAgICByZXR1cm4gX2FyZ3NvcnQodmFsdWVzKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHMgYWNjb3JkaW5nIHRvIHRoZSBkaXN0IGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIHRvdGFsIG51bWJlciBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgZGl2ZXJzZSBlbGVtZW50cyB0byBmaW5kXG4gKiBAcGFyYW0geyhpMTogbnVtYmVyLCBpMjogbnVtYmVyKSA9PiBudW1iZXJ9IGRpc3QgYSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gb2JqZWN0cyB1c2luZyB0aGVpciBpbmRleGVzXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIG5vcm1hbGl6ZWQgdmVjdG9yXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gZGF0YSBudW1lcmljYWwgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgbGV0IG1lYW4gPSAwO1xuICAgIGxldCBzdGQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgbWVhbiArPSBkYXRhW2ldO1xuICAgIG1lYW4gLz0gZGF0YS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBzdGQgKz0gKGRhdGFbaV0gLSBtZWFuKSAqIChkYXRhW2ldIC0gbWVhbik7XG4gICAgc3RkID0gTWF0aC5zcXJ0KHN0ZCAvIGRhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pIC8gc3RkO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhLCBiKSB7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhLmZpbHRlcigoeCkgPT4gIWJTZXQuaGFzKHgpKSkudmFsdWVzKCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WamRHOXlMVzl3WlhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjJaV04wYjNJdGIzQmxjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVZNc1RVRkJUU3hGUVVGMVF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM3BHTEU5QlFVOHNSVUZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJXaEVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRmxCUVhGQ0xFdEJRVXNzUlVGQlJTeFZRVUZyUWl4clFrRkJhMEk3U1VGRGNrWXNTVUZCU1N4RFFVRkRMRk5CUVZNN1VVRkRXaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxGTkJRVk1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1ZVRkJhMElzUlVGQlJTeFBRVUZsTEVOQlFVTTdTVUZETDBVc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42Uml4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUVVNc1RVRkJZenRKUVVNMVF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1pETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkdMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4aFFVRnhRaXhEUVVGRE8wbEJRM0JGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmVFSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTERoQ1FVRTRRaXhEUVVGRExFTkJRVU03U1VGRk0wUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRk5CUVZNc1VVRkJVU3hEUVVGRExFTkJRVk03U1VGRGVrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSV1FzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZhRUlzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hUUVVGVExGbEJRVmtzUTBGQlF5eERRVUZUTzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZUVJc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhwQ0xFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUTBGQlV6dEpRVU53UXl4SlFVRkpMRTFCUVUwc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM1pETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRlZPMGxCUTNKRUxFbEJRVWtzUlVGQlJTeERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUVHRSUVVONFFpeE5RVUZOTEV0QlFVc3NRMEZCUXl3NFEwRkJPRU1zUTBGQlF5eERRVUZETzBsQlF6bEVMRWxCUVVrc1NVRkJTU3hIUVVGWExFTkJRVU1zUTBGQlF6dEpRVU55UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGWExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGVFTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRlRUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdRVUZEWkN4RFFVRkRPMEZCUlVRN096czdPenM3TzBkQlVVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNWVUZCYTBJc1JVRkJSU3hWUVVGclFpeEZRVUZGTEZGQlFXZENMRVZCUVVVN1NVRkRla1lzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRlZCUVZVc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dEpRVVYyUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRMjVETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRPMWxCUTJwRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhYUVVGWExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEY2tNN1NVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN3d1FrRkJNRUlzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXp0SlFVTTNSQ3hOUVVGTkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTnNReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRjRU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJReTlDTEVOQlFVTTdRVUZGUkRzN096czdPenRIUVU5SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEd0Q1FVRnJRaXhEUVVGRExFbEJRV0VzUlVGQlJTeFJRVUYzUWp0SlFVTjRSU3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJXeEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJrTXNUVUZCVFN4RFFVRkRMRWRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVNeFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU5xUXp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVMR3RHUVVGclJqdEJRVU5zUml4TlFVRk5MRlZCUVZVc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNXVUZCV1N4SFFVRkhMRXRCUVVzN1NVRkRka1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4SFFVRkhMRXRCUVVzc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVVjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVjRRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVFN096czdPenM3UlVGUFJUdEJRVU5JTEUxQlFVMHNWVUZCVlN4UFFVRlBMRU5CUVVNc1RVRkJZU3hGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlJ5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVUwc1JVRkJSU3hEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zY1VKQlFYRkNPMGxCUTJ4RkxFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4dFFrRkJiVUk3U1VGRGRrUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1EwRkJReXhIUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU14UlN4UFFVRlBMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU14UWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPMGRCUjBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVTBGQlV5eERRVUZETEVsQlFWazdTVUZEY0VNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEySXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSVm9zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZjRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUTJ4RExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVVUzUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSVzVETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVOc1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRE8wbEJSVzVETEU5QlFVOHNTVUZCU1N4RFFVRkRPMEZCUTJRc1EwRkJRenRCUVVWRU96czdPenRIUVV0SE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVVHRKUVVNNVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM0pGTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMDFoZEhKcGVDd2dWbVZqZEc5eUxDQkRiMjl5WkdsdVlYUmxjeXdnVm1WamRHOXljeXdnUkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0p5NHZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUdiRzloZEN3Z2NtRnVaRzl0U1c1MGZTQm1jbTl0SUNjdUwzSmhibVJ2YlNjN1hHNWNiaThxS2x4dUlDb2dRWE56WlhKMGN5QmhJR052Ym1ScGRHbHZiaUJpZVNCMGFISnZkMmx1WnlCaGJpQkZjbkp2Y2k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UySnZiMnhsWVc1OUlGdGpiMjVrYVhScGIyNDlabUZzYzJWZElFTnZibVJwZEdsdmJpQjBieUJoYzNObGNuUXVYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnVzIxbGMzTmhaMlU5SjBGemMyVnlkR2x2YmlCbGNuSnZjaTRuWFNCTlpYTnpZV2RsSUhSdklHOTFkSEIxZEM1Y2JpQXFJRUIwYUhKdmQzTWdlMFZ5Y205eWZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhOelpYSjBLR052Ym1ScGRHbHZiam9nWW05dmJHVmhiaUE5SUdaaGJITmxMQ0J0WlhOellXZGxPaUJ6ZEhKcGJtY2dQU0FuUVhOelpYSjBhVzl1SUdWeWNtOXlMaWNwSUh0Y2JpQWdhV1lnS0NGamIyNWthWFJwYjI0cFhHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRzFsYzNOaFoyVXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ2JtVjNJSFIzYnkxa2FXMWxibk5wYjI1aGJDQmhjbkpoZVNCaGJtUWdabWxzYkhNZ2FYUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiakVnVkdobElHWnBjbk4wSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnWTI5dmNtUnBibUYwWlhNZ0tHNTFiV0psY2lCdlppQnliM2R6S1M1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmthVzFsYm5OcGIyNHlJRlJvWlNCelpXTnZibVFnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0JqYjI5eVpHbHVZWFJsY3lBb2JuVnRZbVZ5SUc5bUlHTnZiSFZ0Ym5NcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnRtYVd4c1BUQmRJRUVnZG1Gc2RXVWdkRzhnWm1sc2JDQjBhR1VnWTI5dmNtUnBibUYwWlhNZ2QybDBhQzVjYmlBcUlFQnlaWFIxY200Z2UwTnZiM0prYVc1aGRHVnpmU0JCSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JtYVd4c1pXUWdkMmwwYUNCMGFHVWdkbUZzZFdVZ1oybDJaVzR1WEc0Z0tpQkFkRzlrYnlCTmFXZG9kQ0JpWlNCemJHOTNJSE5wYm1ObElIVnpaV1FnUVhKeVlYa3ViV0Z3TGlCUWNtOWlZV0pzZVNCdVpXVmtjeUJ3WlhKbWIzSnRZVzVqWlNCeVpYWnBjMmx2Ymk1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVc1cGRFTnZiM0prYVc1aGRHVnpLR1JwYldWdWMybHZiakU2SUc1MWJXSmxjaXdnWkdsdFpXNXphVzl1TWpvZ2JuVnRZbVZ5TENCbWFXeHNPaUJ1ZFcxaVpYSWdQU0F3S1RvZ1EyOXZjbVJwYm1GMFpYTWdlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0dScGJXVnVjMmx2YmpFcExtWnBiR3dvWm1sc2JDa3ViV0Z3S0NncElEMCtJQ2h1WlhjZ1ZtVmpkRzl5S0dScGJXVnVjMmx2YmpJcExtWnBiR3dvWm1sc2JDa3BLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQlVjbUZ1YzNCdmMyVWdiV0YwY21sNExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdUV0YwY21sNGZTQnRZWFJ5YVhnZ1ZHaGxJRzFoZEhKcGVDQjBieUJpWlNCMGNtRnVjM0J2YzJWa0xseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JVY21GdWMzQnZjMlZrSUcxaGRISnBlQzVjYmlBcUlFQjBiMlJ2SUUxcFoyaDBJR0psSUhOc2IzY2djMmx1WTJVZ2RYTmxaQ0JCY25KaGVTNXRZWEF1SUZCeWIySmhZbXg1SUc1bFpXUnpJSEJsY21admNtMWhibU5sSUhKbGRtbHphVzl1TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkSEpoYm5Od2IzTmxUV0YwY21sNEtHMWhkSEpwZURvZ1RXRjBjbWw0S1RvZ1RXRjBjbWw0SUh0Y2JpQWdjbVYwZFhKdUlHNWxkeUJCY25KaGVTaHRZWFJ5YVhoYk1GMHViR1Z1WjNSb0tTNW1hV3hzS0RBcFhHNGdJQ0FnTG0xaGNDZ29YeXdnYVNrZ1BUNGdLRzVsZHlCV1pXTjBiM0lvYldGMGNtbDRMbXhsYm1kMGFDa3VabWxzYkNnd0tTNXRZWEFvS0Y4c0lHb3BJRDArSUNodFlYUnlhWGhiYWwxYmFWMHBLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRUZrWkhNZ2RIZHZJSFpsWTNSdmNuTWdkMmwwYUNCMGFHVWdjMlZqYjI1a0lHOXVaU0IwYnlCaVpTQnRkV3gwYVhCc2FXVmtJR0o1SUhSb1pTQm5hWFpsYmlCeVlYUnBieTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCeElGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQmJiWFZzZEdsd2JHbGxjajB4WFNCQklHMTFiSFJwY0d4cFpYSWdkRzhnWW1VZ2RYTmxaQ0JpWldadmNtVWdkR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdhWE1nWVdSa1pXUXVYRzRnS2lCQWNtVjBkWEp1SUh0V1pXTjBiM0o5SUU1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1Wa0lIUm9aU0J5WlhOMWJIUWdiMllnYjNCbGNtRjBhVzl1SUhBcmJYVnNkR2x3YkdsbGNpcHhMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RtVmpkRzl5UVdSa0tIQTZJRlpsWTNSdmNpd2djVG9nVm1WamRHOXlMQ0J0ZFd4MGFYQnNhV1Z5T2lCdWRXMWlaWElnUFNBeEtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdjQzVzWlc1bmRHZzdYRzVjYmlBZ1lYTnpaWEowS0c1SmRHVnRjeUE5UFNCeExteGxibWQwYUN3Z0oxWmxZM1J2Y2lCc1pXNW5kR2h6SUdSdklHNXZkQ0J0WVhSamFDNG5LVHRjYmx4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhBdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQndXMmxkSUNzZ2JYVnNkR2x3YkdsbGNpQXFJSEZiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWJYTWdkR2hsSUhabFkzUnZjaWR6SUdsMFpXMXpMbHh1SUNwY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQjJJRlJvWlNCMlpXTjBiM0lnZEc4Z1ltVWdjM1Z0YldWa0xseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JVYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE1nYzNWdExseHVJQ292WEc1bWRXNWpkR2x2YmlCcGRHVnRjMU4xYlNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2RHOTBZV3dnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkNBclBTQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1THlvcVhHNGdLaUJUZFhGaGNtVnpJSFJvWlNCMlpXTjBiM0luY3lCcGRHVnRjeTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdkaUJVYUdVZ2RtVmpkRzl5SUhSdklITnhkV0Z5WlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdRU0J1WlhjZ2RtVmpkRzl5SUdOdmJuUmhhVzVwYm1jZ2RHaGxJRzl5YVdkcGJtRnNKM01nYVhSbGJYTWdjM0YxWVhKbFpDNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2RtVmpkRzl5VTNGMVlYSmxLSFk2SUZabFkzUnZjaWs2SUZabFkzUnZjaUI3WEc0Z0lHTnZibk4wSUc1SmRHVnRjeUE5SUhZdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCMGIzUmhiQ0E5SUc1bGR5QldaV04wYjNJb2JrbDBaVzF6S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2RHOTBZV3hiYVYwZ1BTQjJXMmxkSUNvZ2RsdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKTVpXNW5kR2dvZGpvZ1ZtVmpkRzl5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdiR1YwSUhOeGNsTjFiVG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdabTl5SUNoc1pYUWdhVG9nYm5WdFltVnlJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnYzNGeVUzVnRJQ3M5SUhaYmFWMGdLaUIyVzJsZE8xeHVJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE54Y2xOMWJTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pFYjNSUWNtOWtkV04wS0hZeE9pQldaV04wYjNJc0lIWXlPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCcFppQW9kakV1YkdWdVozUm9JQ0U5SUhZeUxteGxibWQwYUNsY2JpQWdJQ0IwYUhKdmR5QkZjbkp2Y2lnblZHaGxJR1JwYldWdWMybHZibUZzYVhSNUlHOW1JSFJvWlNCMlpXTjBiM0p6SUcxMWMzUWdiV0YwWTJnbktUdGNiaUFnYkdWMElIQnliMlE2SUc1MWJXSmxjaUE5SURBN1hHNGdJR1p2Y2lBb2JHVjBJR2s2SUc1MWJXSmxjaUE5SURBN0lHa2dQQ0IyTVM1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCd2NtOWtJQ3M5SUhZeFcybGRJQ29nZGpKYmFWMDdYRzRnSUhKbGRIVnliaUJ3Y205a08xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNU0JVYUdVZ1ptbHljM1FnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0J0WVhSeWFYZ3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TWlCVWFHVWdjMlZqYjI1a0lHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHpZMkZzWlQweExsMGdUV0Y0SUhaaGJIVmxJR2RwZG1WdUlHSjVJSEpoYm1SdmJTQm5aVzVsY21GMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVFZ2JtVjNJRzFoZEhKcGVDQm1hV3hzWldRZ2QybDBhQ0J5WVc1a2IyMGdabXh2WVhScGJtY2djRzlwYm5RZ0lIWmhiSFZsY3k1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ29aR2x0Wlc1emFXOXVNVG9nYm5WdFltVnlMQ0JrYVcxbGJuTnBiMjR5T2lCdWRXMWlaWElzSUhOallXeGxPaUJ1ZFcxaVpYSWdQU0F4TGlrNklFMWhkSEpwZUNCN1hHNGdJR052Ym5OMElHMWhkSEpwZUNBOUlHbHVhWFJEYjI5eVpHbHVZWFJsY3loa2FXMWxibk5wYjI0eExDQmthVzFsYm5OcGIyNHlLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYldWdWMybHZiakU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2daR2x0Wlc1emFXOXVNanNnS3l0cUtWeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnY21GdVpHOXRSbXh2WVhRb2MyTmhiR1VwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0WVhSeWFYZzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyRnNZM1ZzWVhSbGN5QkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBkMjhnZG1WamRHOXljeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pTQm5hWFpsYmlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCa2FXWm1JRDBnZG1WamRHOXlRV1JrS0hBc0lIRXNJQzB4S1R0Y2JpQWdZMjl1YzNRZ2MzRmthV1ptSUQwZ2RtVmpkRzl5VTNGMVlYSmxLR1JwWm1ZcE8xeHVJQ0JqYjI1emRDQnpjV1JwWm1aVGRXMXRJRDBnYVhSbGJYTlRkVzBvYzNGa2FXWm1LVHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoemNXUnBabVpUZFcxdEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhWemFXNW5JR0VnWTNWemRHOXRJR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnWkdGMFlTQkpibkIxZENCMlpXTjBiM0p6SUhSdklHTmhiR04xYkdGMFpTQmthWE4wWVc1alpYTXVYRzRnS2lCQWNHRnlZVzBnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JrYVhOMFlXNWpaU0JEZFhOMGIyMGdaR2x6ZEdGdVkyVWdablZ1WTNScGIyNHVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVOaGJHTjFiR0YwWldRZ1kzVnpkRzl0SUdScGMzUmhibU5sSUcxaGRISnBlQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhiR05FYVhOMFlXNWpaVTFoZEhKcGVDaGtZWFJoT2lCV1pXTjBiM0p6TENCa2FYTjBZVzVqWlRvZ1JHbHpkR0Z1WTJWTlpYUnlhV01wT2lCTllYUnlhWGdnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCa1lYUmhMbXhsYm1kMGFEdGNiaUFnWTI5dWMzUWdiV0YwY21sNElEMGdhVzVwZEVOdmIzSmthVzVoZEdWektHNUpkR1Z0Y3l3Z2JrbDBaVzF6TENBd0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNUpkR1Z0Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z2JrbDBaVzF6T3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHUTZJRzUxYldKbGNpQTlJQ2hrWVhSaFcybGRJRDA5SUc1MWJHd3BJSHg4SUNoa1lYUmhXMnBkSUQwOUlHNTFiR3dwSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVJQzhxS2x4dUlDb2dVbVYwZFhKdWN5QnZjbVJsY2lCdlppQjJZV3gxWlhNZ1lYTWdhV1lnZEdobGVTQmhjbVVnYzI5eWRHVmtMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJSFpoYkhWbGN5QkpibkIxZENCaGNuSmhlUzVjYmlBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ1czSmxkbVZ5YzJVOVptRnNjMlZkSUZkb1pYUm9aWElnZEc4Z2NtVjBkWEp1SUhKbGRtVnljMlZrSUc5eVpHVnlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5VzExOUlGUm9aU0J2Y21SbGNpQmpiMjF3ZFhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGeVoxTnZjblFvZG1Gc2RXVnpPaUJoYm5sYlhTd2djbVYyWlhKelpTQTlJR1poYkhObEtUb2diblZ0WW1WeVcxMGdlMXh1SUNCamIyNXpkQ0J6YjNKMFptNGdQU0J5WlhabGNuTmxJRDhnS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0piTUYwZ0xTQmhXekJkS1NBNklDaGhPaUJoYm5sYlhTd2dZam9nWVc1NVcxMHBJRDArSUNoaFd6QmRJQzBnWWxzd1hTazdYRzRnSUdOdmJuTjBJR1JsWTI5eUlEMGdLSFk2SUdGdWVTd2dhVG9nYm5WdFltVnlLU0E5UGlCYmRpd2dhVjA3SUM4dklITmxkQ0JwYm1SbGVDQjBieUIyWVd4MVpWeHVJQ0JqYjI1emRDQjFibVJsWTI5eUlEMGdLR0U2SUdGdWVWdGRLU0E5UGlCaFd6RmRPeUF2THlCc1pXRjJaU0J2Ym14NUlHbHVaR1Y0WEc0Z0lHTnZibk4wSUY5aGNtZHpiM0owSUQwZ0tHRnljam9nWVc1NVcxMHBJRDArSUdGeWNpNXRZWEFvWkdWamIzSXBMbk52Y25Rb2MyOXlkR1p1S1M1dFlYQW9kVzVrWldOdmNpazdYRzRnSUhKbGRIVnliaUJmWVhKbmMyOXlkQ2gyWVd4MVpYTXBPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGSmxkSFZ5Ym5NZ2RHaGxJR2x1WkdWNFpYTWdiMllnZEdobElHMXZjM1FnWkdsMlpYSnpaU0J2WW1wbFkzUnpJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdaR2x6ZENCbWRXNWpkR2x2Ymx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHeGxibWQwYUNCMGIzUmhiQ0J1ZFcxaVpYSWdiMllnYjJKcVpXTjBjMXh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUc0Z2JuVnRZbVZ5SUc5bUlHUnBkbVZ5YzJVZ1pXeGxiV1Z1ZEhNZ2RHOGdabWx1WkZ4dUlDb2dRSEJoY21GdElIc29hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeWZTQmthWE4wSUdFZ1puVnVZM1JwYjI0Z2QyaHBZMmdnWTJGc1kzVnNZWFJsY3lCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1WEc0Z0tpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEhkdklHOWlhbVZqZEhNZ2RYTnBibWNnZEdobGFYSWdhVzVrWlhobGMxeHVJQ29nUUhKbGRIVnlibk1nZTI1MWJXSmxjbHRkZlNCVWFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITmNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFUnBkbVZ5YzJWVGRXSnpaWFFvYkdWdVozUm9PaUJ1ZFcxaVpYSXNJRzQ2SUc1MWJXSmxjaXdnWkdsemREb2dLR2t4T2lCdWRXMWlaWElzSUdreU9pQnVkVzFpWlhJcElEMCtJRzUxYldKbGNpazZJRzUxYldKbGNsdGRJSHRjYmlBZ1puVnVZM1JwYjI0Z2JXRjRRbmtvZG1Gc2RXVnpPaUJKZEdWeVlXSnNaVWwwWlhKaGRHOXlQRzUxYldKbGNqNHNJRzl5WkdWeVFuazZJQ2hwT2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrZ2UxeHVJQ0FnSUd4bGRDQnRZWGhXWVd4MVpTQTlJRzUxYkd3N1hHNGdJQ0FnYkdWMElHMWhlRTl5WkdWeVFua2dQU0J1ZFd4c08xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmxiR1Z0Wlc1MElHOW1JSFpoYkhWbGN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUFNCdmNtUmxja0o1S0dWc1pXMWxiblFwTzF4dUlDQWdJQ0FnYVdZZ0tHMWhlRTl5WkdWeVFua2dQVDBnYm5Wc2JDQjhmQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQStJRzFoZUU5eVpHVnlRbmtwSUh0Y2JpQWdJQ0FnSUNBZ2JXRjRWbUZzZFdVZ1BTQmxiR1Z0Wlc1ME8xeHVJQ0FnSUNBZ0lDQnRZWGhQY21SbGNrSjVJRDBnWld4bGJXVnVkRTl5WkdWeVFuazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0WVhoV1lXeDFaVHRjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJSE4xWW5ObGRDQTlJRnR5WVc1a2IyMUpiblFvYkdWdVozUm9JQzBnTVNsZE8xeHVJQ0JqYjI1emRDQmpiMjF3YkdWdFpXNTBJRDBnYm1WM0lGTmxkQ2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWdVozUm9PeUFySzJrcElIdGNiaUFnSUNCcFppQW9JWE4xWW5ObGRDNXBibU5zZFdSbGN5aHBLU2xjYmlBZ0lDQWdJR052YlhCc1pXMWxiblF1WVdSa0tHa3BPMXh1SUNCOVhHNWNiaUFnZDJocGJHVWdLSE4xWW5ObGRDNXNaVzVuZEdnZ1BDQnVLU0I3WEc0Z0lDQWdZMjl1YzNRZ2FXUjRJRDBnYldGNFFua29YRzRnSUNBZ0lDQmpiMjF3YkdWdFpXNTBMblpoYkhWbGN5Z3BJR0Z6SUVsMFpYSmhZbXhsU1hSbGNtRjBiM0k4Ym5WdFltVnlQaXhjYmlBZ0lDQWdJQ2hwS1NBOVBpQk5ZWFJvTG0xcGJpNWhjSEJzZVNoTllYUm9MQ0J6ZFdKelpYUXViV0Z3S0daMWJtTjBhVzl1S0haaGJDd2dhVzVrWlhncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHUnBjM1FvYVN3Z2RtRnNLVHRjYmlBZ0lDQWdJSDBwS1NrN1hHNGdJQ0FnYVdZZ0tHbGtlQ2tnZTF4dUlDQWdJQ0FnYzNWaWMyVjBMbkIxYzJnb2FXUjRLVHRjYmlBZ0lDQWdJR052YlhCc1pXMWxiblF1WkdWc1pYUmxLR2xrZUNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzRnSUhKbGRIVnliaUJ6ZFdKelpYUTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdWIzSnRZV3hwZW1Wa0lIWmxZM1J2Y2x4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlHUmhkR0VnYm5WdFpYSnBZMkZzSUdGeWNtRjVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCdWIzSnRZV3hwZW1Vb1pHRjBZVG9nVm1WamRHOXlLVG9nVm1WamRHOXlJSHRjYmlBZ2JHVjBJRzFsWVc0Z1BTQXdPMXh1SUNCc1pYUWdjM1JrSUQwZ01EdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYldWaGJpQXJQU0JrWVhSaFcybGRPMXh1WEc0Z0lHMWxZVzRnTHowZ1pHRjBZUzVzWlc1bmRHZzdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmtZWFJoTG14bGJtZDBhRHNnS3l0cEtWeHVJQ0FnSUhOMFpDQXJQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQ29nS0dSaGRHRmJhVjBnTFNCdFpXRnVLVHRjYmx4dUlDQnpkR1FnUFNCTllYUm9Mbk54Y25Rb2MzUmtJQzhnWkdGMFlTNXNaVzVuZEdncE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0JrWVhSaFcybGRJRDBnS0dSaGRHRmJhVjBnTFNCdFpXRnVLU0F2SUhOMFpEdGNibHh1SUNCeVpYUjFjbTRnWkdGMFlUdGNibjFjYmx4dUx5b3FYRzRnS2lCR2FXNWtjeUJ6WlhRZ1pHbG1abVZ5Wlc1alpTQmlaWFIzWldWdUlIUjNieUJzYVhOMGN5NWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0VnVkdobElHWnBjbk4wSUd4cGMzUXVYRzRnS2lCQWNHRnlZVzBnZTJGdWVWdGRmU0JpSUZSb1pTQnpaV052Ym1RZ2JHbHpkQzVjYmlBcUlFQnlaWFIxY200Z2UyRnVlVnRkZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMlYwUkdsbVptVnlaVzVqWlNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcE9pQmhibmxiWFNCN1hHNGdJR052Ym5OMElHSlRaWFFnUFNCdVpYY2dVMlYwS0dJcE8xeHVJQ0J5WlhSMWNtNGdRWEp5WVhrdVpuSnZiU2h1WlhjZ1UyVjBLR0V1Wm1sc2RHVnlLQ2g0S1NBOVBpQWhZbE5sZEM1b1lYTW9lQ2twS1M1MllXeDFaWE1vS1NrN1hHNTlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xuY29uc3QgcGVxID0gbmV3IFVpbnQzMkFycmF5KDB4MTAwMDApO1xuY29uc3QgbXllcnNfMzIgPSAoYSwgYikgPT4ge1xuICBjb25zdCBuID0gYS5sZW5ndGg7XG4gIGNvbnN0IG0gPSBiLmxlbmd0aDtcbiAgY29uc3QgbHN0ID0gMSA8PCAobiAtIDEpO1xuICBsZXQgcHYgPSAtMTtcbiAgbGV0IG12ID0gMDtcbiAgbGV0IHNjID0gbjtcbiAgbGV0IGkgPSBuO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcGVxW2EuY2hhckNvZGVBdChpKV0gfD0gMSA8PCBpO1xuICB9XG4gIGZvciAoaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICBsZXQgZXEgPSBwZXFbYi5jaGFyQ29kZUF0KGkpXTtcbiAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgZXEgfD0gKChlcSAmIHB2KSArIHB2KSBeIHB2O1xuICAgIG12IHw9IH4oZXEgfCBwdik7XG4gICAgcHYgJj0gZXE7XG4gICAgaWYgKG12ICYgbHN0KSB7XG4gICAgICBzYysrO1xuICAgIH1cbiAgICBpZiAocHYgJiBsc3QpIHtcbiAgICAgIHNjLS07XG4gICAgfVxuICAgIG12ID0gKG12IDw8IDEpIHwgMTtcbiAgICBwdiA9IChwdiA8PCAxKSB8IH4oeHYgfCBtdik7XG4gICAgbXYgJj0geHY7XG4gIH1cbiAgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIHNjO1xufTtcblxuY29uc3QgbXllcnNfeCA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBtaGMgPSBbXTtcbiAgY29uc3QgcGhjID0gW107XG4gIGNvbnN0IGhzaXplID0gTWF0aC5jZWlsKG4gLyAzMik7XG4gIGNvbnN0IHZzaXplID0gTWF0aC5jZWlsKG0gLyAzMik7XG4gIGxldCBzY29yZSA9IG07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHNpemU7IGkrKykge1xuICAgIHBoY1tpXSA9IC0xO1xuICAgIG1oY1tpXSA9IDA7XG4gIH1cbiAgbGV0IGogPSAwO1xuICBmb3IgKDsgaiA8IHZzaXplIC0gMTsgaisrKSB7XG4gICAgbGV0IG12ID0gMDtcbiAgICBsZXQgcHYgPSAtMTtcbiAgICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbigzMiwgbSkgKyBzdGFydDtcbiAgICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICAgIH1cbiAgICBzY29yZSA9IG07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgICBjb25zdCBwYiA9IChwaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgbWIgPSAobWhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICAgIGNvbnN0IHhoID0gKCgoKGVxIHwgbWIpICYgcHYpICsgcHYpIF4gcHYpIHwgZXEgfCBtYjtcbiAgICAgIGxldCBwaCA9IG12IHwgfih4aCB8IHB2KTtcbiAgICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgICBpZiAoKHBoID4+PiAzMSkgXiBwYikge1xuICAgICAgICBwaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgICB9XG4gICAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgICBtaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgICB9XG4gICAgICBwaCA9IChwaCA8PCAxKSB8IHBiO1xuICAgICAgbWggPSAobWggPDwgMSkgfCBtYjtcbiAgICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgICAgbXYgPSBwaCAmIHh2O1xuICAgIH1cbiAgICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgICAgcGVxW2IuY2hhckNvZGVBdChrKV0gPSAwO1xuICAgIH1cbiAgfVxuICBsZXQgbXYgPSAwO1xuICBsZXQgcHYgPSAtMTtcbiAgY29uc3Qgc3RhcnQgPSBqICogMzI7XG4gIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtIC0gc3RhcnQpICsgc3RhcnQ7XG4gIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgcGVxW2IuY2hhckNvZGVBdChrKV0gfD0gMSA8PCBrO1xuICB9XG4gIHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgY29uc3QgbWIgPSAobWhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgIGxldCBwaCA9IG12IHwgfih4aCB8IHB2KTtcbiAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgIHNjb3JlICs9IChwaCA+Pj4gKG0gLSAxKSkgJiAxO1xuICAgIHNjb3JlIC09IChtaCA+Pj4gKG0gLSAxKSkgJiAxO1xuICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICBwaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgfVxuICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICBtaGNbKGkgLyAzMikgfCAwXSBePSAxIDw8IGk7XG4gICAgfVxuICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgbWggPSAobWggPDwgMSkgfCBtYjtcbiAgICBwdiA9IG1oIHwgfih4diB8IHBoKTtcbiAgICBtdiA9IHBoICYgeHY7XG4gIH1cbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gIH1cbiAgcmV0dXJuIHNjb3JlO1xufTtcblxuY29uc3QgZGlzdGFuY2UgPSAoYSwgYikgPT4ge1xuICBpZiAoYS5sZW5ndGggPiBiLmxlbmd0aCkge1xuICAgIGNvbnN0IHRtcCA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHRtcDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYi5sZW5ndGg7XG4gIH1cbiAgaWYgKGEubGVuZ3RoIDw9IDMyKSB7XG4gICAgcmV0dXJuIG15ZXJzXzMyKGEsIGIpO1xuICB9XG4gIHJldHVybiBteWVyc194KGEsIGIpO1xufTtcblxuY29uc3QgY2xvc2VzdCA9IChzdHIsIGFycikgPT4ge1xuICBsZXQgbWluX2Rpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5faW5kZXggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGRpc3QgPSBkaXN0YW5jZShzdHIsIGFycltpXSk7XG4gICAgaWYgKGRpc3QgPCBtaW5fZGlzdGFuY2UpIHtcbiAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3Q7XG4gICAgICBtaW5faW5kZXggPSBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyW21pbl9pbmRleF07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY2xvc2VzdCwgZGlzdGFuY2Vcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuLy8gUmVmZXJlbmNlOiBodHRwczovL3d3dy5nZWVrc2ZvcmdlZWtzLm9yZy9qYXJvLWFuZC1qYXJvLXdpbmtsZXItc2ltaWxhcml0eS9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuamFyb1dpbmtsZXIgPSBleHBvcnRzLmphcm8gPSB2b2lkIDA7XG4vKipcbiAqXG4gKiBAcGFyYW0gc3RyMSBTdHJpbmcgMSBmb3IgY29tcGFyZVxuICogQHBhcmFtIHN0cjIgU3RyaW5nIDIgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBvcHRpb25zIHRvIGNvbnRyb2wgY2FzZSBzZW5zaXRpdmUgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGphcm8oc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEV4aXQgZWFybHkgaWYgZWl0aGVyIGFyZSBlbXB0eS5cbiAgICBpZiAoc3RyMS5sZW5ndGggPT09IDAgfHwgc3RyMi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIC8vIENvbnZlcnQgdG8gdXBwZXIgaWYgY2FzZS1zZW5zaXRpdmUgaXMgZmFsc2UuXG4gICAgaWYgKG9wdGlvbnMgJiYgIW9wdGlvbnMuY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBzdHIxID0gc3RyMS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICBzdHIyID0gc3RyMi50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICAvLyBFeGFjdCBtYXRjaFxuICAgIGlmIChzdHIxID09PSBzdHIyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICAvLyBOdW1iZXIgb2YgbWF0Y2hlc1xuICAgIHZhciBtID0gMDtcbiAgICAvLyBMZW5ndGggb2YgdHdvIFN0cmluZ3NcbiAgICB2YXIgbGVuMSA9IHN0cjEubGVuZ3RoO1xuICAgIHZhciBsZW4yID0gc3RyMi5sZW5ndGg7XG4gICAgLy8gTWF4aW11bSBkaXN0YW5jZVxuICAgIHZhciB3aW5kb3cgPSBNYXRoLmZsb29yKE1hdGgubWF4KGxlbjEsIGxlbjIpIC8gMikgLSAxO1xuICAgIC8vIEhhc2ggZm9yIG1hdGNoZXNcbiAgICB2YXIgc3RyMUhhc2ggPSBuZXcgQXJyYXkobGVuMSk7XG4gICAgdmFyIHN0cjJIYXNoID0gbmV3IEFycmF5KGxlbjIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBpIC0gd2luZG93KTsgaiA8PSBNYXRoLm1pbihsZW4yLCBpICsgd2luZG93ICsgMSk7IGorKykge1xuICAgICAgICAgICAgaWYgKCFzdHIxSGFzaFtpXSAmJiAhc3RyMkhhc2hbal0gJiYgc3RyMVtpXSA9PT0gc3RyMltqXSkge1xuICAgICAgICAgICAgICAgICsrbTtcbiAgICAgICAgICAgICAgICBzdHIxSGFzaFtpXSA9IHN0cjJIYXNoW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBFeGl0IGVhcmx5IGlmIG5vIG1hdGNoZXMgd2VyZSBmb3VuZC5cbiAgICBpZiAobSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ291bnQgdGhlIHRyYW5zcG9zaXRpb25zLlxuICAgIHZhciB0ID0gMDtcbiAgICB2YXIgcG9pbnQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgICAgIGlmIChzdHIxSGFzaFtpXSkge1xuICAgICAgICAgICAgd2hpbGUgKCFzdHIySGFzaFtwb2ludF0pIHtcbiAgICAgICAgICAgICAgICBwb2ludCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cjEuY2hhckF0KGkpICE9PSBzdHIyLmNoYXJBdChwb2ludCsrKSkge1xuICAgICAgICAgICAgICAgIHQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0IC89IDI7XG4gICAgcmV0dXJuIChtIC8gbGVuMSArIG0gLyBsZW4yICsgKG0gLSB0KSAvIG0pIC8gMztcbn1cbmV4cG9ydHMuamFybyA9IGphcm87XG4vKipcbiAqXG4gKiBAcGFyYW0gc3RyMSBTdHJpbmcgMSBmb3IgY29tcGFyZVxuICogQHBhcmFtIHN0cjIgU3RyaW5nIDIgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBvcHRpb25zIHRvIGNvbnRyb2wgY2FzZSBzZW5zaXRpdmUgb3Igbm90XG4gKi9cbmZ1bmN0aW9uIGphcm9XaW5rbGVyKHN0cjEsIHN0cjIsIG9wdGlvbnMpIHtcbiAgICAvLyBKYXJvIERpc3RhbmNlXG4gICAgdmFyIGphcm9EaXN0ID0gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKTtcbiAgICAvLyBTYW1lIHByZWZpeCBsZW5ndGgsIG1heGl1bSBpcyA0XG4gICAgdmFyIHByZWZpeCA9IDA7XG4gICAgaWYgKGphcm9EaXN0ID4gMC43KSB7XG4gICAgICAgIHZhciBtaW5JbmRleCA9IE1hdGgubWluKHN0cjEubGVuZ3RoLCBzdHIyLmxlbmd0aCk7XG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKHN0cjFbaV0gPT09IHN0cjJbaV0gJiYgaSA8IDQgJiYgaSA8IG1pbkluZGV4KSB7XG4gICAgICAgICAgICArK3ByZWZpeDtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBqYXJvRGlzdCArPSAwLjEgKiBwcmVmaXggKiAoMSAtIGphcm9EaXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIGphcm9EaXN0O1xufVxuZXhwb3J0cy5qYXJvV2lua2xlciA9IGphcm9XaW5rbGVyO1xuIiwiY2xhc3MgQ2VsbCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEkgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEogPSAwO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBBbGlnbmVkIHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIHNjb3JlXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMuc2NvcmUgPSBzY29yZV87XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIFNlcXVlbmNlQWxpZ25tZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIGdhcF8sIGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9ICcnO1xuICAgICAgICB0aGlzLnNlcTIgPSAnJztcbiAgICAgICAgdGhpcy5nYXAgPSAxO1xuICAgICAgICB0aGlzLmxlbjEgPSAwO1xuICAgICAgICB0aGlzLmxlbjIgPSAwO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICB0aGlzLmFsaWduR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuQkxPU1VNNDUgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAwLCAtMSwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDMsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDYsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtMiwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAyLCA3LCAtMywgMCwgMiwgLTEsIDAsIC00LCAtMywgMCwgLTMsIC00LCAtMSwgMCwgLTEsIC00LCAtMiwgLTMsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTMsIDEyLCAtMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMiwgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA2LCAyLCAtMiwgMSwgLTIsIC0yLCAxLCAwLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTIsIDAsIC0zLCAtMiwgMSwgLTIsIC0zLCAwLCAwLCAtMSwgLTMsIC0yLCAtMywgMSwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDcsIC0yLCAtNCwgLTMsIC0yLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAwLCAtMywgMSwgMCwgLTIsIDEwLCAtMywgLTIsIC0xLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIDIsIC0zLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC00LCAtMywgLTIsIC0zLCAtNCwgLTMsIDUsIDIsIC0zLCAyLCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMywgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC0zLCAtMiwgLTIsIC0yLCAtMywgLTIsIDIsIDUsIC0zLCAyLCAxLCAtMywgLTMsIC0xLCAtMiwgMCwgMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAwLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTMsIDUsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMiwgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgMCwgMiwgMiwgLTEsIDYsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAxLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTQsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgMSwgLTMsIDAsIDgsIC0zLCAtMiwgLTEsIDEsIDMsIDAsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTQsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgOSwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMSwgNCwgMiwgLTQsIC0yLCAtMSwgMCwgMCwgMCwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyLCA1LCAtMywgLTEsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtNCwgLTQsIC01LCAtMiwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIDEsIC0zLCAtNCwgLTMsIDE1LCAzLCAtMywgLTQsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgMiwgMCwgMCwgLTEsIDAsIDMsIC0zLCAtMiwgLTEsIDMsIDgsIC0xLCAtMiwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtMywgLTEsIC0zLCAtMywgLTMsIC0zLCAzLCAxLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMywgLTEsIDUsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDQsIDUsIC0yLCAwLCAxLCAtMSwgMCwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAwLCAwLCAtNCwgLTIsIC0zLCA0LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNCwgLTIsIDAsIC0zLCAtMiwgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNTAgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgLTEsIC0yLCAtNCwgMSwgMCwgLTMsIDAsIC00LCAtMywgMywgLTIsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0zLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDcsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMywgLTQsIDAsIC0yLCAtNCwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAyLCA4LCAtNCwgMCwgMiwgLTEsIC0xLCAtNCwgLTQsIC0xLCAtNCwgLTUsIC0xLCAwLCAtMSwgLTUsIC0zLCAtNCwgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0yLCAtNCwgMTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0zLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDcsIDIsIC0yLCAxLCAtMywgLTIsIDIsIDAsIC00LCAtMSwgMCwgLTEsIC0xLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMywgMCwgLTQsIC0zLCAxLCAtMiwgLTMsIC0xLCAtMSwgLTEsIC0zLCAtMiwgLTMsIDEsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC0xLCAtMywgLTIsIC0zLCA4LCAtMiwgLTQsIC00LCAtMiwgLTMsIC00LCAtMiwgMCwgLTIsIC0zLCAtMywgLTQsIC0xLCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAxLCAwLCAtMiwgMTAsIC00LCAtMywgMCwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMywgMiwgLTQsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMywgLTQsIC0yLCAtMywgLTQsIC00LCAtNCwgNSwgMiwgLTMsIDIsIDAsIC0zLCAtMywgLTEsIC0zLCAtMSwgNCwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtNCwgLTMsIDIsIDUsIC0zLCAzLCAxLCAtNCwgLTMsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTEsIC0zLCAyLCAxLCAtMiwgMCwgLTMsIC0zLCA2LCAtMiwgLTQsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMywgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtNCwgLTIsIDAsIC0yLCAtMywgLTEsIDIsIDMsIC0yLCA3LCAwLCAtMywgLTIsIC0xLCAtMSwgMCwgMSwgLTMsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtMiwgLTQsIC0zLCAtNCwgLTEsIDAsIDEsIC00LCAwLCA4LCAtNCwgLTMsIC0yLCAxLCA0LCAtMSwgLTQsIC00LCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0xLCAtNCwgLTEsIC0xLCAtMiwgLTIsIC0zLCAtNCwgLTEsIC0zLCAtNCwgMTAsIC0xLCAtMSwgLTQsIC0zLCAtMywgLTIsIC0xLCAtMiwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgLTEsIDAsIC0xLCAtMywgLTMsIDAsIC0yLCAtMywgLTEsIDUsIDIsIC00LCAtMiwgLTIsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDIsIDUsIC0zLCAtMiwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTUsIC0xLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC00LCAtMywgMTUsIDIsIC0zLCAtNSwgLTIsIC0zLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAwLCA0LCAtMywgLTIsIC0yLCAyLCA4LCAtMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTQsIC0xLCAtMywgLTMsIC00LCAtNCwgNCwgMSwgLTMsIDEsIC0xLCAtMywgLTIsIDAsIC0zLCAtMSwgNSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNCwgNSwgLTMsIDAsIDEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTIsIDAsIDAsIC01LCAtMywgLTQsIDUsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTQsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgMCwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTYyID0gW1s0LCAtMSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0xLCA1LCAwLCAtMiwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDIsIC0xLCAtMywgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMywgLTEsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDYsIDEsIC0zLCAwLCAwLCAwLCAxLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDMsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAxLCA2LCAtMywgMCwgMiwgLTEsIC0xLCAtMywgLTQsIC0xLCAtMywgLTMsIC0xLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCA5LCAtMywgLTQsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0yLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMywgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA1LCAyLCAtMiwgMCwgLTMsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0xLCAtMiwgLTEsIC0yLCAwLCAzLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtNCwgMiwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTIsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA2LCAtMiwgLTQsIC00LCAtMiwgLTMsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAwLCAwLCAtMiwgOCwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtMiwgLTEsIC0yLCAtMiwgMiwgLTMsIDAsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC0xLCAtMywgLTMsIC00LCAtMywgNCwgMiwgLTMsIDEsIDAsIC0zLCAtMiwgLTEsIC0zLCAtMSwgMywgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC00LCAtMSwgLTIsIC0zLCAtNCwgLTMsIDIsIDQsIC0yLCAyLCAwLCAtMywgLTIsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMiwgNSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDAsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0xLCAwLCAtMiwgLTMsIC0yLCAxLCAyLCAtMSwgNSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAxLCAtMywgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTMsIC0yLCAtMywgLTMsIC0zLCAtMSwgMCwgMCwgLTMsIDAsIDYsIC00LCAtMiwgLTIsIDEsIDMsIC0xLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC00LCA3LCAtMSwgLTEsIC00LCAtMywgLTIsIC0yLCAtMSwgLTIsIC00XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMiwgLTEsIDQsIDEsIC0zLCAtMiwgLTIsIDAsIDAsIDAsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgNSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC0zLCAtMiwgMTEsIDIsIC0zLCAtNCwgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTMsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAtMSwgMywgLTMsIC0yLCAtMiwgMiwgNywgLTEsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAtMSwgLTIsIC0yLCAwLCAtMywgLTEsIDQsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDMsIDQsIC0zLCAwLCAxLCAtMSwgMCwgLTMsIC00LCAwLCAtMywgLTMsIC0yLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDMsIDQsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTgwID0gW1s3LCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAwLCAtMywgLTMsIC0zLCAtMSwgLTIsIC00LCAtMSwgMiwgMCwgLTUsIC00LCAtMSwgLTMsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCA5LCAtMSwgLTMsIC02LCAxLCAtMSwgLTQsIDAsIC01LCAtNCwgMywgLTMsIC01LCAtMywgLTIsIC0yLCAtNSwgLTQsIC00LCAtMiwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTEsIDksIDIsIC01LCAwLCAtMSwgLTEsIDEsIC02LCAtNiwgMCwgLTQsIC02LCAtNCwgMSwgMCwgLTcsIC00LCAtNSwgNSwgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAyLCAxMCwgLTcsIC0xLCAyLCAtMywgLTIsIC03LCAtNywgLTIsIC02LCAtNiwgLTMsIC0xLCAtMiwgLTgsIC02LCAtNiwgNiwgMSwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC01LCAtNywgMTMsIC01LCAtNywgLTYsIC03LCAtMiwgLTMsIC02LCAtMywgLTQsIC02LCAtMiwgLTIsIC01LCAtNSwgLTIsIC02LCAtNywgLTQsIC04XSxcbiAgICAgICAgICAgIFstMiwgMSwgMCwgLTEsIC01LCA5LCAzLCAtNCwgMSwgLTUsIC00LCAyLCAtMSwgLTUsIC0zLCAtMSwgLTEsIC00LCAtMywgLTQsIC0xLCA1LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTEsIDIsIC03LCAzLCA4LCAtNCwgMCwgLTYsIC02LCAxLCAtNCwgLTYsIC0yLCAtMSwgLTIsIC02LCAtNSwgLTQsIDEsIDYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTQsIC0xLCAtMywgLTYsIC00LCAtNCwgOSwgLTQsIC03LCAtNywgLTMsIC01LCAtNiwgLTUsIC0xLCAtMywgLTYsIC02LCAtNiwgLTIsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0zLCAwLCAxLCAtMiwgLTcsIDEsIDAsIC00LCAxMiwgLTYsIC01LCAtMSwgLTQsIC0yLCAtNCwgLTIsIC0zLCAtNCwgMywgLTUsIC0xLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNSwgLTYsIC03LCAtMiwgLTUsIC02LCAtNywgLTYsIDcsIDIsIC01LCAyLCAtMSwgLTUsIC00LCAtMiwgLTUsIC0zLCA0LCAtNiwgLTYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNiwgLTcsIC0zLCAtNCwgLTYsIC03LCAtNSwgMiwgNiwgLTQsIDMsIDAsIC01LCAtNCwgLTMsIC00LCAtMiwgMSwgLTcsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMiwgLTYsIDIsIDEsIC0zLCAtMSwgLTUsIC00LCA4LCAtMywgLTUsIC0yLCAtMSwgLTEsIC02LCAtNCwgLTQsIC0xLCAxLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC02LCAtMywgLTEsIC00LCAtNSwgLTQsIDIsIDMsIC0zLCA5LCAwLCAtNCwgLTMsIC0xLCAtMywgLTMsIDEsIC01LCAtMywgLTIsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTUsIC02LCAtNiwgLTQsIC01LCAtNiwgLTYsIC0yLCAtMSwgMCwgLTUsIDAsIDEwLCAtNiwgLTQsIC00LCAwLCA0LCAtMiwgLTYsIC02LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC0zLCAtNiwgLTMsIC0yLCAtNSwgLTQsIC01LCAtNSwgLTIsIC00LCAtNiwgMTIsIC0yLCAtMywgLTcsIC02LCAtNCwgLTQsIC0yLCAtMywgLThdLFxuICAgICAgICAgICAgWzIsIC0yLCAxLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtNCwgLTQsIC0xLCAtMywgLTQsIC0yLCA3LCAyLCAtNiwgLTMsIC0zLCAwLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMywgLTIsIC0zLCAtMSwgLTEsIC00LCAtMywgMiwgOCwgLTUsIC0zLCAwLCAtMSwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNywgLTgsIC01LCAtNCwgLTYsIC02LCAtNCwgLTUsIC00LCAtNiwgLTMsIDAsIC03LCAtNiwgLTUsIDE2LCAzLCAtNSwgLTgsIC01LCAtNSwgLThdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC02LCAtNSwgLTMsIC01LCAtNiwgMywgLTMsIC0yLCAtNCwgLTMsIDQsIC02LCAtMywgLTMsIDMsIDExLCAtMywgLTUsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTUsIC02LCAtMiwgLTQsIC00LCAtNiwgLTUsIDQsIDEsIC00LCAxLCAtMiwgLTQsIC0zLCAwLCAtNSwgLTMsIDcsIC02LCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTIsIDUsIDYsIC02LCAtMSwgMSwgLTIsIC0xLCAtNiwgLTcsIC0xLCAtNSwgLTYsIC00LCAwLCAtMSwgLTgsIC01LCAtNiwgNiwgMCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDEsIC03LCA1LCA2LCAtNCwgMCwgLTYsIC01LCAxLCAtMywgLTYsIC0yLCAtMSwgLTIsIC01LCAtNCwgLTQsIDAsIDYsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTMsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0xLCAtNSwgLTMsIC0yLCAtMywgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNOTAgPSBbWzUsIC0yLCAtMiwgLTMsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0xLCAxLCAwLCAtNCwgLTMsIC0xLCAtMiwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDYsIC0xLCAtMywgLTUsIDEsIC0xLCAtMywgMCwgLTQsIC0zLCAyLCAtMiwgLTQsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNywgMSwgLTQsIDAsIC0xLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0zLCAwLCAwLCAtNSwgLTMsIC00LCA0LCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIDEsIDcsIC01LCAtMSwgMSwgLTIsIC0yLCAtNSwgLTUsIC0xLCAtNCwgLTUsIC0zLCAtMSwgLTIsIC02LCAtNCwgLTUsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNCwgLTUsIDksIC00LCAtNiwgLTQsIC01LCAtMiwgLTIsIC00LCAtMiwgLTMsIC00LCAtMiwgLTIsIC00LCAtNCwgLTIsIC00LCAtNSwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgLTEsIC00LCA3LCAyLCAtMywgMSwgLTQsIC0zLCAxLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTMsIC0zLCAtMywgLTEsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMSwgLTYsIDIsIDYsIC0zLCAtMSwgLTQsIC00LCAwLCAtMywgLTUsIC0yLCAtMSwgLTEsIC01LCAtNCwgLTMsIDAsIDQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgNiwgLTMsIC01LCAtNSwgLTIsIC00LCAtNSwgLTMsIC0xLCAtMywgLTQsIC01LCAtNSwgLTIsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAwLCAwLCAtMiwgLTUsIDEsIC0xLCAtMywgOCwgLTQsIC00LCAtMSwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMywgMSwgLTQsIC0xLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAtMiwgLTQsIC00LCAtNSwgLTQsIDUsIDEsIC00LCAxLCAtMSwgLTQsIC0zLCAtMSwgLTQsIC0yLCAzLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTQsIC01LCAtNCwgMSwgNSwgLTMsIDIsIDAsIC00LCAtMywgLTIsIC0zLCAtMiwgMCwgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTQsIDEsIDAsIC0yLCAtMSwgLTQsIC0zLCA2LCAtMiwgLTQsIC0yLCAtMSwgLTEsIC01LCAtMywgLTMsIC0xLCAxLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTMsIC00LCAtMiwgMCwgLTMsIC00LCAtMywgMSwgMiwgLTIsIDcsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTIsIDAsIC00LCAtMiwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMywgLTQsIC00LCAtNSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMSwgMCwgLTQsIC0xLCA3LCAtNCwgLTMsIC0zLCAwLCAzLCAtMiwgLTQsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTMsIC00LCAtNCwgLTIsIC0zLCAtNCwgOCwgLTIsIC0yLCAtNSwgLTQsIC0zLCAtMywgLTIsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgLTIsIDUsIDEsIC00LCAtMywgLTIsIDAsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0yLCAxLCA2LCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNSwgLTYsIC00LCAtMywgLTUsIC00LCAtMywgLTQsIC0zLCAtNSwgLTIsIDAsIC01LCAtNCwgLTQsIDExLCAyLCAtMywgLTYsIC00LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTMsIC00LCAtNCwgLTMsIC00LCAtNSwgMSwgLTIsIC0yLCAtMywgLTIsIDMsIC00LCAtMywgLTIsIDIsIDgsIC0zLCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTMsIC01LCAtNCwgMywgMCwgLTMsIDAsIC0yLCAtMywgLTIsIC0xLCAtMywgLTMsIDUsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDQsIDQsIC00LCAtMSwgMCwgLTIsIC0xLCAtNSwgLTUsIC0xLCAtNCwgLTQsIC0zLCAwLCAtMSwgLTYsIC00LCAtNCwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTEsIDAsIC01LCA0LCA0LCAtMywgMCwgLTQsIC00LCAxLCAtMiwgLTQsIC0yLCAtMSwgLTEsIC00LCAtMywgLTMsIDAsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0yLCAtMiwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAxXV07XG4gICAgICAgIHRoaXMuTlVDTEVPVElERVMgPSBbWzEsIC0xLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAxLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0zMCA9IFtbNiwgLTcsIC00LCAtMywgLTYsIC00LCAtMiwgLTIsIC03LCAtNSwgLTYsIC03LCAtNSwgLTgsIC0yLCAwLCAtMSwgLTEzLCAtOCwgLTIsIC0zLCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDgsIC02LCAtMTAsIC04LCAtMiwgLTksIC05LCAtMiwgLTUsIC04LCAwLCAtNCwgLTksIC00LCAtMywgLTYsIC0yLCAtMTAsIC04LCAtNywgLTQsIC02LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtNiwgOCwgMiwgLTExLCAtMywgLTIsIC0zLCAwLCAtNSwgLTcsIC0xLCAtOSwgLTksIC02LCAwLCAtMiwgLTgsIC00LCAtOCwgNiwgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtMTAsIDIsIDgsIC0xNCwgLTIsIDIsIC0zLCAtNCwgLTcsIC0xMiwgLTQsIC0xMSwgLTE1LCAtOCwgLTQsIC01LCAtMTUsIC0xMSwgLTgsIDYsIDEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTExLCAtMTQsIDEwLCAtMTQsIC0xNCwgLTksIC03LCAtNiwgLTE1LCAtMTQsIC0xMywgLTEzLCAtOCwgLTMsIC04LCAtMTUsIC00LCAtNiwgLTEyLCAtMTQsIC05LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtMiwgLTMsIC0yLCAtMTQsIDgsIDEsIC03LCAxLCAtOCwgLTUsIC0zLCAtNCwgLTEzLCAtMywgLTUsIC01LCAtMTMsIC0xMiwgLTcsIC0zLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0yLCAyLCAtMTQsIDEsIDgsIC00LCAtNSwgLTUsIC05LCAtNCwgLTcsIC0xNCwgLTUsIC00LCAtNiwgLTE3LCAtOCwgLTYsIDEsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTMsIC0zLCAtOSwgLTcsIC00LCA2LCAtOSwgLTExLCAtMTAsIC03LCAtOCwgLTksIC02LCAtMiwgLTYsIC0xNSwgLTE0LCAtNSwgLTMsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNywgLTIsIDAsIC00LCAtNywgMSwgLTUsIC05LCA5LCAtOSwgLTYsIC02LCAtMTAsIC02LCAtNCwgLTYsIC03LCAtNywgLTMsIC02LCAtMSwgLTEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC03LCAtNiwgLTgsIC01LCAtMTEsIC05LCA4LCAtMSwgLTYsIC0xLCAtMiwgLTgsIC03LCAtMiwgLTE0LCAtNiwgMiwgLTYsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC03LCAtMTIsIC0xNSwgLTUsIC05LCAtMTAsIC02LCAtMSwgNywgLTgsIDEsIC0zLCAtNywgLTgsIC03LCAtNiwgLTcsIC0yLCAtOSwgLTcsIC02LCAtMTddLFxuICAgICAgICAgICAgWy03LCAwLCAtMSwgLTQsIC0xNCwgLTMsIC00LCAtNywgLTYsIC02LCAtOCwgNywgLTIsIC0xNCwgLTYsIC00LCAtMywgLTEyLCAtOSwgLTksIC0yLCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC00LCAtOSwgLTExLCAtMTMsIC00LCAtNywgLTgsIC0xMCwgLTEsIDEsIC0yLCAxMSwgLTQsIC04LCAtNSwgLTQsIC0xMywgLTExLCAtMSwgLTEwLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC05LCAtOSwgLTE1LCAtMTMsIC0xMywgLTE0LCAtOSwgLTYsIC0yLCAtMywgLTE0LCAtNCwgOSwgLTEwLCAtNiwgLTksIC00LCAyLCAtOCwgLTEwLCAtMTMsIC04LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTYsIC04LCAtOCwgLTMsIC01LCAtNiwgLTQsIC04LCAtNywgLTYsIC04LCAtMTAsIDgsIC0yLCAtNCwgLTE0LCAtMTMsIC02LCAtNywgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtNCwgLTMsIC01LCAtNCwgLTIsIC02LCAtNywgLTgsIC00LCAtNSwgLTYsIC0yLCA2LCAwLCAtNSwgLTcsIC02LCAtMSwgLTUsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTIsIC01LCAtOCwgLTUsIC02LCAtNiwgLTcsIC0yLCAtNywgLTMsIC00LCAtOSwgLTQsIDAsIDcsIC0xMywgLTYsIC0zLCAtMywgLTYsIC00LCAtMTddLFxuICAgICAgICAgICAgWy0xMywgLTIsIC04LCAtMTUsIC0xNSwgLTEzLCAtMTcsIC0xNSwgLTcsIC0xNCwgLTYsIC0xMiwgLTEzLCAtNCwgLTE0LCAtNSwgLTEzLCAxMywgLTUsIC0xNSwgLTEwLCAtMTQsIC0xMSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTEwLCAtNCwgLTExLCAtNCwgLTEyLCAtOCwgLTE0LCAtMywgLTYsIC03LCAtOSwgLTExLCAyLCAtMTMsIC03LCAtNiwgLTUsIDEwLCAtNywgLTYsIC05LCAtNywgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTgsIC04LCAtOCwgLTYsIC03LCAtNiwgLTUsIC02LCAyLCAtMiwgLTksIC0xLCAtOCwgLTYsIC02LCAtMywgLTE1LCAtNywgNywgLTgsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTcsIDYsIDYsIC0xMiwgLTMsIDEsIC0zLCAtMSwgLTYsIC05LCAtMiwgLTEwLCAtMTAsIC03LCAtMSwgLTMsIC0xMCwgLTYsIC04LCA2LCAwLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAxLCAtMTQsIDYsIDYsIC01LCAtMSwgLTYsIC03LCAtNCwgLTUsIC0xMywgLTQsIC01LCAtNiwgLTE0LCAtOSwgLTYsIDAsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNiwgLTMsIC01LCAtOSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNiwgLTUsIC01LCAtOCwgLTUsIC0zLCAtNCwgLTExLCAtNywgLTUsIC01LCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIDFdXTtcbiAgICAgICAgdGhpcy5QQU03MCA9IFtbNSwgLTQsIC0yLCAtMSwgLTQsIC0yLCAtMSwgMCwgLTQsIC0yLCAtNCwgLTQsIC0zLCAtNiwgMCwgMSwgMSwgLTksIC01LCAtMSwgLTEsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstNCwgOCwgLTMsIC02LCAtNSwgMCwgLTUsIC02LCAwLCAtMywgLTYsIDIsIC0yLCAtNywgLTIsIC0xLCAtNCwgMCwgLTcsIC01LCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgNiwgMywgLTcsIC0xLCAwLCAtMSwgMSwgLTMsIC01LCAwLCAtNSwgLTYsIC0zLCAxLCAwLCAtNiwgLTMsIC01LCA1LCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC02LCAzLCA2LCAtOSwgMCwgMywgLTEsIC0xLCAtNSwgLTgsIC0yLCAtNywgLTEwLCAtNCwgLTEsIC0yLCAtMTAsIC03LCAtNSwgNSwgMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNywgLTksIDksIC05LCAtOSwgLTYsIC01LCAtNCwgLTEwLCAtOSwgLTksIC04LCAtNSwgLTEsIC01LCAtMTEsIC0yLCAtNCwgLTgsIC05LCAtNiwgLTExXSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDAsIC05LCA3LCAyLCAtNCwgMiwgLTUsIC0zLCAtMSwgLTIsIC05LCAtMSwgLTMsIC0zLCAtOCwgLTgsIC00LCAtMSwgNSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAwLCAzLCAtOSwgMiwgNiwgLTIsIC0yLCAtNCwgLTYsIC0yLCAtNCwgLTksIC0zLCAtMiwgLTMsIC0xMSwgLTYsIC00LCAyLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFswLCAtNiwgLTEsIC0xLCAtNiwgLTQsIC0yLCA2LCAtNiwgLTYsIC03LCAtNSwgLTYsIC03LCAtMywgMCwgLTMsIC0xMCwgLTksIC0zLCAtMSwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAwLCAxLCAtMSwgLTUsIDIsIC0yLCAtNiwgOCwgLTYsIC00LCAtMywgLTYsIC00LCAtMiwgLTMsIC00LCAtNSwgLTEsIC00LCAwLCAxLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNSwgLTQsIC01LCAtNCwgLTYsIC02LCA3LCAxLCAtNCwgMSwgMCwgLTUsIC00LCAtMSwgLTksIC00LCAzLCAtNCwgLTQsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNiwgLTUsIC04LCAtMTAsIC0zLCAtNiwgLTcsIC00LCAxLCA2LCAtNSwgMiwgLTEsIC01LCAtNiwgLTQsIC00LCAtNCwgMCwgLTYsIC00LCAtNCwgLTExXSxcbiAgICAgICAgICAgIFstNCwgMiwgMCwgLTIsIC05LCAtMSwgLTIsIC01LCAtMywgLTQsIC01LCA2LCAwLCAtOSwgLTQsIC0yLCAtMSwgLTcsIC03LCAtNiwgLTEsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMywgLTIsIC01LCAtNywgLTksIC0yLCAtNCwgLTYsIC02LCAxLCAyLCAwLCAxMCwgLTIsIC01LCAtMywgLTIsIC04LCAtNywgMCwgLTYsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNiwgLTcsIC02LCAtMTAsIC04LCAtOSwgLTksIC03LCAtNCwgMCwgLTEsIC05LCAtMiwgOCwgLTcsIC00LCAtNiwgLTIsIDQsIC01LCAtNywgLTksIC01LCAtMTFdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTQsIC01LCAtMSwgLTMsIC0zLCAtMiwgLTUsIC01LCAtNCwgLTUsIC03LCA3LCAwLCAtMiwgLTksIC05LCAtMywgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgLTEsIC0xLCAtMywgLTIsIDAsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIDAsIDUsIDIsIC0zLCAtNSwgLTMsIDAsIC0yLCAtMSwgLTExXSxcbiAgICAgICAgICAgIFsxLCAtNCwgMCwgLTIsIC01LCAtMywgLTMsIC0zLCAtNCwgLTEsIC00LCAtMSwgLTIsIC02LCAtMiwgMiwgNiwgLTgsIC00LCAtMSwgLTEsIC0zLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstOSwgMCwgLTYsIC0xMCwgLTExLCAtOCwgLTExLCAtMTAsIC01LCAtOSwgLTQsIC03LCAtOCwgLTIsIC05LCAtMywgLTgsIDEzLCAtMywgLTEwLCAtNywgLTEwLCAtNywgLTExXSxcbiAgICAgICAgICAgIFstNSwgLTcsIC0zLCAtNywgLTIsIC04LCAtNiwgLTksIC0xLCAtNCwgLTQsIC03LCAtNywgNCwgLTksIC01LCAtNCwgLTMsIDksIC01LCAtNCwgLTcsIC01LCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTUsIC01LCAtNCwgLTQsIC00LCAtMywgLTQsIDMsIDAsIC02LCAwLCAtNSwgLTMsIC0zLCAtMSwgLTEwLCAtNSwgNiwgLTUsIC00LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTQsIDUsIDUsIC04LCAtMSwgMiwgLTEsIDAsIC00LCAtNiwgLTEsIC02LCAtNywgLTQsIDAsIC0xLCAtNywgLTQsIC01LCA1LCAxLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0xLCAyLCAtOSwgNSwgNSwgLTMsIDEsIC00LCAtNCwgLTIsIC0zLCAtOSwgLTIsIC0yLCAtMywgLTEwLCAtNywgLTQsIDEsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTIsIC0zLCAtNiwgLTIsIC0zLCAtMywgLTMsIC0zLCAtNCwgLTMsIC0zLCAtNSwgLTMsIC0xLCAtMiwgLTcsIC01LCAtMiwgLTIsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTI1MCA9IFtbMiwgLTIsIDAsIDAsIC0yLCAwLCAwLCAxLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0zLCAxLCAxLCAxLCAtNiwgLTMsIDAsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFstMiwgNiwgMCwgLTEsIC00LCAxLCAtMSwgLTMsIDIsIC0yLCAtMywgMywgMCwgLTQsIDAsIDAsIC0xLCAyLCAtNCwgLTIsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDIsIC00LCAxLCAxLCAwLCAyLCAtMiwgLTMsIDEsIC0yLCAtMywgMCwgMSwgMCwgLTQsIC0yLCAtMiwgMiwgMSwgMCwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCA0LCAtNSwgMiwgMywgMSwgMSwgLTIsIC00LCAwLCAtMywgLTYsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAxMiwgLTUsIC01LCAtMywgLTMsIC0yLCAtNiwgLTUsIC01LCAtNCwgLTMsIDAsIC0yLCAtOCwgMCwgLTIsIC00LCAtNSwgLTMsIC04XSxcbiAgICAgICAgICAgIFswLCAxLCAxLCAyLCAtNSwgNCwgMiwgLTEsIDMsIC0yLCAtMiwgMSwgLTEsIC01LCAwLCAtMSwgLTEsIC01LCAtNCwgLTIsIDEsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDEsIDMsIC01LCAyLCA0LCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtNSwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTMsIDAsIDEsIC0zLCAtMSwgMCwgNSwgLTIsIC0zLCAtNCwgLTIsIC0zLCAtNSwgMCwgMSwgMCwgLTcsIC01LCAtMSwgMCwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMiwgMiwgMSwgLTMsIDMsIDEsIC0yLCA2LCAtMiwgLTIsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAtMywgMCwgLTIsIDEsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMiwgNSwgMiwgLTIsIDIsIDEsIC0yLCAtMSwgMCwgLTUsIC0xLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAtMiwgMiwgNiwgLTMsIDQsIDIsIC0zLCAtMywgLTIsIC0yLCAtMSwgMiwgLTMsIC0zLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAxLCAwLCAtNSwgMSwgMCwgLTIsIDAsIC0yLCAtMywgNSwgMCwgLTUsIC0xLCAwLCAwLCAtMywgLTQsIC0yLCAxLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMiwgLTMsIC01LCAtMSwgLTIsIC0zLCAtMiwgMiwgNCwgMCwgNiwgMCwgLTIsIC0yLCAtMSwgLTQsIC0yLCAyLCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgLTYsIC00LCAtNSwgLTUsIC01LCAtMiwgMSwgMiwgLTUsIDAsIDksIC01LCAtMywgLTMsIDAsIDcsIC0xLCAtNCwgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMCwgLTEsIC0zLCAwLCAtMSwgMCwgMCwgLTIsIC0zLCAtMSwgLTIsIC01LCA2LCAxLCAwLCAtNiwgLTUsIC0xLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEsIC0xLCAtMywgMCwgLTIsIC0zLCAxLCAyLCAxLCAtMiwgLTMsIC0xLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIDAsIC0yLCAtMSwgMCwgMCwgLTEsIDAsIC0yLCAwLCAtMSwgLTMsIDAsIDEsIDMsIC01LCAtMywgMCwgMCwgLTEsIDAsIC04XSxcbiAgICAgICAgICAgIFstNiwgMiwgLTQsIC03LCAtOCwgLTUsIC03LCAtNywgLTMsIC01LCAtMiwgLTMsIC00LCAwLCAtNiwgLTIsIC01LCAxNywgMCwgLTYsIC01LCAtNiwgLTQsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0yLCAtNCwgMCwgLTQsIC00LCAtNSwgMCwgLTEsIC0xLCAtNCwgLTIsIDcsIC01LCAtMywgLTMsIDAsIDEwLCAtMiwgLTMsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMiwgNCwgMiwgLTIsIDIsIC0xLCAtMSwgLTEsIDAsIC02LCAtMiwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCAzLCAtNCwgMSwgMywgMCwgMSwgLTIsIC0zLCAxLCAtMiwgLTQsIC0xLCAwLCAwLCAtNSwgLTMsIC0yLCAzLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDEsIDMsIC01LCAzLCAzLCAwLCAyLCAtMiwgLTMsIDAsIC0yLCAtNSwgMCwgMCwgLTEsIC02LCAtNCwgLTIsIDIsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDAsIDAsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5TQ0hORUlERVIgPSBbWzExLjYsIC0yLjcsIDkuNywgLTEuNywgLTIuNywgLTYuNCwgLTMuOSwgLTUuNiwgNS4xLCAtNS4wLCAzLjYsIC00LjIsIC02LjMsIC0xMy4wLCAtNy4xLCAtMTEuNSwgMC40LCAtNi4wLCAtMS45LCAtNS4zLCAtOC41LCAtMTEuMiwgLTguOSwgLTEwLjgsIDIuMSwgMC4wLCAxLjQsIDAuMiwgLTEwLjIsIC0xMy41LCAtMTMuMCwgLTEyLjUsIC0yLjYsIC04LjUsIC01LjAsIC04LjEsIC02LjMsIC05LjksIC03LjUsIC05LjAsIC03LjEsIC0xMC4yLCAtOC4yLCAtOS4yLCAtOC4yLCAtMTIuNSwgLTExLjEsIC0xMS40LCAtNTAuMCwgLTE0LjgsIC01MC4wLCAtMTMuOCwgLTcuMywgLTEwLjEsIC04LjQsIC05LjEsIC01MC4wLCAtMTMuMCwgLTEzLjUsIC0xMi40LCAtMTAuNywgLTE4LjEsIC0xMS44LCAtMTcuMixdLFxuICAgICAgICAgICAgWy0yLjcsIDEzLjAsIC0zLjMsIDEwLjksIC0zLjUsIC0wLjQsIC0zLjMsIC0xLjgsIC01LjQsIDQuNiwgLTUuNSwgMy4wLCAtMTAuMiwgLTcuOSwgLTkuOSwgLTkuNiwgLTUuMCwgMC41LCAtNS41LCAtMS4wLCAtMTAuMywgLTguMSwgLTkuNCwgLTkuNiwgLTguMSwgLTUuMCwgLTcuMywgLTYuMywgLTEzLjQsIC0xMS4zLCAtMTQuNCwgLTEyLjksIC02LjMsIDAuOCwgLTYuNCwgLTEuMSwgLTcuNCwgLTUuMCwgLTYuMiwgLTYuNSwgLTUuNiwgLTEuNiwgLTQuNywgLTMuMCwgLTEwLjgsIC04LjcsIC0xMS45LCAtMTAuMCwgLTUwLjAsIC02LjIsIC01MC4wLCAtNy41LCAtNi4zLCAtNC4zLCAtNi4yLCAtNS40LCAtNTAuMCwgLTcuMCwgLTE2LjMsIC04LjIsIC0xMy4yLCAtMTIuMywgLTEzLjEsIC0xMy4zLF0sXG4gICAgICAgICAgICBbOS43LCAtMy4zLCAxMS42LCAtMi44LCAtNC41LCAtNi43LCAtMy4xLCAtNi45LCAzLjMsIC01LjUsIDQuOCwgLTUuMSwgLTguOSwgLTEzLjIsIC01LjcsIC0xMi42LCAtMS41LCAtNi4xLCAtMC42LCAtNi4xLCAtMTAuMCwgLTExLjgsIC04LjYsIC0xMS45LCAxLjIsIDAuNSwgMi4yLCAwLjEsIC0xMS44LCAtMTQuMCwgLTExLjksIC0xMy40LCAtNC45LCAtOS4xLCAtMy40LCAtOC45LCAtOC4wLCAtMTAuMCwgLTcuMiwgLTEwLjAsIC05LjEsIC0xMC4yLCAtNy4xLCAtOS45LCAtMTAuMSwgLTEzLjAsIC0xMC42LCAtMTIuNywgLTUwLjAsIC0xNC45LCAtNTAuMCwgLTE0LjQsIC04LjksIC0xMC44LCAtOC45LCAtMTAuNCwgLTUwLjAsIC0xMy4xLCAtMTEuOCwgLTEzLjAsIC0xMi40LCAtMTkuNCwgLTExLjUsIC0xNy44LF0sXG4gICAgICAgICAgICBbLTEuNywgMTAuOSwgLTIuOCwgMTIuOSwgLTIuNywgLTIuMiwgLTIuOCwgMC4yLCAtNC44LCAyLjksIC01LjIsIDUuMiwgLTkuMSwgLTkuNSwgLTkuMCwgLTcuMCwgLTQuMCwgLTEuMCwgLTUuMCwgMS4wLCAtOS4wLCAtOC44LCAtOC45LCAtNy43LCAtNy4wLCAtNi44LCAtNy4xLCAtNC4zLCAtMTIuNCwgLTEyLjksIC0xMy45LCAtMTAuMCwgLTQuOSwgLTAuNywgLTUuNiwgMS40LCAtNi4wLCAtNi41LCAtNi4yLCAtNC44LCAtNS4xLCAtMy4yLCAtNS4wLCAtMS4yLCAtOS44LCAtOS45LCAtMTEuMywgLTguMiwgLTUwLjAsIC03LjYsIC01MC4wLCAtNS4xLCAtNS41LCAtNS44LCAtNS45LCAtNC4yLCAtNTAuMCwgLTguMywgLTE1LjUsIC01LjksIC0xMS42LCAtMTQuMiwgLTEyLjAsIC0xMS42LF0sXG4gICAgICAgICAgICBbLTIuNywgLTMuNSwgLTQuNSwgLTIuNywgMTEuNywgOS4wLCAxMC42LCA5LjYsIC0zLjIsIC0wLjcsIC01LjEsIC0wLjQsIDAuNywgLTQuNiwgLTAuNCwgLTMuNiwgLTQuOCwgLTguOSwgLTYuNSwgLTcuOCwgLTEuNCwgLTQuMSwgLTIuOSwgLTMuMywgLTguMCwgLTkuMSwgLTguMCwgLTguMiwgLTYuMCwgLTkuMywgLTcuNywgLTguNSwgLTYuNCwgLTEwLjEsIC03LjUsIC04LjYsIDIuOCwgLTAuNywgMC45LCAwLjEsIC01LjksIC03LjMsIC02LjUsIC02LjUsIC0wLjQsIC0zLjksIC0yLjYsIC0zLjEsIC01MC4wLCAtMTQuNiwgLTUwLjAsIC0xMi42LCAyLjksIDAuMSwgMS44LCAxLjAsIC01MC4wLCAtOS4yLCAtMTMuNiwgLTcuNywgLTQuOCwgLTEyLjIsIC02LjIsIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTYuNCwgLTAuNCwgLTYuNywgLTIuMiwgOS4wLCAxMi4zLCA5LjgsIDkuNiwgLTcuMSwgMi40LCAtNy4yLCAwLjMsIC0yLjksIC0xLjIsIC0zLjAsIC0zLjMsIC03LjYsIC02LjcsIC04LjEsIC03LjksIC00LjksIC0xLjksIC00LjUsIC0zLjgsIC05LjUsIC03LjgsIC05LjMsIC04LjksIC05LjQsIC03LjEsIC05LjAsIC05LjAsIC05LjQsIC03LjUsIC05LjMsIC05LjIsIC0wLjcsIDIuNiwgMC4yLCAtMC4xLCAtOC4wLCAtNC42LCAtNy43LCAtNi4xLCAtMy42LCAtMS4wLCAtNC4xLCAtMy4xLCAtNTAuMCwgLTExLjYsIC01MC4wLCAtMTEuNiwgMC4yLCAyLjMsIDAuNCwgMC41LCAtNTAuMCwgLTYuNSwgLTE1LjMsIC03LjgsIC04LjQsIC05LjUsIC04LjMsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTMuOSwgLTMuMywgLTMuMSwgLTIuOCwgMTAuNiwgOS44LCAxMi4yLCA5LjgsIC00LjksIDAuMSwgLTMuNiwgLTAuMiwgLTEuNywgLTQuMSwgMC45LCAtMy41LCAtNS45LCAtOC45LCAtNS42LCAtOC41LCAtMy45LCAtMy45LCAtMi4yLCAtNC41LCAtNy4zLCAtNy41LCAtNi40LCAtOC41LCAtNy4xLCAtOC4yLCAtNi43LCAtNy44LCAtNy45LCAtOS4xLCAtNy4xLCAtOS40LCAwLjksIC0wLjIsIDIuNSwgLTAuMywgLTYuOSwgLTYuNSwgLTUuNSwgLTYuOCwgLTEuNywgLTMuNCwgLTEuNywgLTIuOCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTExLjUsIDEuNSwgMC43LCAyLjcsIDAuNiwgLTUwLjAsIC04LjksIC0xMi4xLCAtNy40LCAtNi4xLCAtMTEuNSwgLTUuNCwgLTEwLjQsXSxcbiAgICAgICAgICAgIFstNS42LCAtMS44LCAtNi45LCAwLjIsIDkuNiwgOS42LCA5LjgsIDExLjYsIC02LjYsIDAuOSwgLTcuMiwgMi41LCAtMi4zLCAtMy40LCAtMi4zLCAtMC42LCAtNi41LCAtOC4yLCAtOC4wLCAtNi4zLCAtMy43LCAtMy41LCAtMy45LCAtMS42LCAtOS45LCAtOC45LCAtOS42LCAtNy4wLCAtOC42LCAtOC45LCAtOC44LCAtNi44LCAtOC42LCAtOC4yLCAtOC44LCAtNi44LCAwLjMsIDAuMSwgMC4yLCAyLjQsIC03LjQsIC02LjIsIC02LjksIC00LjQsIC0yLjksIC0yLjksIC0zLjUsIC0wLjksIC01MC4wLCAtMTIuMiwgLTUwLjAsIC0xMC4xLCAxLjIsIDAuNiwgMS4yLCAyLjQsIC01MC4wLCAtNy42LCAtMTYuMSwgLTUuOCwgLTcuMiwgLTEwLjgsIC03LjQsIC05LjAsXSxcbiAgICAgICAgICAgIFs1LjEsIC01LjQsIDMuMywgLTQuOCwgLTMuMiwgLTcuMSwgLTQuOSwgLTYuNiwgMTMuMywgLTIuOCwgMTEuMiwgLTEuOSwgLTUuNywgLTEyLjUsIC03LjIsIC0xMS42LCAtMC43LCAtNC44LCAtMy4xLCAtNC4zLCAtMTAuMCwgLTExLjYsIC04LjgsIC0xMS43LCAxMC41LCA3LjcsIDkuMSwgOC41LCAtOS44LCAtMTIuNywgLTExLjcsIC0xMS44LCAtNi4zLCAtMTEuNCwgLTguOCwgLTExLjAsIC03LjUsIC0xMC4zLCAtOC4zLCAtOS45LCAtMS45LCAtNi43LCAtNC4xLCAtNi40LCAtNy45LCAtMTIuNSwgLTExLjQsIC0xMS43LCAtNTAuMCwgLTE0LjAsIC01MC4wLCAtMTMuMiwgLTguNSwgLTEwLjQsIC05LjEsIC05LjYsIC01MC4wLCAtOS44LCAtNy43LCAtOC44LCAtMTAuMywgLTE3LjksIC0xMS44LCAtMTYuMCxdLFxuICAgICAgICAgICAgWy01LjAsIDQuNiwgLTUuNSwgMi45LCAtMC43LCAyLjQsIDAuMSwgMC45LCAtMi44LCAxMi44LCAtMi42LCAxMS4wLCAtOC40LCAtNi4zLCAtOC4zLCAtNy43LCAtNi4xLCAtMi45LCAtNi41LCAtNC4yLCAtOC41LCAtNS45LCAtNy41LCAtNy43LCAtNS41LCAtMi40LCAtNS41LCAtNC4xLCAtMTIuOSwgLTEwLjMsIC0xMi43LCAtMTEuMywgLTcuNCwgLTMuMSwgLTcuNCwgLTQuOSwgLTQuNCwgLTEuOCwgLTMuNSwgLTMuNSwgLTEuNiwgMy4wLCAtMC44LCAwLjksIC04LjQsIC02LjMsIC05LjYsIC03LjMsIC01MC4wLCAtOS4wLCAtNTAuMCwgLTkuNywgLTIuMywgLTAuMiwgLTEuMiwgLTEuNSwgLTUwLjAsIC0wLjcsIC0xMy4zLCAtMi4wLCAtMTEuOCwgLTExLjksIC0xMi4zLCAtMTIuNyxdLFxuICAgICAgICAgICAgWzMuNiwgLTUuNSwgNC44LCAtNS4yLCAtNS4xLCAtNy4yLCAtMy42LCAtNy4yLCAxMS4yLCAtMi42LCAxMy40LCAtMi4xLCAtNy43LCAtMTIuNSwgLTUuMywgLTExLjksIC0yLjIsIC00LjQsIC0xLjksIC00LjgsIC0xMC4yLCAtMTEuNSwgLTguMSwgLTEyLjAsIDkuMywgOC4yLCAxMC4wLCA4LjAsIC0xMC44LCAtMTEuOSwgLTEwLjcsIC0xMi40LCAtOC4yLCAtMTEuOCwgLTYuOSwgLTExLjUsIC04LjQsIC05LjksIC03LjEsIC0xMC42LCAtNC43LCAtNi44LCAtMS4yLCAtNy4wLCAtOS44LCAtMTEuNiwgLTkuNiwgLTEyLjEsIC01MC4wLCAtMTQuMSwgLTUwLjAsIC0xMi43LCAtMTAuMCwgLTEwLjgsIC04LjgsIC0xMC41LCAtNTAuMCwgLTkuMiwgLTQuMiwgLTkuMywgLTExLjAsIC0xOC4yLCAtMTEuMSwgLTE2LjEsXSxcbiAgICAgICAgICAgIFstNC4yLCAzLjAsIC01LjEsIDUuMiwgLTAuNCwgMC4zLCAtMC4yLCAyLjUsIC0xLjksIDExLjAsIC0yLjEsIDEzLjIsIC03LjYsIC04LjUsIC04LjAsIC01LjMsIC01LjYsIC00LjUsIC02LjgsIC0yLjQsIC03LjgsIC03LjksIC03LjksIC02LjIsIC01LjcsIC01LjEsIC01LjQsIC0yLjEsIC0xMi40LCAtMTIuMywgLTEzLjEsIC0xMC4xLCAtNi42LCAtNC40LCAtNi45LCAtMi42LCAtMy42LCAtMy44LCAtMy43LCAtMi4wLCAtMS40LCAwLjgsIC0wLjksIDMuMCwgLTguMiwgLTguMSwgLTkuMiwgLTUuOCwgLTUwLjAsIC0xMC4xLCAtNTAuMCwgLTcuNCwgLTEuNywgLTIuMCwgLTEuNSwgLTAuNSwgLTUwLjAsIC0yLjEsIC0xMi42LCAtMC40LCAtMTEuNiwgLTEzLjksIC0xMS40LCAtMTEuMSxdLFxuICAgICAgICAgICAgWy02LjMsIC0xMC4yLCAtOC45LCAtOS4xLCAwLjcsIC0yLjksIC0xLjcsIC0yLjMsIC01LjcsIC04LjQsIC03LjcsIC03LjYsIDEzLjIsIDkuNiwgMy41LCA5LjcsIC04LjcsIC0xMi40LCAtMTAuNywgLTEwLjcsIC03LjgsIC0xMC4yLCAtOC44LCAtOS42LCAtOS41LCAtMTEuOSwgLTEwLjksIC0xMC41LCAyLjMsIC0wLjQsIC0wLjIsIC0wLjMsIC05LjcsIC0xNS41LCAtMTEuNCwgLTEzLjcsIC0zLjAsIC02LjQsIC00LjEsIC01LjQsIC05LjYsIC0xMS45LCAtMTAuNSwgLTExLjgsIDYuMiwgMy4zLCAzLjcsIDMuNiwgLTUwLjAsIC0xMy42LCAtNTAuMCwgLTExLjksIC01LjYsIC04LjgsIC03LjIsIC04LjksIC01MC4wLCAtMTIuNCwgLTE0LjEsIC0xMS42LCAyLjgsIC02LjQsIDAuNSwgLTUuMixdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy45LCAtMTMuMiwgLTkuNSwgLTQuNiwgLTEuMiwgLTQuMSwgLTMuNCwgLTEyLjUsIC02LjMsIC0xMi41LCAtOC41LCA5LjYsIDEyLjcsIDAuMiwgMTAuNSwgLTEyLjQsIC0xMS42LCAtMTMuMiwgLTEyLjAsIC0xMi40LCAtMTAuMSwgLTExLjYsIC0xMi4wLCAtMTUuMSwgLTEzLjEsIC0xNC4zLCAtMTMuNCwgLTEuNCwgMS40LCAtMS42LCAtMC41LCAtMTQuOSwgLTE0LjMsIC0xNS4yLCAtMTYuOCwgLTcuNywgLTQuNywgLTYuMywgLTYuNiwgLTE0LjYsIC0xMC44LCAtMTIuOCwgLTEzLjAsIDIuMywgNi4wLCAyLjUsIDMuNiwgLTUwLjAsIC0xMS4yLCAtNTAuMCwgLTExLjksIC0xMC41LCAtOS4yLCAtMTAuNSwgLTEwLjUsIC01MC4wLCAtMTAuMywgLTE2LjIsIC0xMS4zLCAtMS43LCAtMy43LCAtMi41LCAtNS40LF0sXG4gICAgICAgICAgICBbLTcuMSwgLTkuOSwgLTUuNywgLTkuMCwgLTAuNCwgLTMuMCwgMC45LCAtMi4zLCAtNy4yLCAtOC4zLCAtNS4zLCAtOC4wLCAzLjUsIDAuMiwgMTQuMywgMS4wLCAtNy4zLCAtMTEuMiwgLTYuOSwgLTkuNywgLTguNSwgLTEwLjIsIC03LjcsIC05LjgsIC0xMC4wLCAtMTAuNCwgLTguNCwgLTEwLjIsIDEuMCwgLTAuNiwgMS43LCAtMC41LCAtMTEuMSwgLTE0LjgsIC05LjcsIC0xNC41LCAtMy43LCAtNS44LCAtMy4xLCAtNS42LCAtMTAuNCwgLTExLjUsIC04LjIsIC0xMS4xLCAwLjYsIC0xLjYsIDEuNiwgLTEuMSwgLTUwLjAsIC0xMi40LCAtNTAuMCwgLTExLjUsIC01LjUsIC04LjAsIC00LjksIC03LjIsIC01MC4wLCAtMTIuNCwgLTEwLjMsIC0xMS42LCAwLjcsIC02LjgsIDIuNCwgLTYuMCxdLFxuICAgICAgICAgICAgWy0xMS41LCAtOS42LCAtMTIuNiwgLTcuMCwgLTMuNiwgLTMuMywgLTMuNSwgLTAuNiwgLTExLjYsIC03LjcsIC0xMS45LCAtNS4zLCA5LjcsIDEwLjUsIDEuMCwgMTIuNiwgLTEyLjAsIC0xMi4yLCAtMTIuNSwgLTkuNywgLTExLjEsIC0xMS4yLCAtMTEuOSwgLTkuNCwgLTEyLjksIC0xNC4zLCAtMTQuMCwgLTExLjksIC0xLjAsIC0wLjQsIC0xLjYsIDEuMiwgLTEzLjksIC0xNS40LCAtMTMuNywgLTEyLjYsIC02LjIsIC02LjcsIC02LjMsIC00LjQsIC0xMy4wLCAtMTIuMiwgLTEzLjAsIC0xMC40LCAyLjksIDMuOCwgMi41LCA1LjgsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC0xMC4yLCAtOS42LCAtOS43LCAtOS42LCAtOC4zLCAtNTAuMCwgLTExLjYsIC0xNS40LCAtOS40LCAtMS4xLCAtNS40LCAtMS42LCAtMy4zLF0sXG4gICAgICAgICAgICBbMC40LCAtNS4wLCAtMS41LCAtNC4wLCAtNC44LCAtNy42LCAtNS45LCAtNi41LCAtMC43LCAtNi4xLCAtMi4yLCAtNS42LCAtOC43LCAtMTIuNCwgLTcuMywgLTEyLjAsIDEyLjgsIDIuMywgMTAuMiwgMy4wLCAwLjAsIC0zLjQsIC0wLjcsIC0zLjIsIDIuNSwgLTAuOCwgMC45LCAwLjIsIC0zLjAsIC03LjIsIC01LjcsIC02LjEsIC0wLjIsIC02LjYsIC0xLjgsIC02LjAsIC01LjMsIC04LjIsIC01LjcsIC03LjYsIC02LjcsIC05LjYsIC03LjUsIC05LjMsIC03LjEsIC0xMC41LCAtOS42LCAtOS40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjIsIC00LjMsIC02LjgsIC01LjcsIC02LjMsIC01MC4wLCAtOS41LCAtOS42LCAtOC45LCAtNi4yLCAtMTIuOCwgLTYuOCwgLTExLjgsXSxcbiAgICAgICAgICAgIFstNi4wLCAwLjUsIC02LjEsIC0xLjAsIC04LjksIC02LjcsIC04LjksIC04LjIsIC00LjgsIC0yLjksIC00LjQsIC00LjUsIC0xMi40LCAtMTEuNiwgLTExLjIsIC0xMi4yLCAyLjMsIDE0LjYsIDEuOSwgMTIuOSwgLTUuNSwgLTIuNiwgLTQuMSwgLTQuNywgLTEuMiwgMy4wLCAtMS4xLCAxLjYsIC04LjAsIC00LjcsIC04LjcsIC02LjAsIC04LjIsIC00LjcsIC03LjgsIC02LjcsIC0xMC4wLCAtOC4zLCAtOC45LCAtOS45LCAtMTAuOCwgLTcuMSwgLTEwLjAsIC05LjIsIC0xMS42LCAtMTAuMSwgLTEyLjMsIC0xMS45LCAtNTAuMCwgMi4yLCAtNTAuMCwgMC45LCAtNy45LCAtNS45LCAtNy40LCAtNi45LCAtNTAuMCwgLTQuNiwgLTExLjYsIC01LjYsIC05LjcsIC01LjksIC05LjksIC03LjMsXSxcbiAgICAgICAgICAgIFstMS45LCAtNS41LCAtMC42LCAtNS4wLCAtNi41LCAtOC4xLCAtNS42LCAtOC4wLCAtMy4xLCAtNi41LCAtMS45LCAtNi44LCAtMTAuNywgLTEzLjIsIC02LjksIC0xMi41LCAxMC4yLCAxLjksIDExLjksIDIuMSwgLTIuMywgLTQuMSwgLTAuNSwgLTQuNiwgLTAuMSwgLTAuOSwgMi40LCAtMC44LCAtNS4xLCAtNi45LCAtNC44LCAtNi43LCAtMi4zLCAtNy4xLCAtMC44LCAtNy4yLCAtNy4yLCAtOC4wLCAtNS42LCAtOC41LCAtOS40LCAtOS43LCAtNy4yLCAtOS44LCAtOS4yLCAtMTEuMSwgLTkuNSwgLTEwLjcsIC01MC4wLCAtOC43LCAtNTAuMCwgLTguNiwgLTYuMSwgLTcuNSwgLTUuNSwgLTcuNywgLTUwLjAsIC0xMC40LCAtNy43LCAtMTAuMCwgLTcuMywgLTEzLjYsIC02LjQsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTUuMywgLTEuMCwgLTYuMSwgMS4wLCAtNy44LCAtNy45LCAtOC41LCAtNi4zLCAtNC4zLCAtNC4yLCAtNC44LCAtMi40LCAtMTAuNywgLTEyLjAsIC05LjcsIC05LjcsIDMuMCwgMTIuOSwgMi4xLCAxNC43LCAtNC45LCAtMy44LCAtNC4wLCAtMi40LCAtMS4wLCAwLjgsIC0xLjMsIDMuNCwgLTcuNiwgLTUuNywgLTguMSwgLTMuNSwgLTYuOCwgLTUuOCwgLTcuMiwgLTQuMiwgLTguOSwgLTEwLjIsIC04LjQsIC04LjIsIC05LjksIC04LjQsIC05LjcsIC02LjQsIC0xMS4xLCAtMTEuMSwgLTExLjgsIC0xMC4wLCAtNTAuMCwgMC40LCAtNTAuMCwgMi42LCAtNy4yLCAtNy4wLCAtNy40LCAtNS4xLCAtNTAuMCwgLTUuNywgLTkuOCwgLTMuMiwgLTguNCwgLTcuNCwgLTguOSwgLTUuOSxdLFxuICAgICAgICAgICAgWy04LjUsIC0xMC4zLCAtMTAuMCwgLTkuMCwgLTEuNCwgLTQuOSwgLTMuOSwgLTMuNywgLTEwLjAsIC04LjUsIC0xMC4yLCAtNy44LCAtNy44LCAtMTIuNCwgLTguNSwgLTExLjEsIDAuMCwgLTUuNSwgLTIuMywgLTQuOSwgMTIuNiwgMTAuMCwgMTEuMSwgMTAuNSwgLTYuMCwgLTguMywgLTYuOSwgLTcuNSwgLTIuMiwgLTcuNCwgLTUuMywgLTUuOSwgLTguOSwgLTEyLjUsIC05LjQsIC0xMS42LCAtMC43LCAtMy45LCAtMi4zLCAtMy4wLCAtOS4xLCAtOS44LCAtOS4yLCAtOS41LCAtNS42LCAtOS4wLCAtOC4wLCAtOC41LCAtNTAuMCwgLTE1LjMsIC01MC4wLCAtMTQuMSwgMi4zLCAtMS40LCAwLjMsIC0wLjUsIC01MC4wLCAtMTMuNiwgLTE0LjMsIC0xMS41LCAtNS4zLCAtMTMuNywgLTYuMSwgLTEyLjcsXSxcbiAgICAgICAgICAgIFstMTEuMiwgLTguMSwgLTExLjgsIC04LjgsIC00LjEsIC0xLjksIC0zLjksIC0zLjUsIC0xMS42LCAtNS45LCAtMTEuNSwgLTcuOSwgLTEwLjIsIC0xMC4xLCAtMTAuMiwgLTExLjIsIC0zLjQsIC0yLjYsIC00LjEsIC0zLjgsIDEwLjAsIDEzLjEsIDEwLjcsIDEwLjYsIC04LjEsIC01LjIsIC04LjAsIC02LjcsIC02LjEsIC0zLjcsIC03LjUsIC01LjYsIC0xMS4xLCAtMTAuMywgLTEwLjYsIC0xMS45LCAtMy4yLCAtMS4wLCAtMi4yLCAtMi44LCAtMTAuNSwgLTguMSwgLTkuNCwgLTkuNSwgLTguMywgLTYuOSwgLTkuNCwgLTguOCwgLTUwLjAsIC0xMS4zLCAtNTAuMCwgLTEyLjgsIC0wLjYsIDIuMiwgLTAuMywgMC4xLCAtNTAuMCwgLTEwLjEsIC0xNy41LCAtMTEuMSwgLTguNiwgLTkuOSwgLTguNiwgLTExLjksXSxcbiAgICAgICAgICAgIFstOC45LCAtOS40LCAtOC42LCAtOC45LCAtMi45LCAtNC41LCAtMi4yLCAtMy45LCAtOC44LCAtNy41LCAtOC4xLCAtNy45LCAtOC44LCAtMTEuNiwgLTcuNywgLTExLjksIC0wLjcsIC00LjEsIC0wLjUsIC00LjAsIDExLjEsIDEwLjcsIDEzLjIsIDEwLjQsIC01LjcsIC01LjgsIC0zLjUsIC02LjEsIC0zLjYsIC02LjUsIC0zLjMsIC01LjUsIC05LjQsIC0xMS4wLCAtOC43LCAtMTEuMiwgLTEuOCwgLTIuNywgMC43LCAtMy4wLCAtOS4xLCAtOC4yLCAtNy4zLCAtOS40LCAtNy4yLCAtOC4yLCAtNy4yLCAtOC4yLCAtNTAuMCwgLTEzLjIsIC01MC4wLCAtMTMuMywgMC41LCAtMC45LCAxLjgsIC0wLjYsIC01MC4wLCAtMTEuNCwgLTExLjEsIC0xMC41LCAtNi4xLCAtMTIuOSwgLTUuMCwgLTExLjksXSxcbiAgICAgICAgICAgIFstMTAuOCwgLTkuNiwgLTExLjksIC03LjcsIC0zLjMsIC0zLjgsIC00LjUsIC0xLjYsIC0xMS43LCAtNy43LCAtMTIuMCwgLTYuMiwgLTkuNiwgLTEyLjAsIC05LjgsIC05LjQsIC0zLjIsIC00LjcsIC00LjYsIC0yLjQsIDEwLjUsIDEwLjYsIDEwLjQsIDEyLjYsIC04LjIsIC03LjksIC05LjAsIC00LjcsIC02LjEsIC02LjAsIC03LjUsIC0yLjksIC0xMC45LCAtMTIuMiwgLTExLjIsIC0xMC45LCAtMi40LCAtMi45LCAtMi43LCAtMC45LCAtMTAuNCwgLTkuNywgLTEwLjIsIC04LjAsIC04LjQsIC05LjEsIC05LjMsIC02LjUsIC01MC4wLCAtMTMuMywgLTUwLjAsIC0xMS4wLCAtMC4wLCAtMC40LCAtMC40LCAyLjMsIC01MC4wLCAtMTAuOSwgLTE3LjIsIC04LjMsIC04LjMsIC0xMi43LCAtNy44LCAtOS4zLF0sXG4gICAgICAgICAgICBbMi4xLCAtOC4xLCAxLjIsIC03LjAsIC04LjAsIC05LjUsIC03LjMsIC05LjksIDEwLjUsIC01LjUsIDkuMywgLTUuNywgLTkuNSwgLTE1LjEsIC0xMC4wLCAtMTIuOSwgMi41LCAtMS4yLCAtMC4xLCAtMS4wLCAtNi4wLCAtOC4xLCAtNS43LCAtOC4yLCAxMy44LCAxMS4zLCAxMS44LCAxMi4xLCAtNi4wLCAtOS4xLCAtOS4wLCAtOS41LCAtOC45LCAtMTMuNCwgLTEwLjAsIC0xMy4xLCAtOS45LCAtMTEuNywgLTkuOCwgLTEyLjgsIC01LjksIC05LjQsIC02LjUsIC04LjEsIC0xMC43LCAtMTQuMCwgLTEzLjMsIC0xMy45LCAtNTAuMCwgLTExLjksIC01MC4wLCAtOS43LCAtOC45LCAtMTAuOCwgLTkuMCwgLTExLjEsIC01MC4wLCAtNi41LCAtNS4zLCAtNi4zLCAtMTAuNSwgLTE2LjIsIC0xMC40LCAtMTUuMixdLFxuICAgICAgICAgICAgWzAuMCwgLTUuMCwgMC41LCAtNi44LCAtOS4xLCAtNy44LCAtNy41LCAtOC45LCA3LjcsIC0yLjQsIDguMiwgLTUuMSwgLTExLjksIC0xMy4xLCAtMTAuNCwgLTE0LjMsIC0wLjgsIDMuMCwgLTAuOSwgMC44LCAtOC4zLCAtNS4yLCAtNS44LCAtNy45LCAxMS4zLCAxNS4wLCAxMS4yLCAxMi44LCAtOS43LCAtNS4zLCAtOS4yLCAtNy44LCAtMTEuNywgLTEwLjYsIC0xMC4xLCAtMTIuMiwgLTExLjcsIC04LjgsIC04LjksIC0xMS44LCAtOS4zLCAtNS4wLCAtOC4wLCAtOC4yLCAtMTMuNiwgLTExLjQsIC0xMi44LCAtMTMuMCwgLTUwLjAsIC03LjIsIC01MC4wLCAtOC40LCAtMTEuMCwgLTcuNywgLTguNywgLTEwLjIsIC01MC4wLCAtMS41LCAtNy4xLCAtNC45LCAtMTEuMiwgLTExLjYsIC0xMS42LCAtMTUuMCxdLFxuICAgICAgICAgICAgWzEuNCwgLTcuMywgMi4yLCAtNy4xLCAtOC4wLCAtOS4zLCAtNi40LCAtOS42LCA5LjEsIC01LjUsIDEwLjAsIC01LjQsIC0xMC45LCAtMTQuMywgLTguNCwgLTE0LjAsIDAuOSwgLTEuMSwgMi40LCAtMS4zLCAtNi45LCAtOC4wLCAtMy41LCAtOS4wLCAxMS44LCAxMS4yLCAxMy40LCAxMS40LCAtNy4zLCAtOC44LCAtNi41LCAtOC41LCAtMTAuMCwgLTEyLjUsIC03LjgsIC0xMi41LCAtOS42LCAtMTEuMCwgLTcuMSwgLTEwLjcsIC03LjksIC04LjAsIC00LjMsIC05LjQsIC0xMS40LCAtMTIuMywgLTEwLjksIC0xMi45LCAtNTAuMCwgLTExLjgsIC01MC4wLCAtMTEuMiwgLTkuNCwgLTkuOCwgLTcuMywgLTEwLjUsIC01MC4wLCAtNi4yLCAtMi4yLCAtNi43LCAtOS44LCAtMTUuMiwgLTguNSwgLTE0LjksXSxcbiAgICAgICAgICAgIFswLjIsIC02LjMsIDAuMSwgLTQuMywgLTguMiwgLTguOSwgLTguNSwgLTcuMCwgOC41LCAtNC4xLCA4LjAsIC0yLjEsIC0xMC41LCAtMTMuNCwgLTEwLjIsIC0xMS45LCAwLjIsIDEuNiwgLTAuOCwgMy40LCAtNy41LCAtNi43LCAtNi4xLCAtNC43LCAxMi4xLCAxMi44LCAxMS40LCAxNC43LCAtOC43LCAtNy40LCAtOS40LCAtNS4zLCAtOS45LCAtMTEuOCwgLTEwLjUsIC0xMC4zLCAtOS45LCAtMTAuMSwgLTkuMywgLTkuMywgLTguMSwgLTcuMiwgLTguMCwgLTUuMiwgLTEyLjAsIC0xMi4xLCAtMTIuNiwgLTEwLjksIC01MC4wLCAtNy45LCAtNTAuMCwgLTUuMywgLTkuMywgLTguOCwgLTguOSwgLTcuMCwgLTUwLjAsIC0zLjYsIC03LjEsIC0xLjIsIC0xMC4yLCAtMTIuNywgLTkuOSwgLTExLjAsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEzLjQsIC0xMS44LCAtMTIuNCwgLTYuMCwgLTkuNCwgLTcuMSwgLTguNiwgLTkuOCwgLTEyLjksIC0xMC44LCAtMTIuNCwgMi4zLCAtMS40LCAxLjAsIC0xLjAsIC0zLjAsIC04LjAsIC01LjEsIC03LjYsIC0yLjIsIC02LjEsIC0zLjYsIC02LjEsIC02LjAsIC05LjcsIC03LjMsIC04LjcsIDExLjIsIDcuOSwgOC45LCA4LjEsIC0xMi4xLCAtMTcuNCwgLTEzLjIsIC0xNi44LCAtNi4zLCAtOS41LCAtNy41LCAtOC44LCAtMTIuNywgLTE1LjIsIC0xMy4xLCAtMTQuMiwgMC4wLCAtMy4xLCAtMS44LCAtMy4xLCAtNTAuMCwgLTEwLjcsIC01MC4wLCAtOS4zLCAtNC42LCAtOC45LCAtNS45LCAtOC4zLCAtNTAuMCwgLTEyLjgsIC05LjYsIC0xMC42LCA5LjUsIC0zLjIsIDguMiwgLTIuOCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTEuMywgLTE0LjAsIC0xMi45LCAtOS4zLCAtNy4xLCAtOC4yLCAtOC45LCAtMTIuNywgLTEwLjMsIC0xMS45LCAtMTIuMywgLTAuNCwgMS40LCAtMC42LCAtMC40LCAtNy4yLCAtNC43LCAtNi45LCAtNS43LCAtNy40LCAtMy43LCAtNi41LCAtNi4wLCAtOS4xLCAtNS4zLCAtOC44LCAtNy40LCA3LjksIDExLjksIDcuOCwgOS4zLCAtMTUuMiwgLTE1LjEsIC0xNC42LCAtMTcuMiwgLTkuNywgLTcuMywgLTguMiwgLTkuMiwgLTE1LjAsIC0xMi44LCAtMTQuMSwgLTE0LjksIC0yLjgsIDAuMiwgLTIuOSwgLTIuMywgLTUwLjAsIC03LjQsIC01MC4wLCAtOC43LCAtOS40LCAtNy4zLCAtOS40LCAtOS40LCAtNTAuMCwgLTguMCwgLTExLjksIC05LjcsIDYuNSwgMC41LCA2LjQsIC0xLjgsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTE0LjQsIC0xMS45LCAtMTMuOSwgLTcuNywgLTkuMCwgLTYuNywgLTguOCwgLTExLjcsIC0xMi43LCAtMTAuNywgLTEzLjEsIC0wLjIsIC0xLjYsIDEuNywgLTEuNiwgLTUuNywgLTguNywgLTQuOCwgLTguMSwgLTUuMywgLTcuNSwgLTMuMywgLTcuNSwgLTkuMCwgLTkuMiwgLTYuNSwgLTkuNCwgOC45LCA3LjgsIDEwLjEsIDcuOCwgLTE0LjMsIC0xNy43LCAtMTMuMCwgLTE3LjgsIC04LjAsIC05LjQsIC02LjIsIC05LjIsIC0xNS4xLCAtMTQuOSwgLTEyLjIsIC0xNC45LCAtMS44LCAtMy4yLCAtMC44LCAtMy4yLCAtNTAuMCwgLTEwLjgsIC01MC4wLCAtOS45LCAtNy4zLCAtOS42LCAtNi40LCAtOS40LCAtNTAuMCwgLTEyLjMsIC04LjcsIC0xMS4zLCA3LjYsIC0zLjMsIDguNywgLTIuOSxdLFxuICAgICAgICAgICAgWy0xMi41LCAtMTIuOSwgLTEzLjQsIC0xMC4wLCAtOC41LCAtOS4wLCAtNy44LCAtNi44LCAtMTEuOCwgLTExLjMsIC0xMi40LCAtMTAuMSwgLTAuMywgLTAuNSwgLTAuNSwgMS4yLCAtNi4xLCAtNi4wLCAtNi43LCAtMy41LCAtNS45LCAtNS42LCAtNS41LCAtMi45LCAtOS41LCAtNy44LCAtOC41LCAtNS4zLCA4LjEsIDkuMywgNy44LCAxMS44LCAtMTQuNCwgLTE1LjcsIC0xNC41LCAtMTQuNiwgLTguNCwgLTguNywgLTcuOSwgLTcuMSwgLTE0LjMsIC0xMy44LCAtMTMuOCwgLTEyLjMsIC0yLjQsIC0yLjIsIC0yLjksIC0wLjIsIC01MC4wLCAtOC45LCAtNTAuMCwgLTcuMSwgLTguMSwgLTkuMSwgLTguNywgLTYuNiwgLTUwLjAsIC05LjcsIC0xMS40LCAtOC4wLCA2LjgsIC0xLjgsIDYuOSwgMC40LF0sXG4gICAgICAgICAgICBbLTIuNiwgLTYuMywgLTQuOSwgLTQuOSwgLTYuNCwgLTkuNCwgLTcuOSwgLTguNiwgLTYuMywgLTcuNCwgLTguMiwgLTYuNiwgLTkuNywgLTE0LjksIC0xMS4xLCAtMTMuOSwgLTAuMiwgLTguMiwgLTIuMywgLTYuOCwgLTguOSwgLTExLjEsIC05LjQsIC0xMC45LCAtOC45LCAtMTEuNywgLTEwLjAsIC05LjksIC0xMi4xLCAtMTUuMiwgLTE0LjMsIC0xNC40LCAxMS4xLCAyLjksIDkuMiwgMy41LCAtMy4wLCAtNy4wLCAtNC4zLCAtNi4yLCAtMi4yLCAtNi42LCAtMy43LCAtNS43LCAtNi4wLCAtMTAuNCwgLTguNiwgLTkuNSwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTEzLjksIC03LjgsIC0xMC41LCAtOC43LCAtOS42LCAtNTAuMCwgLTE2LjUsIC0xNy4xLCAtMTQuOCwgLTEyLjEsIC0xOC45LCAtMTIuNCwgLTE3LjQsXSxcbiAgICAgICAgICAgIFstOC41LCAwLjgsIC05LjEsIC0wLjcsIC0xMC4xLCAtNy41LCAtOS4xLCAtOC4yLCAtMTEuNCwgLTMuMSwgLTExLjgsIC00LjQsIC0xNS41LCAtMTQuMywgLTE0LjgsIC0xNS40LCAtNi42LCAtNC43LCAtNy4xLCAtNS44LCAtMTIuNSwgLTEwLjMsIC0xMS4wLCAtMTIuMiwgLTEzLjQsIC0xMC42LCAtMTIuNSwgLTExLjgsIC0xNy40LCAtMTUuMSwgLTE3LjcsIC0xNS43LCAyLjksIDEyLjUsIDMuMSwgMTAuMywgLTcuNywgLTUuMiwgLTYuMiwgLTcuMywgLTUuNCwgLTEuNywgLTUuNCwgLTMuNywgLTExLjYsIC05LjEsIC0xMy4wLCAtMTAuOCwgLTUwLjAsIC0xMC4zLCAtNTAuMCwgLTExLjIsIC05LjgsIC04LjMsIC05LjEsIC05LjcsIC01MC4wLCAtMTIuNywgLTIwLjYsIC0xMy4xLCAtMTYuMCwgLTE2LjYsIC0xNy4wLCAtMTguNCxdLFxuICAgICAgICAgICAgWy01LjAsIC02LjQsIC0zLjQsIC01LjYsIC03LjUsIC05LjMsIC03LjEsIC04LjgsIC04LjgsIC03LjQsIC02LjksIC02LjksIC0xMS40LCAtMTUuMiwgLTkuNywgLTEzLjcsIC0xLjgsIC03LjgsIC0wLjgsIC03LjIsIC05LjQsIC0xMC42LCAtOC43LCAtMTEuMiwgLTEwLjAsIC0xMC4xLCAtNy44LCAtMTAuNSwgLTEzLjIsIC0xNC42LCAtMTMuMCwgLTE0LjUsIDkuMiwgMy4xLCAxMC44LCAzLjAsIC00LjUsIC02LjcsIC0yLjcsIC02LjcsIC01LjAsIC02LjgsIC0yLjUsIC02LjcsIC03LjUsIC0xMC40LCAtNy40LCAtMTAuMiwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTE0LjIsIC04LjksIC0xMC4yLCAtOC41LCAtMTAuMCwgLTUwLjAsIC0xNS42LCAtMTUuMywgLTE1LjUsIC0xMy4wLCAtMTguOCwgLTEyLjYsIC0xOC4zLF0sXG4gICAgICAgICAgICBbLTguMSwgLTEuMSwgLTguOSwgMS40LCAtOC42LCAtOS4yLCAtOS40LCAtNi44LCAtMTEuMCwgLTQuOSwgLTExLjUsIC0yLjYsIC0xMy43LCAtMTYuOCwgLTE0LjUsIC0xMi42LCAtNi4wLCAtNi43LCAtNy4yLCAtNC4yLCAtMTEuNiwgLTExLjksIC0xMS4yLCAtMTAuOSwgLTEzLjEsIC0xMi4yLCAtMTIuNSwgLTEwLjMsIC0xNi44LCAtMTcuMiwgLTE3LjgsIC0xNC42LCAzLjUsIDEwLjMsIDMuMCwgMTIuNCwgLTYuOSwgLTcuNSwgLTYuOCwgLTQuOSwgLTUuNCwgLTQuMiwgLTUuNCwgLTEuMywgLTEwLjgsIC0xMS41LCAtMTIuNCwgLTguMiwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTguOSwgLTkuMiwgLTEwLjAsIC05LjQsIC03LjksIC01MC4wLCAtMTQuMywgLTE5LjksIC0xMS40LCAtMTYuMiwgLTE5LjIsIC0xNS44LCAtMTUuOSxdLFxuICAgICAgICAgICAgWy02LjMsIC03LjQsIC04LjAsIC02LjAsIDIuOCwgLTAuNywgMC45LCAwLjMsIC03LjUsIC00LjQsIC04LjQsIC0zLjYsIC0zLjAsIC03LjcsIC0zLjcsIC02LjIsIC01LjMsIC0xMC4wLCAtNy4yLCAtOC45LCAtMC43LCAtMy4yLCAtMS44LCAtMi40LCAtOS45LCAtMTEuNywgLTkuNiwgLTkuOSwgLTYuMywgLTkuNywgLTguMCwgLTguNCwgLTMuMCwgLTcuNywgLTQuNSwgLTYuOSwgMTEuMywgOC4yLCA5LjQsIDkuMSwgLTEuMCwgLTMuMywgLTEuOCwgLTIuNCwgMS41LCAtMi4xLCAtMC40LCAtMS4xLCAtNTAuMCwgLTE0LjUsIC01MC4wLCAtMTIuOSwgMi44LCAtMC4wLCAxLjQsIDAuNywgLTUwLjAsIC04LjcsIC0xNC4xLCAtNy41LCAtNS4yLCAtMTIuNSwgLTYuNSwgLTEwLjcsXSxcbiAgICAgICAgICAgIFstOS45LCAtNS4wLCAtMTAuMCwgLTYuNSwgLTAuNywgMi42LCAtMC4yLCAwLjEsIC0xMC4zLCAtMS44LCAtOS45LCAtMy44LCAtNi40LCAtNC43LCAtNS44LCAtNi43LCAtOC4yLCAtOC4zLCAtOC4wLCAtMTAuMiwgLTMuOSwgLTEuMCwgLTIuNywgLTIuOSwgLTExLjcsIC04LjgsIC0xMS4wLCAtMTAuMSwgLTkuNSwgLTcuMywgLTkuNCwgLTguNywgLTcuMCwgLTUuMiwgLTYuNywgLTcuNSwgOC4yLCAxMS42LCA4LjgsIDkuMSwgLTMuNywgLTAuOSwgLTMuMSwgLTMuMCwgLTIuMCwgMS4yLCAtMi4zLCAtMS4zLCAtNTAuMCwgLTEyLjEsIC01MC4wLCAtMTIuNiwgMC4xLCAyLjUsIDAuNywgMC42LCAtNTAuMCwgLTYuMCwgLTE0LjgsIC03LjUsIC04LjYsIC05LjQsIC04LjUsIC0xMS4yLF0sXG4gICAgICAgICAgICBbLTcuNSwgLTYuMiwgLTcuMiwgLTYuMiwgMC45LCAwLjIsIDIuNSwgMC4yLCAtOC4zLCAtMy41LCAtNy4xLCAtMy43LCAtNC4xLCAtNi4zLCAtMy4xLCAtNi4zLCAtNS43LCAtOC45LCAtNS42LCAtOC40LCAtMi4zLCAtMi4yLCAwLjcsIC0yLjcsIC05LjgsIC04LjksIC03LjEsIC05LjMsIC03LjUsIC04LjIsIC02LjIsIC03LjksIC00LjMsIC02LjIsIC0yLjcsIC02LjgsIDkuNCwgOC44LCAxMi4xLCA4LjgsIC0yLjEsIC0yLjAsIDAuMSwgLTIuNCwgMC4wLCAtMS4xLCAxLjMsIC0wLjgsIC01MC4wLCAtMTEuOSwgLTUwLjAsIC0xMi42LCAxLjIsIDAuNywgMy41LCAwLjgsIC01MC4wLCAtNy4xLCAtMTIuNCwgLTcuMSwgLTcuMSwgLTEwLjYsIC01LjAsIC0xMC42LF0sXG4gICAgICAgICAgICBbLTkuMCwgLTYuNSwgLTEwLjAsIC00LjgsIDAuMSwgLTAuMSwgLTAuMywgMi40LCAtOS45LCAtMy41LCAtMTAuNiwgLTIuMCwgLTUuNCwgLTYuNiwgLTUuNiwgLTQuNCwgLTcuNiwgLTkuOSwgLTguNSwgLTguMiwgLTMuMCwgLTIuOCwgLTMuMCwgLTAuOSwgLTEyLjgsIC0xMS44LCAtMTAuNywgLTkuMywgLTguOCwgLTkuMiwgLTkuMiwgLTcuMSwgLTYuMiwgLTcuMywgLTYuNywgLTQuOSwgOS4xLCA5LjEsIDguOCwgMTEuMiwgLTMuMSwgLTMuMCwgLTMuMywgLTEuMCwgLTEuMSwgLTEuNCwgLTIuMCwgMS4yLCAtNTAuMCwgLTEyLjgsIC01MC4wLCAtMTAuOSwgMC44LCAwLjUsIDAuNywgMi4zLCAtNTAuMCwgLTcuNSwgLTE2LjUsIC01LjksIC03LjgsIC0xMS4xLCAtNy44LCAtOS4wLF0sXG4gICAgICAgICAgICBbLTcuMSwgLTUuNiwgLTkuMSwgLTUuMSwgLTUuOSwgLTguMCwgLTYuOSwgLTcuNCwgLTEuOSwgLTEuNiwgLTQuNywgLTEuNCwgLTkuNiwgLTE0LjYsIC0xMC40LCAtMTMuMCwgLTYuNywgLTEwLjgsIC05LjQsIC05LjksIC05LjEsIC0xMC41LCAtOS4xLCAtMTAuNCwgLTUuOSwgLTkuMywgLTcuOSwgLTguMSwgLTEyLjcsIC0xNS4wLCAtMTUuMSwgLTE0LjMsIC0yLjIsIC01LjQsIC01LjAsIC01LjQsIC0xLjAsIC0zLjcsIC0yLjEsIC0zLjEsIDEyLjgsIDkuNiwgMTEuMSwgMTAuMSwgLTQuOCwgLTkuNCwgLTguMSwgLTguNiwgLTUwLjAsIC0xOC4zLCAtNTAuMCwgLTE1LjQsIC01LjksIC03LjUsIC02LjYsIC03LjEsIC01MC4wLCAtOS41LCAtMTEuNywgLTguNCwgLTEyLjUsIC0xNy4zLCAtMTMuMiwgLTE1LjQsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEuNiwgLTEwLjIsIC0zLjIsIC03LjMsIC00LjYsIC02LjUsIC02LjIsIC02LjcsIDMuMCwgLTYuOCwgMC44LCAtMTEuOSwgLTEwLjgsIC0xMS41LCAtMTIuMiwgLTkuNiwgLTcuMSwgLTkuNywgLTguNCwgLTkuOCwgLTguMSwgLTguMiwgLTkuNywgLTkuNCwgLTUuMCwgLTguMCwgLTcuMiwgLTE1LjIsIC0xMi44LCAtMTQuOSwgLTEzLjgsIC02LjYsIC0xLjcsIC02LjgsIC00LjIsIC0zLjMsIC0wLjksIC0yLjAsIC0zLjAsIDkuNiwgMTIuOCwgOS43LCAxMC41LCAtOC41LCAtNS42LCAtOS4zLCAtNy44LCAtNTAuMCwgLTEyLjcsIC01MC4wLCAtMTMuOCwgLTYuOCwgLTUuMSwgLTUuMywgLTYuNSwgLTUwLjAsIC00LjEsIC0xMi44LCAtNS44LCAtMTQuNCwgLTE0LjEsIC0xMy42LCAtMTQuOCxdLFxuICAgICAgICAgICAgWy04LjIsIC00LjcsIC03LjEsIC01LjAsIC02LjUsIC03LjcsIC01LjUsIC02LjksIC00LjEsIC0wLjgsIC0xLjIsIC0wLjksIC0xMC41LCAtMTIuOCwgLTguMiwgLTEzLjAsIC03LjUsIC0xMC4wLCAtNy4yLCAtOS43LCAtOS4yLCAtOS40LCAtNy4zLCAtMTAuMiwgLTYuNSwgLTguMCwgLTQuMywgLTguMCwgLTEzLjEsIC0xNC4xLCAtMTIuMiwgLTEzLjgsIC0zLjcsIC01LjQsIC0yLjUsIC01LjQsIC0xLjgsIC0zLjEsIDAuMSwgLTMuMywgMTEuMSwgOS43LCAxMi45LCA5LjgsIC01LjUsIC04LjEsIC01LjQsIC03LjgsIC01MC4wLCAtMTYuNCwgLTUwLjAsIC0xNC44LCAtNS45LCAtNy4xLCAtNC43LCAtNy4yLCAtNTAuMCwgLTguNCwgLTYuNCwgLTguMSwgLTEyLjEsIC0xNi4yLCAtMTAuMywgLTE1LjgsXSxcbiAgICAgICAgICAgIFstOS4yLCAtMy4wLCAtOS45LCAtMS4yLCAtNi41LCAtNi4xLCAtNi44LCAtNC40LCAtNi40LCAwLjksIC03LjAsIDMuMCwgLTExLjgsIC0xMy4wLCAtMTEuMSwgLTEwLjQsIC05LjMsIC05LjIsIC05LjgsIC02LjQsIC05LjUsIC05LjUsIC05LjQsIC04LjAsIC04LjEsIC04LjIsIC05LjQsIC01LjIsIC0xNC4yLCAtMTQuOSwgLTE0LjksIC0xMi4zLCAtNS43LCAtMy43LCAtNi43LCAtMS4zLCAtMi40LCAtMy4wLCAtMi40LCAtMS4wLCAxMC4xLCAxMC41LCA5LjgsIDEzLjEsIC03LjIsIC04LjAsIC04LjQsIC01LjAsIC01MC4wLCAtMTQuNywgLTUwLjAsIC0xMS40LCAtNi4zLCAtNi43LCAtNS44LCAtNS4wLCAtNTAuMCwgLTYuMSwgLTEzLjQsIC0zLjYsIC0xMy4wLCAtMTYuMCwgLTEzLjcsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTguMiwgLTEwLjgsIC0xMC4xLCAtOS44LCAtMC40LCAtMy42LCAtMS43LCAtMi45LCAtNy45LCAtOC40LCAtOS44LCAtOC4yLCA2LjIsIDIuMywgMC42LCAyLjksIC03LjEsIC0xMS42LCAtOS4yLCAtMTEuMSwgLTUuNiwgLTguMywgLTcuMiwgLTguNCwgLTEwLjcsIC0xMy42LCAtMTEuNCwgLTEyLjAsIDAuMCwgLTIuOCwgLTEuOCwgLTIuNCwgLTYuMCwgLTExLjYsIC03LjUsIC0xMC44LCAxLjUsIC0yLjAsIDAuMCwgLTEuMSwgLTQuOCwgLTguNSwgLTUuNSwgLTcuMiwgMTEuOSwgOC42LCAxMC4wLCA5LjAsIC01MC4wLCAtMTQuMiwgLTUwLjAsIC0xMi44LCAtNC4xLCAtNy40LCAtNS43LCAtNi41LCAtNTAuMCwgLTExLjAsIC0xNC4zLCAtOS45LCAxLjQsIC03LjksIC0wLjcsIC02LjgsXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTguNywgLTEzLjAsIC05LjksIC0zLjksIC0xLjAsIC0zLjQsIC0yLjksIC0xMi41LCAtNi4zLCAtMTEuNiwgLTguMSwgMy4zLCA2LjAsIC0xLjYsIDMuOCwgLTEwLjUsIC0xMC4xLCAtMTEuMSwgLTExLjEsIC05LjAsIC02LjksIC04LjIsIC05LjEsIC0xNC4wLCAtMTEuNCwgLTEyLjMsIC0xMi4xLCAtMy4xLCAwLjIsIC0zLjIsIC0yLjIsIC0xMC40LCAtOS4xLCAtMTAuNCwgLTExLjUsIC0yLjEsIDEuMiwgLTEuMSwgLTEuNCwgLTkuNCwgLTUuNiwgLTguMSwgLTguMCwgOC42LCAxMi40LCA4LjYsIDkuNSwgLTUwLjAsIC0xMC40LCAtNTAuMCwgLTExLjYsIC03LjIsIC01LjcsIC03LjUsIC03LjQsIC01MC4wLCAtOC42LCAtMTUuNywgLTkuNywgLTMuMCwgLTMuNywgLTMuMiwgLTUuOSxdLFxuICAgICAgICAgICAgWy0xMS4xLCAtMTEuOSwgLTEwLjYsIC0xMS4zLCAtMi42LCAtNC4xLCAtMS43LCAtMy41LCAtMTEuNCwgLTkuNiwgLTkuNiwgLTkuMiwgMy43LCAyLjUsIDEuNiwgMi41LCAtOS42LCAtMTIuMywgLTkuNSwgLTExLjgsIC04LjAsIC05LjQsIC03LjIsIC05LjMsIC0xMy4zLCAtMTIuOCwgLTEwLjksIC0xMi42LCAtMS44LCAtMi45LCAtMC44LCAtMi45LCAtOC42LCAtMTMuMCwgLTcuNCwgLTEyLjQsIC0wLjQsIC0yLjMsIDEuMywgLTIuMCwgLTguMSwgLTkuMywgLTUuNCwgLTguNCwgMTAuMCwgOC42LCAxMS40LCA4LjksIC01MC4wLCAtMTMuNywgLTUwLjAsIC0xMy4yLCAtNi4xLCAtOC4xLCAtNS41LCAtNy41LCAtNTAuMCwgLTExLjMsIC0xMi43LCAtMTAuMSwgLTEuNiwgLTcuOCwgLTAuMywgLTcuMixdLFxuICAgICAgICAgICAgWy0xMS40LCAtMTAuMCwgLTEyLjcsIC04LjIsIC0zLjEsIC0zLjEsIC0yLjgsIC0wLjksIC0xMS43LCAtNy4zLCAtMTIuMSwgLTUuOCwgMy42LCAzLjYsIC0xLjEsIDUuOCwgLTkuNCwgLTExLjksIC0xMC43LCAtMTAuMCwgLTguNSwgLTguOCwgLTguMiwgLTYuNSwgLTEzLjksIC0xMy4wLCAtMTIuOSwgLTEwLjksIC0zLjEsIC0yLjMsIC0zLjIsIC0wLjIsIC05LjUsIC0xMC44LCAtMTAuMiwgLTguMiwgLTEuMSwgLTEuMywgLTAuOCwgMS4yLCAtOC42LCAtNy44LCAtNy44LCAtNS4wLCA5LjAsIDkuNSwgOC45LCAxMi4wLCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTAuMywgLTYuMiwgLTcuMCwgLTcuMSwgLTUuNCwgLTUwLjAsIC05LjMsIC0xNC4wLCAtOC4yLCAtMi40LCAtNi4zLCAtMi40LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIDMwLjYsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTQuOCwgLTYuMiwgLTE0LjksIC03LjYsIC0xNC42LCAtMTEuNiwgLTEzLjAsIC0xMi4yLCAtMTQuMCwgLTkuMCwgLTE0LjEsIC0xMC4xLCAtMTMuNiwgLTExLjIsIC0xMi40LCAtMTIuNSwgLTguMSwgMi4yLCAtOC43LCAwLjQsIC0xNS4zLCAtMTEuMywgLTEzLjIsIC0xMy4zLCAtMTEuOSwgLTcuMiwgLTExLjgsIC03LjksIC0xMC43LCAtNy40LCAtMTAuOCwgLTguOSwgLTE1LjUsIC0xMC4zLCAtMTUuNSwgLTEyLjUsIC0xNC41LCAtMTIuMSwgLTExLjksIC0xMi44LCAtMTguMywgLTEyLjcsIC0xNi40LCAtMTQuNywgLTE0LjIsIC0xMC40LCAtMTMuNywgLTEzLjAsIC01MC4wLCAxNS4xLCAtNTAuMCwgMTMuMywgLTkuOSwgLTUuOCwgLTguOSwgLTcuNiwgLTUwLjAsIC0xLjUsIC03LjgsIC0zLjAsIC04LjEsIDMuNiwgLTkuNCwgMi4wLF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzAuNiwgLTUwLjAsIDM1LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuOCwgLTcuNSwgLTE0LjQsIC01LjEsIC0xMi42LCAtMTEuNiwgLTExLjUsIC0xMC4xLCAtMTMuMiwgLTkuNywgLTEyLjcsIC03LjQsIC0xMS45LCAtMTEuOSwgLTExLjUsIC0xMC4yLCAtNy4yLCAwLjksIC04LjYsIDIuNiwgLTE0LjEsIC0xMi44LCAtMTMuMywgLTExLjAsIC05LjcsIC04LjQsIC0xMS4yLCAtNS4zLCAtOS4zLCAtOC43LCAtOS45LCAtNy4xLCAtMTMuOSwgLTExLjIsIC0xNC4yLCAtOC45LCAtMTIuOSwgLTEyLjYsIC0xMi42LCAtMTAuOSwgLTE1LjQsIC0xMy44LCAtMTQuOCwgLTExLjQsIC0xMi44LCAtMTEuNiwgLTEzLjIsIC0xMC4zLCAtNTAuMCwgMTMuMywgLTUwLjAsIDE1LjIsIC04LjYsIC03LjAsIC04LjQsIC00LjgsIC01MC4wLCAtMy4wLCAtNy4xLCAtMC4xLCAtNy4zLCAyLjMsIC04LjcsIDMuOSxdLFxuICAgICAgICAgICAgWy03LjMsIC02LjMsIC04LjksIC01LjUsIDIuOSwgMC4yLCAxLjUsIDEuMiwgLTguNSwgLTIuMywgLTEwLjAsIC0xLjcsIC01LjYsIC0xMC41LCAtNS41LCAtOS42LCAtNC4zLCAtNy45LCAtNi4xLCAtNy4yLCAyLjMsIC0wLjYsIDAuNSwgLTAuMCwgLTguOSwgLTExLjAsIC05LjQsIC05LjMsIC00LjYsIC05LjQsIC03LjMsIC04LjEsIC03LjgsIC05LjgsIC04LjksIC05LjIsIDIuOCwgMC4xLCAxLjIsIDAuOCwgLTUuOSwgLTYuOCwgLTUuOSwgLTYuMywgLTQuMSwgLTcuMiwgLTYuMSwgLTYuMiwgLTUwLjAsIC05LjksIC01MC4wLCAtOC42LCAxMi41LCA5LjQsIDExLjAsIDkuOCwgLTUwLjAsIC00LjgsIC04LjcsIC0zLjUsIC0wLjAsIC04LjYsIC0yLjEsIC03LjAsXSxcbiAgICAgICAgICAgIFstMTAuMSwgLTQuMywgLTEwLjgsIC01LjgsIDAuMSwgMi4zLCAwLjcsIDAuNiwgLTEwLjQsIC0wLjIsIC0xMC44LCAtMi4wLCAtOC44LCAtOS4yLCAtOC4wLCAtOS43LCAtNi44LCAtNS45LCAtNy41LCAtNy4wLCAtMS40LCAyLjIsIC0wLjksIC0wLjQsIC0xMC44LCAtNy43LCAtOS44LCAtOC44LCAtOC45LCAtNy4zLCAtOS42LCAtOS4xLCAtMTAuNSwgLTguMywgLTEwLjIsIC0xMC4wLCAtMC4wLCAyLjUsIDAuNywgMC41LCAtNy41LCAtNS4xLCAtNy4xLCAtNi43LCAtNy40LCAtNS43LCAtOC4xLCAtNy4wLCAtNTAuMCwgLTUuOCwgLTUwLjAsIC03LjAsIDkuNCwgMTIuNywgMTAuMSwgMTAuMCwgLTUwLjAsIC0xLjUsIC0xMS4zLCAtMy4zLCAtNS40LCAtNC4yLCAtNS42LCAtNi44LF0sXG4gICAgICAgICAgICBbLTguNCwgLTYuMiwgLTguOSwgLTUuOSwgMS44LCAwLjQsIDIuNywgMS4yLCAtOS4xLCAtMS4yLCAtOC44LCAtMS41LCAtNy4yLCAtMTAuNSwgLTQuOSwgLTkuNiwgLTUuNywgLTcuNCwgLTUuNSwgLTcuNCwgMC4zLCAtMC4zLCAxLjgsIC0wLjQsIC05LjAsIC04LjcsIC03LjMsIC04LjksIC01LjksIC05LjQsIC02LjQsIC04LjcsIC04LjcsIC05LjEsIC04LjUsIC05LjQsIDEuNCwgMC43LCAzLjUsIDAuNywgLTYuNiwgLTUuMywgLTQuNywgLTUuOCwgLTUuNywgLTcuNSwgLTUuNSwgLTcuMSwgLTUwLjAsIC04LjksIC01MC4wLCAtOC40LCAxMS4wLCAxMC4xLCAxMy4yLCAxMC4yLCAtNTAuMCwgLTQuMiwgLTYuMSwgLTMuNiwgLTMuNSwgLTguNCwgLTEuMiwgLTYuOCxdLFxuICAgICAgICAgICAgWy05LjEsIC01LjQsIC0xMC40LCAtNC4yLCAxLjAsIDAuNSwgMC42LCAyLjQsIC05LjYsIC0xLjUsIC0xMC41LCAtMC41LCAtOC45LCAtMTAuNSwgLTcuMiwgLTguMywgLTYuMywgLTYuOSwgLTcuNywgLTUuMSwgLTAuNSwgMC4xLCAtMC42LCAyLjMsIC0xMS4xLCAtMTAuMiwgLTEwLjUsIC03LjAsIC04LjMsIC05LjQsIC05LjQsIC02LjYsIC05LjYsIC05LjcsIC0xMC4wLCAtNy45LCAwLjcsIDAuNiwgMC44LCAyLjMsIC03LjEsIC02LjUsIC03LjIsIC01LjAsIC02LjUsIC03LjQsIC03LjUsIC01LjQsIC01MC4wLCAtNy42LCAtNTAuMCwgLTQuOCwgOS44LCAxMC4wLCAxMC4yLCAxMi4xLCAtNTAuMCwgLTMuMSwgLTExLjQsIC0wLjcsIC00LjYsIC02LjYsIC00LjksIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy4wLCAtMTMuMSwgLTguMywgLTkuMiwgLTYuNSwgLTguOSwgLTcuNiwgLTkuOCwgLTAuNywgLTkuMiwgLTIuMSwgLTEyLjQsIC0xMC4zLCAtMTIuNCwgLTExLjYsIC05LjUsIC00LjYsIC0xMC40LCAtNS43LCAtMTMuNiwgLTEwLjEsIC0xMS40LCAtMTAuOSwgLTYuNSwgLTEuNSwgLTYuMiwgLTMuNiwgLTEyLjgsIC04LjAsIC0xMi4zLCAtOS43LCAtMTYuNSwgLTEyLjcsIC0xNS42LCAtMTQuMywgLTguNywgLTYuMCwgLTcuMSwgLTcuNSwgLTkuNSwgLTQuMSwgLTguNCwgLTYuMSwgLTExLjAsIC04LjYsIC0xMS4zLCAtOS4zLCAtNTAuMCwgLTEuNSwgLTUwLjAsIC0zLjAsIC00LjgsIC0xLjUsIC00LjIsIC0zLjEsIC01MC4wLCAxNi40LCAtNS4xLCAxNC4yLCAtMTAuMSwgLTQuMywgLTEwLjAsIC01LjQsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTE2LjMsIC0xMS44LCAtMTUuNSwgLTEzLjYsIC0xNS4zLCAtMTIuMSwgLTE2LjEsIC03LjcsIC0xMy4zLCAtNC4yLCAtMTIuNiwgLTE0LjEsIC0xNi4yLCAtMTAuMywgLTE1LjQsIC05LjYsIC0xMS42LCAtNy43LCAtOS44LCAtMTQuMywgLTE3LjUsIC0xMS4xLCAtMTcuMiwgLTUuMywgLTcuMSwgLTIuMiwgLTcuMSwgLTkuNiwgLTExLjksIC04LjcsIC0xMS40LCAtMTcuMSwgLTIwLjYsIC0xNS4zLCAtMTkuOSwgLTE0LjEsIC0xNC44LCAtMTIuNCwgLTE2LjUsIC0xMS43LCAtMTIuOCwgLTYuNCwgLTEzLjQsIC0xNC4zLCAtMTUuNywgLTEyLjcsIC0xNC4wLCAtNTAuMCwgLTcuOCwgLTUwLjAsIC03LjEsIC04LjcsIC0xMS4zLCAtNi4xLCAtMTEuNCwgLTUwLjAsIC01LjEsIDE4LjYsIC00LjgsIC04LjYsIC04LjEsIC00LjUsIC03LjMsXSxcbiAgICAgICAgICAgIFstMTIuNCwgLTguMiwgLTEzLjAsIC01LjksIC03LjcsIC03LjgsIC03LjQsIC01LjgsIC04LjgsIC0yLjAsIC05LjMsIC0wLjQsIC0xMS42LCAtMTEuMywgLTExLjYsIC05LjQsIC04LjksIC01LjYsIC0xMC4wLCAtMy4yLCAtMTEuNSwgLTExLjEsIC0xMC41LCAtOC4zLCAtNi4zLCAtNC45LCAtNi43LCAtMS4yLCAtMTAuNiwgLTkuNywgLTExLjMsIC04LjAsIC0xNC44LCAtMTMuMSwgLTE1LjUsIC0xMS40LCAtNy41LCAtNy41LCAtNy4xLCAtNS45LCAtOC40LCAtNS44LCAtOC4xLCAtMy42LCAtOS45LCAtOS43LCAtMTAuMSwgLTguMiwgLTUwLjAsIC0zLjAsIC01MC4wLCAtMC4xLCAtMy41LCAtMy4zLCAtMy42LCAtMC43LCAtNTAuMCwgMTQuMiwgLTQuOCwgMTYuNCwgLTguOSwgLTUuOCwgLTguOSwgLTMuNCxdLFxuICAgICAgICAgICAgWy0xMC43LCAtMTMuMiwgLTEyLjQsIC0xMS42LCAtNC44LCAtOC40LCAtNi4xLCAtNy4yLCAtMTAuMywgLTExLjgsIC0xMS4wLCAtMTEuNiwgMi44LCAtMS43LCAwLjcsIC0xLjEsIC02LjIsIC05LjcsIC03LjMsIC04LjQsIC01LjMsIC04LjYsIC02LjEsIC04LjMsIC0xMC41LCAtMTEuMiwgLTkuOCwgLTEwLjIsIDkuNSwgNi41LCA3LjYsIDYuOCwgLTEyLjEsIC0xNi4wLCAtMTMuMCwgLTE2LjIsIC01LjIsIC04LjYsIC03LjEsIC03LjgsIC0xMi41LCAtMTQuNCwgLTEyLjEsIC0xMy4wLCAxLjQsIC0zLjAsIC0xLjYsIC0yLjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMywgLTAuMCwgLTUuNCwgLTMuNSwgLTQuNiwgLTUwLjAsIC0xMC4xLCAtOC42LCAtOC45LCAxMy4yLCAtMC45LCA5LjcsIC0wLjMsXSxcbiAgICAgICAgICAgIFstMTguMSwgLTEyLjMsIC0xOS40LCAtMTQuMiwgLTEyLjIsIC05LjUsIC0xMS41LCAtMTAuOCwgLTE3LjksIC0xMS45LCAtMTguMiwgLTEzLjksIC02LjQsIC0zLjcsIC02LjgsIC01LjQsIC0xMi44LCAtNS45LCAtMTMuNiwgLTcuNCwgLTEzLjcsIC05LjksIC0xMi45LCAtMTIuNywgLTE2LjIsIC0xMS42LCAtMTUuMiwgLTEyLjcsIC0zLjIsIDAuNSwgLTMuMywgLTEuOCwgLTE4LjksIC0xNi42LCAtMTguOCwgLTE5LjIsIC0xMi41LCAtOS40LCAtMTAuNiwgLTExLjEsIC0xNy4zLCAtMTQuMSwgLTE2LjIsIC0xNi4wLCAtNy45LCAtMy43LCAtNy44LCAtNi4zLCAtNTAuMCwgMy42LCAtNTAuMCwgMi4zLCAtOC42LCAtNC4yLCAtOC40LCAtNi42LCAtNTAuMCwgLTQuMywgLTguMSwgLTUuOCwgLTAuOSwgMTQuMiwgLTEuOCwgMTEuNixdLFxuICAgICAgICAgICAgWy0xMS44LCAtMTMuMSwgLTExLjUsIC0xMi4wLCAtNi4yLCAtOC4zLCAtNS40LCAtNy40LCAtMTEuOCwgLTEyLjMsIC0xMS4xLCAtMTEuNCwgMC41LCAtMi41LCAyLjQsIC0xLjYsIC02LjgsIC05LjksIC02LjQsIC04LjksIC02LjEsIC04LjYsIC01LjAsIC03LjgsIC0xMC40LCAtMTEuNiwgLTguNSwgLTkuOSwgOC4yLCA2LjQsIDguNywgNi45LCAtMTIuNCwgLTE3LjAsIC0xMi42LCAtMTUuOCwgLTYuNSwgLTguNSwgLTUuMCwgLTcuOCwgLTEzLjIsIC0xMy42LCAtMTAuMywgLTEzLjcsIC0wLjcsIC0zLjIsIC0wLjMsIC0yLjQsIC01MC4wLCAtOS40LCAtNTAuMCwgLTguNywgLTIuMSwgLTUuNiwgLTEuMiwgLTQuOSwgLTUwLjAsIC0xMC4wLCAtNC41LCAtOC45LCA5LjcsIC0xLjgsIDExLjMsIC0wLjksXSxcbiAgICAgICAgICAgIFstMTcuMiwgLTEzLjMsIC0xNy44LCAtMTEuNiwgLTExLjAsIC0xMS4xLCAtMTAuNCwgLTkuMCwgLTE2LjAsIC0xMi43LCAtMTYuMSwgLTExLjEsIC01LjIsIC01LjQsIC02LjAsIC0zLjMsIC0xMS44LCAtNy4zLCAtMTMuMywgLTUuOSwgLTEyLjcsIC0xMS45LCAtMTEuOSwgLTkuMywgLTE1LjIsIC0xNS4wLCAtMTQuOSwgLTExLjAsIC0yLjgsIC0xLjgsIC0yLjksIDAuNCwgLTE3LjQsIC0xOC40LCAtMTguMywgLTE1LjksIC0xMC43LCAtMTEuMiwgLTEwLjYsIC05LjAsIC0xNS40LCAtMTQuOCwgLTE1LjgsIC0xMy4zLCAtNi44LCAtNS45LCAtNy4yLCAtMy45LCAtNTAuMCwgMi4wLCAtNTAuMCwgMy45LCAtNy4wLCAtNi44LCAtNi44LCAtMy45LCAtNTAuMCwgLTUuNCwgLTcuMywgLTMuNCwgLTAuMywgMTEuNiwgLTAuOSwgMTQuMSxdXTtcbiAgICAgICAgdGhpcy5UUkFOUyA9IFtbNSwgMCwgMCwgNF0sXG4gICAgICAgICAgICBbMCwgNSwgNCwgMF0sXG4gICAgICAgICAgICBbMCwgNCwgNSwgMF0sXG4gICAgICAgICAgICBbNCwgMCwgMCwgNV1dO1xuICAgICAgICB0aGlzLkNPTkJMTyA9IHsgJ0EnOiAwLCAnUic6IDEsICdOJzogMiwgJ0QnOiAzLCAnQyc6IDQsICdRJzogNSwgJ0UnOiA2LCAnRyc6IDcsICdIJzogOCwgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LCAnVyc6IDE3LCAnWSc6IDE4LCAnVic6IDE5LCAnQic6IDIwLCAnWic6IDIxLCAnWCc6IDIyLCAnKic6IDIzIH07XG4gICAgICAgIHRoaXMuQ09OTlVDTCA9IHsgJ0EnOiAwLCAnVCc6IDEsICdDJzogMiwgJ0cnOiAzIH07XG4gICAgICAgIHRoaXMuQ09OU0NITiA9IHsgJ0FBQSc6IDAsICdBQUMnOiAxLCAnQUFHJzogMiwgJ0FBVCc6IDMsICdBQ0EnOiA0LCAnQUNDJzogNSwgJ0FDRyc6IDYsICdBQ1QnOiA3LCAnQUdBJzogOCwgJ0FHQyc6IDksICdBR0cnOiAxMCwgJ0FHVCc6IDExLCAnQVRBJzogMTIsICdBVEMnOiAxMywgJ0FURyc6IDE0LCAnQVRUJzogMTUsICdDQUEnOiAxNiwgJ0NBQyc6IDE3LCAnQ0FHJzogMTgsICdDQVQnOiAxOSwgJ0NDQSc6IDIwLCAnQ0NDJzogMjEsICdDQ0cnOiAyMiwgJ0NDVCc6IDIzLCAnQ0dBJzogMjQsICdDR0MnOiAyNSwgJ0NHRyc6IDI2LCAnQ0dUJzogMjcsICdDVEEnOiAyOCwgJ0NUQyc6IDI5LCAnQ1RHJzogMzAsICdDVFQnOiAzMSwgJ0dBQSc6IDMyLCAnR0FDJzogMzMsICdHQUcnOiAzNCwgJ0dBVCc6IDM1LCAnR0NBJzogMzYsICdHQ0MnOiAzNywgJ0dDRyc6IDM4LCAnR0NUJzogMzksICdHR0EnOiA0MCwgJ0dHQyc6IDQxLCAnR0dHJzogNDIsICdHR1QnOiA0MywgJ0dUQSc6IDQ0LCAnR1RDJzogNDUsICdHVEcnOiA0NiwgJ0dUVCc6IDQ3LCAnVEFBJzogNDgsICdUQUMnOiA0OSwgJ1RBRyc6IDUwLCAnVEFUJzogNTEsICdUQ0EnOiA1MiwgJ1RDQyc6IDUzLCAnVENHJzogNTQsICdUQ1QnOiA1NSwgJ1RHQSc6IDU2LCAnVEdDJzogNTcsICdUR0cnOiA1OCwgJ1RHVCc6IDU5LCAnVFRBJzogNjAsICdUVEMnOiA2MSwgJ1RURyc6IDYyLCAnVFRUJzogNjMgfTtcbiAgICAgICAgdGhpcy5zZXRNZXRob2QoYWxpZ25HcmlkXyk7XG4gICAgICAgIHRoaXMuc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXyk7XG4gICAgICAgIHRoaXMuc2V0R2FwKGdhcF8pO1xuICAgIH1cbiAgICBmaWxsTmVlZGxlbWFuKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4yOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SiA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbGxPbmUoaSwgaikge1xuICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdLCBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCwgdGhpcy5kcEdyaWRbaV1baiAtIDFdLnZhbHVlIC0gdGhpcy5nYXApKTtcbiAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3JpZEZyb21OYW1lKHBhdGgpIHtcbiAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU00NSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTQ1O1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU01MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTYyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNjI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU04MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTgwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNOTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU05MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTMwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU03MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTcwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMjUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMjUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTlVDTEVPVElERVMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5OVUNMRU9USURFUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUUkFOUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlRSQU5TO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NDSE5FSURFUic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlNDSE5FSURFUjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05TQ0hOO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdFJlc3VsdChpLCBqKSB7XG4gICAgICAgIGxldCByZXMxID0gXCJcIiwgcmVzMiA9IFwiXCIsIGdhcFMgPSBcIlwiO1xuICAgICAgICBsZXQgdG90YWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXA7IGkrKykge1xuICAgICAgICAgICAgZ2FwUyArPSAnfCc7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9PSBpKSB7XG4gICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9PSBqKSB7XG4gICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIGlmIChqIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ZW1wSSA9IGk7XG4gICAgICAgICAgICBpID0gdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50STtcbiAgICAgICAgICAgIGogPSB0aGlzLmRwR3JpZFt0ZW1wSV1bal0ucGFyZW50SjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFsaWduZWQocmVzMSwgcmVzMiwgdG90YWwpO1xuICAgIH1cbiAgICBmaWxsU2NvcmVzKCkge1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3Jlcy5wdXNoKFtdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjb3Jlc1tpXS5wdXNoKHRoaXMuYWxpZ25HcmlkW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXExLnN1YnN0cihpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV1bdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTIuc3Vic3RyKGogKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHlwZVJlYygpIHtcbiAgICAgICAgaWYgKC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBVEdDXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIk5VQ0xFT1RJREVTXCI7XG4gICAgICAgIGlmICgvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiQkxPU1VNNjJcIjtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJDYW4ndCByZWNvZ25pemUgc2VxdWVuY2UgdHlwZVwiKTtcbiAgICB9XG4gICAgbmVlZGxlbWFuV3VuY2goKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxOZWVkbGVtYW4oKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdCh0aGlzLmxlbjEsIHRoaXMubGVuMik7XG4gICAgfVxuICAgIHNtaXRoV2F0ZXJtYW4oKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYmVzdFZhbCA9IDA7XG4gICAgICAgIGxldCBiZXN0SSA9IDAsIGJlc3RKID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJXVt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKXS52YWx1ZSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID4gYmVzdFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0VmFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RJID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEogPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQoYmVzdEksIGJlc3RKKTtcbiAgICB9XG4gICAgc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMubGVuMSA9IHRoaXMuc2VxMS5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMubGVuMiA9IHRoaXMuc2VxMi5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBzZXRHYXAoZ2FwXykge1xuICAgICAgICB0aGlzLmdhcCA9IGdhcF87XG4gICAgfVxuICAgIHNldE1ldGhvZChhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICBpZiAoYWxpZ25HcmlkXyA9PSBcIkFVVE9cIikge1xuICAgICAgICAgICAgYWxpZ25HcmlkXyA9IHRoaXMudHlwZVJlYygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZEZyb21OYW1lKGFsaWduR3JpZF8pO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFjcm9Nb2wobW9ub21lcnMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IG1vZHVsZVJka2l0ID0geWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQ2hlbTpnZXRSZEtpdE1vZHVsZScpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9sID0gbW9kdWxlUmRraXQuZ2V0X21vbChtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gbW9sLmdldF92M0ttb2xibG9jaygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSBnZXRJbmRpY2VzKG1vbm9tZXJzW2ldW2pdLCBhKTtcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnaW5kaWNlcyddID0gaW5kaWNlcztcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddID0geWllbGQgcm90YXRlQmFja2JvbmVWMzAwMChhLCBpbmRpY2VzKTtcbiAgICAgICAgICAgICAgICBtb2wgPT09IG51bGwgfHwgbW9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2wuZGVsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChsaW5rVjMwMDAobW9ub21lcnNbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0SW5kaWNlcyhtb25vbWVyLCBtb2xWMzAwMCkge1xuICAgIGNvbnN0IG1vbGZpbGUgPSBtb25vbWVyW1wibW9sZmlsZVwiXTtcbiAgICBsZXQgaW5kZXhTdGFydCA9IG1vbGZpbGUuaW5kZXhPZignTSAgUkdQJywgMCkgKyA4O1xuICAgIGxldCBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgY29uc3QgaW5kaWNlc0RhdGEgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICBsZXQgcGFyc2VkRGF0YSA9IGluZGljZXNEYXRhLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgcmVtRmlyc3QgPSBwYXJzZWREYXRhWzJdID09ICcxJyA/IHBhcnNlSW50KHBhcnNlZERhdGFbMV0pIDogcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgY29uc3QgcmVtTGFzdCA9IHBhcnNlZERhdGFbMl0gPT0gJzInID8gcGFyc2VJbnQocGFyc2VkRGF0YVsxXSkgOiBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sVjMwMDApO1xuICAgIGxldCBpbmRleEJvbmRzID0gbW9sVjMwMDAuaW5kZXhPZignTSAgVjMwIEJFR0lOIEJPTkQnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGJvbmRzXG4gICAgaW5kZXhCb25kcyA9IG1vbFYzMDAwLmluZGV4T2YoJ1xcbicsIGluZGV4Qm9uZHMpO1xuICAgIGluZGV4U3RhcnQgPSBpbmRleEJvbmRzO1xuICAgIGluZGV4RW5kID0gaW5kZXhCb25kcztcbiAgICBsZXQgZmlyc3QgPSAwO1xuICAgIGxldCBsYXN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZEZpcnN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZExhc3QgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgIGlmIChmaXJzdCA9PSAwIHx8IGxhc3QgPT0gMCkge1xuICAgICAgICAgICAgaW5kZXhTdGFydCA9IG1vbFYzMDAwLmluZGV4T2YoJ1YzMCcsIGluZGV4U3RhcnQpICsgNDtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sVjMwMDAuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgICAgICAgICBjb25zdCBib25kRGF0YSA9IG1vbFYzMDAwLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICAgICAgICAgIHBhcnNlZERhdGEgPSBib25kRGF0YS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzJdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVsyXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmaXJzdCwgbGFzdCwgcmVtRmlyc3QsIHJlbUxhc3QsIHJlbUJvbmRGaXJzdCwgcmVtQm9uZExhc3QgfTtcbn1cbmZ1bmN0aW9uIHJvdGF0ZUJhY2tib25lVjMwMDAobW9sQmxvY2ssIGluZGljZXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKTtcbiAgICAgICAgY29uc3QgbmF0b20gPSBjb29yZGluYXRlcy5hdG9tSW5kZXgubGVuZ3RoO1xuICAgICAgICBjb25zdCBmaXJzdCA9IGluZGljZXNbJ2ZpcnN0J107XG4gICAgICAgIGNvbnN0IGxhc3QgPSBpbmRpY2VzWydsYXN0J107XG4gICAgICAgIGNvbnN0IHhDZW50ZXIgPSAoY29vcmRpbmF0ZXMueFtsYXN0XSArIGNvb3JkaW5hdGVzLnhbZmlyc3RdKSAvIDI7XG4gICAgICAgIGNvbnN0IHlDZW50ZXIgPSAoY29vcmRpbmF0ZXMueVtsYXN0XSArIGNvb3JkaW5hdGVzLnlbZmlyc3RdKSAvIDI7XG4gICAgICAgIC8vcGxhY2UgdG8gY2VudGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4Q2VudGVyO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSAtPSB5Q2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhbmdsZSA9IDA7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy54W2ZpcnN0XSA9PSAwKVxuICAgICAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy55W2ZpcnN0XSA+IGNvb3JkaW5hdGVzLnlbbGFzdF0gPyBNYXRoLlBJIC8gMiA6IDMgKiBNYXRoLlBJIC8gMjtcbiAgICAgICAgZWxzZSBpZiAoY29vcmRpbmF0ZXMueVtmaXJzdF0gPT0gMClcbiAgICAgICAgICAgIGFuZ2xlID0gY29vcmRpbmF0ZXMueFtmaXJzdF0gPiBjb29yZGluYXRlcy54W2xhc3RdID8gTWF0aC5QSSA6IDA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVyaXZhdGl2ZSA9IGNvb3JkaW5hdGVzLnlbZmlyc3RdIC8gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXMueFtmaXJzdF0gPCBjb29yZGluYXRlcy54W2xhc3RdKVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpIDogTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgY29uc3Qgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhBZGQgPSBjb29yZGluYXRlcy54W2ldO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSA9IHhBZGQgKiBjb3MgLSBjb29yZGluYXRlcy55W2ldICogc2luO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSA9IHhBZGQgKiBzaW4gKyBjb29yZGluYXRlcy55W2ldICogY29zO1xuICAgICAgICB9XG4gICAgICAgIC8vcGxhY2UgdG8gcmlnaHRcbiAgICAgICAgY29uc3QgeFNoaWZ0ID0gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKylcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geFNoaWZ0O1xuICAgICAgICAvL3Jld3JpdGUgbW9sQmxvY2tcbiAgICAgICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleEVuZCk7XG4gICAgICAgICAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnNsaWNlKDAsIGluZGV4KSArXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSArICcgJyArIGNvb3JkaW5hdGVzLnlbaV0gK1xuICAgICAgICAgICAgICAgIG1vbEJsb2NrLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9sQmxvY2s7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xCbG9jaykge1xuICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jayk7XG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgbGV0IGluZGV4RW5kID0gaW5kZXg7XG4gICAgY29uc3QgaW5kZXhlcyA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHR5cGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeCA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHkgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlcnMubmF0b207IGkrKykge1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgaW5kZXhlc1tpXSA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgdHlwZXNbaV0gPSBtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgeFtpXSA9IHBhcnNlRmxvYXQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB5W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYXRvbUluZGV4OiBpbmRleGVzLCBhdG9tVHlwZTogdHlwZXMsIHg6IHgsIHk6IHkgfTtcbn1cbmZ1bmN0aW9uIGxpbmtWMzAwMChtb25vbWVycykge1xuICAgIGxldCBtYWNyb01vbEJsb2NrID0gJ1xcbkRhdGFncm9rIG1hY3JvbW9sZWN1bGUgaGFuZGxlclxcblxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnICAwICAwICAwICAwICAwICAwICAgICAgICAgICAgOTk5IFYzMDAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ1RBQlxcbic7XG4gICAgbGV0IGF0b21CbG9jayA9ICcnO1xuICAgIGxldCBib25kQmxvY2sgPSAnJztcbiAgICBsZXQgY29sbGVjdGlvbkJsb2NrID0gJyc7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xuICAgIGxldCBuYXRvbSA9IDA7XG4gICAgbGV0IG5ib25kID0gMDtcbiAgICBsZXQgeFNoaWZ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtb2xmaWxlID0gbW9ub21lcnNbaV1bJ21vbGZpbGUnXTtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydmaXJzdCddO1xuICAgICAgICBjb25zdCBsYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsnbGFzdCddO1xuICAgICAgICBjb25zdCByZW1GaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUZpcnN0J107XG4gICAgICAgIGNvbnN0IHJlbUxhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1MYXN0J107XG4gICAgICAgIGNvbnN0IHJlbUJvbmRGaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRGaXJzdCddO1xuICAgICAgICBjb25zdCByZW1Cb25kTGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRMYXN0J107XG4gICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnJlcGxhY2VBbGwoJygtXFxuTSAgVjMwICcsICcoJylcbiAgICAgICAgICAgIC5yZXBsYWNlQWxsKCctXFxuTSAgVjMwICcsICcnKS5yZXBsYWNlQWxsKCcgKScsICcpJyk7XG4gICAgICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgbGV0IGluZGV4QXRvbXMgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgICAgICBpbmRleEF0b21zID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleEF0b21zKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhBdG9tcztcbiAgICAgICAgbGV0IGluZGV4RW5kID0gaW5kZXhBdG9tcztcbiAgICAgICAgY29uc3QgdG90YWxTaGlmdCA9IHhTaGlmdCAtIGNvb3JkaW5hdGVzLnhbZmlyc3QgLSAxXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5hdG9tOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gcmVtRmlyc3QgJiYgY29vcmRpbmF0ZXMuYXRvbUluZGV4W2pdICE9IHJlbUxhc3QpIHsgLy98fCBpID09IDApIHtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgYXRvbSBudW1iZXJcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIHRvdGFsU2hpZnQpKSAvIDEwMDAwO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCcsIGluZGV4KSAtIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhBdG9tc0VuZCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEVORCBBVE9NJyk7XG4gICAgICAgIGF0b21CbG9jayArPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleEF0b21zICsgMSwgaW5kZXhBdG9tc0VuZCk7XG4gICAgICAgIGxldCBpbmRleEJvbmRzID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICAgICAgaW5kZXhCb25kcyA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhCb25kcyk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhCb25kcztcbiAgICAgICAgaW5kZXhFbmQgPSBpbmRleEJvbmRzO1xuICAgICAgICBsZXQgYm9uZE51bWJlciA9IDA7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgICAgICAvL3Jld3JpdGUgYm9uZCBudW1iZXJcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBib25kTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBpZiAoYm9uZE51bWJlciA9PSByZW1Cb25kRmlyc3QgfHwgYm9uZE51bWJlciA9PSByZW1Cb25kTGFzdCkge1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4IC09IDc7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib25kTnVtYmVyID0gKGJvbmROdW1iZXIgPiByZW1Cb25kRmlyc3QgJiYgYm9uZE51bWJlciA+IHJlbUJvbmRMYXN0KSA/IGJvbmROdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYm9uZE51bWJlciA+IHJlbUJvbmRGaXJzdCB8fCBib25kTnVtYmVyID4gcmVtQm9uZExhc3QpID8gYm9uZE51bWJlciAtIDEgOiBib25kTnVtYmVyO1xuICAgICAgICAgICAgYm9uZE51bWJlciArPSBuYm9uZDtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGJvbmROdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIHBhaXIgaW4gYm9uZFxuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChhdG9tTnVtYmVyID4gcmVtRmlyc3QgfHwgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDEgOiBhdG9tTnVtYmVyO1xuICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gTWF0aC5taW4obW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCksIG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhCb25kRW5kID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgRU5EIEJPTkQnKTtcbiAgICAgICAgYm9uZEJsb2NrICs9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4Qm9uZHMgKyAxLCBpbmRleEJvbmRFbmQpO1xuICAgICAgICAvL2xldCBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGNvbGxlY3Rpb25zXG4gICAgICAgIC8vIHdoaWxlIChpbmRleENvbGxlY3Rpb24gIT0gLTEpIHtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gKz0gMjg7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVuZCA9IG1vbGZpbGUuaW5kZXhPZignKScsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVudHJpZXMgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleENvbGxlY3Rpb24sIGNvbGxlY3Rpb25FbmQpLnNwbGl0KCcgJykuc2xpY2UoMSk7XG4gICAgICAgIC8vICAgY29sbGVjdGlvbkVudHJpZXMuZm9yRWFjaCgoZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vICAgICBjb2xsZWN0aW9uLnB1c2gocGFyc2VJbnQoZSkgKyBuYXRvbSk7XG4gICAgICAgIC8vICAgfSk7XG4gICAgICAgIC8vICAgaW5kZXhDb2xsZWN0aW9uID0gY29sbGVjdGlvbkVuZDtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnLCBpbmRleENvbGxlY3Rpb24pO1xuICAgICAgICAvLyB9XG4gICAgICAgIG5hdG9tICs9IG51bWJlcnMubmF0b20gLSAyO1xuICAgICAgICBuYm9uZCArPSBudW1iZXJzLm5ib25kIC0gMjtcbiAgICAgICAgeFNoaWZ0ICs9IGNvb3JkaW5hdGVzLnhbbGFzdF0gLSBjb29yZGluYXRlcy54W2ZpcnN0XSArIDE7XG4gICAgICAgIGlmIChpID09IG1vbm9tZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5hdG9tKys7XG4gICAgICAgICAgICBjb25zdCBzaGlmdCA9IHhTaGlmdCArIDAuMjtcbiAgICAgICAgICAgIGF0b21CbG9jayArPSAnTSAgVjMwICcgKyBuYXRvbSArICcgTyAnICsgc2hpZnQgKyAnIDAgMC4wMDAwMDAgMFxcbic7XG4gICAgICAgIH1cbiAgICAgICAgbmJvbmQrKztcbiAgICAgICAgaWYgKGkgPT0gbW9ub21lcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRUZXJtaW5hbCA9IChsYXN0ID4gcmVtRmlyc3QgJiYgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDMgOlxuICAgICAgICAgICAgICAgIChsYXN0ID4gcmVtRmlyc3QgfHwgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDIgOlxuICAgICAgICAgICAgICAgICAgICBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMTtcbiAgICAgICAgICAgIGJvbmRCbG9jayArPSAnTSAgVjMwICcgKyBuYm9uZCArICcgMSAnICsgcmlnaHRUZXJtaW5hbCArICcgJyArIG5hdG9tICsgJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByaWdodFRlcm1pbmFsID0gKGxhc3QgPiByZW1GaXJzdCAmJiBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMiA6XG4gICAgICAgICAgICAgICAgKGxhc3QgPiByZW1GaXJzdCB8fCBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMSA6XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMik7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gbW9ub21lcnNbaSArIDFdWydpbmRpY2VzJ107XG4gICAgICAgICAgICBjb25zdCBuZXh0Rmlyc3QgPSBuZXh0WydmaXJzdCddO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlbUZpcnN0ID0gbmV4dFsncmVtRmlyc3QnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZW1MYXN0ID0gbmV4dFsncmVtTGFzdCddO1xuICAgICAgICAgICAgY29uc3QgbGVmdFRlcm1pbmFsID0gKG5leHRGaXJzdCA+IG5leHRSZW1GaXJzdCAmJiBuZXh0Rmlyc3QgPiBuZXh0UmVtTGFzdCkgPyBuZXh0Rmlyc3QgKyBuYXRvbSAtIDIgOlxuICAgICAgICAgICAgICAgIChuZXh0Rmlyc3QgPiBuZXh0UmVtRmlyc3QgfHwgbmV4dEZpcnN0ID4gbmV4dFJlbUxhc3QpID8gbmV4dEZpcnN0ICsgbmF0b20gLSAxIDpcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZpcnN0ICsgbmF0b207XG4gICAgICAgICAgICBib25kQmxvY2sgKz0gJ00gIFYzMCAnICsgbmJvbmQgKyAnIDEgJyArIHJpZ2h0VGVybWluYWwgKyAnICcgKyBsZWZ0VGVybWluYWwgKyAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBjb25zdCBlbnRyaWVzID0gNDtcbiAgICAvLyBjb25zdCBjb2xsTnVtYmVyID0gTWF0aC5jZWlsKGNvbGxlY3Rpb24ubGVuZ3RoIC8gZW50cmllcyk7XG4gICAgLy8gY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJyArIGNvbGxlY3Rpb24ubGVuZ3RoICsgJyAtXFxuJztcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNvbGxOdW1iZXI7IGkrKykge1xuICAgIC8vICAgY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgJztcbiAgICAvLyAgIGNvbnN0IGVudHJpZXNDdXJyZW50ID0gaSArIDEgPT0gY29sbE51bWJlciA/IGNvbGxlY3Rpb24ubGVuZ3RoIC0gKGNvbGxOdW1iZXIgLSAxKSplbnRyaWVzIDogZW50cmllcztcbiAgICAvLyAgIGZvciAobGV0IGogPSAwOyBqIDwgZW50cmllc0N1cnJlbnQ7IGorKykge1xuICAgIC8vICAgICBjb2xsZWN0aW9uQmxvY2sgKz0gKGogKyAxID09IGVudHJpZXNDdXJyZW50KSA/XG4gICAgLy8gICAgICAgKGkgPT0gY29sbE51bWJlciAtIDEgPyBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJylcXG4nIDogY29sbGVjdGlvbltlbnRyaWVzKmkgKyBqXSArICcgLVxcbicpIDpcbiAgICAvLyAgICAgICBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJyAnO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvL2dlbmVyYXRlIGZpbGVcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQ09VTlRTICcgKyBuYXRvbSArICcgJyArIG5ib25kICsgJyAwIDAgMFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEFUT01cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYXRvbUJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEJPTkRcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYm9uZEJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQk9ORFxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ09MTEVDVElPTlxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9IGNvbGxlY3Rpb25CbG9jaztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQ09MTEVDVElPTlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDVEFCXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBFTkRcXG4nO1xuICAgIHJldHVybiBtYWNyb01vbEJsb2NrO1xufVxuZnVuY3Rpb24gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2spIHtcbiAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnJlcGxhY2VBbGwoJ1xccicsICcnKTsgLy9lcXVhbGl6ZSBvbGQgYW5kIG5ldyBzZGYgc3RhbmRhcmRzXG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignQ09VTlRTJykgKyA3OyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgYW5kIGJvbmRzIG51bWJlclxuICAgIGxldCBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYXRvbXNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgIGNvbnN0IGJvbmRzTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgIHJldHVybiB7IG5hdG9tOiBhdG9tc051bWJlciwgbmJvbmQ6IGJvbmRzTnVtYmVyIH07XG59XG4iLCJpbXBvcnQgKiBhcyBDIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQ2hlbVBhbGV0dGUgfSBmcm9tIFwiLi9jaGVtLXBhbGV0dGVcIjtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tIFwiQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL2FtaW5vYWNpZHNcIjtcbmltcG9ydCB7IE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tIFwiQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzXCI7XG5pbXBvcnQgeyBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tIFwiQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3Vua25vd25cIjtcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tIFwiQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ29cIjtcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5jb25zdCBscnUgPSBuZXcgREcuTHJ1Q2FjaGUoKTtcbmZ1bmN0aW9uIGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpIHtcbiAgICBzd2l0Y2ggKHBhbGV0dGVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ1BUJzpcbiAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgY2FzZSAnTlQnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAvLyBvdGhlclxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1NlcXVlbmNlKHN1YlBhcnRzKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZCA9ICFzdWJQYXJ0cy5zb21lKChhbWlubywgaW5kZXgpID0+IGFtaW5vLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaW5kZXggIT0gMCAmJlxuICAgICAgICBpbmRleCAhPSBzdWJQYXJ0cy5sZW5ndGggLSAxKTtcbiAgICBjb25zdCB0ZXh0ID0gW107XG4gICAgY29uc3QgZ2FwID0gc2ltcGxpZmllZCA/ICcnIDogJyAnO1xuICAgIHN1YlBhcnRzLmZvckVhY2goKGFtaW5vLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPCBzdWJQYXJ0cy5sZW5ndGgpXG4gICAgICAgICAgICBhbWlubyArPSBgJHthbWlubyA/ICcnIDogJy0nfSR7Z2FwfWA7XG4gICAgICAgIHRleHQucHVzaChhbWlubyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt0ZXh0LCBzaW1wbGlmaWVkXTtcbn1cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHByaW50cyBhIHN0cmluZyBhbGlnbmVkIHRvIGxlZnQgb3IgY2VudGVyZWQuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHkgeSBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHcgV2lkdGguXG4gKiBAcGFyYW0ge251bWJlcn0gaCBIZWlnaHQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gZyBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcyBTdHJpbmcgdG8gcHJpbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbG9yPUNoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yXSBTdHJpbmcgY29sb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gW3Bpdm90PTBdIFBpcnZvdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xlZnQ9ZmFsc2VdIElzIGxlZnQgYWxpZ25lZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2hpZGVNb2Q9ZmFsc2VdIEhpZGUgYW1pbm8gYWNpZCByZWRpZHVlIG1vZGlmaWNhdGlvbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5mdW5jdGlvbiBwcmludExlZnRPckNlbnRlcmVkKHgsIHksIHcsIGgsIGcsIHMsIGNvbG9yID0gQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3IsIHBpdm90ID0gMCwgbGVmdCA9IGZhbHNlLCBoaWRlTW9kID0gZmFsc2UsIHRyYW5zcGFyZW5jeVJhdGUgPSAxLjAsIHNlcGFyYXRvciA9ICcnKSB7XG4gICAgZy50ZXh0QWxpZ24gPSAnc3RhcnQnO1xuICAgIGxldCBjb2xvclBhcnQgPSBzLnN1YnN0cmluZygwKTtcbiAgICBsZXQgZ3JheVBhcnQgPSBzZXBhcmF0b3I7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCArIGdyYXlQYXJ0KTtcbiAgICBjb25zdCBpbmRlbnQgPSA1O1xuICAgIGNvbnN0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCk7XG4gICAgY29uc3QgZHkgPSAodGV4dFNpemUuZm9udEJvdW5kaW5nQm94QXNjZW50ICsgdGV4dFNpemUuZm9udEJvdW5kaW5nQm94RGVzY2VudCkgLyAyO1xuICAgIGZ1bmN0aW9uIGRyYXcoZHgxLCBkeDIpIHtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgZy5nbG9iYWxBbHBoYSA9IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgICAgIGcuZmlsbFRleHQoY29sb3JQYXJ0LCB4ICsgZHgxLCB5ICsgZHkpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9ICcjODA4MDgwJztcbiAgICAgICAgZy5maWxsVGV4dChncmF5UGFydCwgeCArIGR4MiwgeSArIGR5KTtcbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUud2lkdGggPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBjb2xvclRleHRTaXplLndpZHRoICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUud2lkdGgpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIGNvbG9yVGV4dFNpemUud2lkdGg7XG4gICAgfVxufVxuZnVuY3Rpb24gcmVuZGVyU2VxdWVuc2UoZywgeCwgeSwgdywgaCwgZ3JpZENlbGwsIGNlbGxTdHlsZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgZ3JpZCA9IGdyaWRDZWxsLmdyaWQ7XG4gICAgY29uc3QgY2VsbCA9IGdyaWRDZWxsLmNlbGw7XG4gICAgY29uc3QgW3R5cGUsIHN1YnR5cGUsIHBhbGV0dGVUeXBlXSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKS5zcGxpdChcIjpcIik7XG4gICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgIGcuc2F2ZSgpO1xuICAgIGcuYmVnaW5QYXRoKCk7XG4gICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgIGcuY2xpcCgpO1xuICAgIGcuZm9udCA9ICcxMnB4IG1vbm9zcGFjZSc7XG4gICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICBjb25zdCBzID0gKF9hID0gY2VsbC52YWx1ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgLy9UT0RPOiBjYW4gdGhpcyBiZSByZXBsYWNlZC9tZXJnZWQgd2l0aCBzcGxpdFNlcXVlbmNlP1xuICAgIGNvbnN0IHVuaXRzID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSBnZXRQYWxsZXRlQnlUeXBlKHBhbGV0dGVUeXBlKTtcbiAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKTsgLy8gc3BsaXR0ZXIsXG4gICAgY29uc3Qgc3ViUGFydHMgPSBzcGxpdHRlckZ1bmMoY2VsbC52YWx1ZSk7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KHN1YlBhcnRzLmpvaW4oJycpKTtcbiAgICBsZXQgeDEgPSBNYXRoLm1heCh4LCB4ICsgKHcgLSB0ZXh0U2l6ZS53aWR0aCkgLyAyKTtcbiAgICBzdWJQYXJ0cy5mb3JFYWNoKChhbWlubywgaW5kZXgpID0+IHtcbiAgICAgICAgbGV0IFtjb2xvciwgb3V0ZXJBbWlubywgLCBwaXZvdF0gPSBDaGVtUGFsZXR0ZS5nZXRDb2xvckFBUGl2b3QoYW1pbm8pO1xuICAgICAgICBjb2xvciA9IHBhbGV0dGUuZ2V0KGFtaW5vKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBDaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvcjtcbiAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIHBpdm90LCB0cnVlLCBmYWxzZSwgMS4wLCBzZXBhcmF0b3IpO1xuICAgIH0pO1xuICAgIGcucmVzdG9yZSgpO1xufVxuZXhwb3J0IGNsYXNzIE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlciBleHRlbmRzIERHLkdyaWRDZWxsUmVuZGVyZXIge1xuICAgIGdldCBuYW1lKCkgeyByZXR1cm4gJ21hY3JvbW9sZWN1bGVTZXF1ZW5jZSc7IH1cbiAgICBnZXQgY2VsbFR5cGUoKSB7IHJldHVybiBDLlNFTV9UWVBFUy5NYWNyb19Nb2xlY3VsZTsgfVxuICAgIGdldCBkZWZhdWx0SGVpZ2h0KCkgeyByZXR1cm4gMzA7IH1cbiAgICBnZXQgZGVmYXVsdFdpZHRoKCkgeyByZXR1cm4gMjMwOyB9XG4gICAgLyoqXG4gICAgICogQ2VsbCByZW5kZXJlciBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBnIENhbnZhcyByZW5kZXJpbmcgY29udGV4dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geCB4IGNvb3JkaW5hdGUgb24gdGhlIGNhbnZhcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSB5IGNvb3JkaW5hdGUgb24gdGhlIGNhbnZhcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdyB3aWR0aCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaCBoZWlnaHQgb2YgdGhlIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbH0gZ3JpZENlbGwgR3JpZCBjZWxsLlxuICAgICAqIEBwYXJhbSB7REcuR3JpZENlbGxTdHlsZX0gY2VsbFN0eWxlIENlbGwgc3R5bGUuXG4gICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUNlbGxSZW5kZXJlclxuICAgICAqL1xuICAgIHJlbmRlcihnLCB4LCB5LCB3LCBoLCBncmlkQ2VsbCwgY2VsbFN0eWxlKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkO1xuICAgICAgICBjb25zdCBjZWxsID0gZ3JpZENlbGwuY2VsbDtcbiAgICAgICAgY29uc3QgdGFnID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBpZiAodGFnID09PSAnSEVMTScpIHtcbiAgICAgICAgICAgIGxldCBob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt3fXB4YCwgaGVpZ2h0OiBgJHtofXB4YCB9IH0pO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGFmb3JtYXQnLCAnaGVsbScpO1xuICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEnLCBncmlkQ2VsbC5jZWxsLnZhbHVlKTtcbiAgICAgICAgICAgIGdyaWRDZWxsLmVsZW1lbnQgPSBob3N0O1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgc2tpbjogXCJ3OFwiLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHZhciBmb3JtdWxhID0gY2FudmFzLmdldEZvcm11bGEodHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIWZvcm11bGEpIHtcbiAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gdWkuZGl2VGV4dChncmlkQ2VsbC5jZWxsLnZhbHVlLCB7IHN0eWxlOiB7IGNvbG9yOiAncmVkJyB9IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAgICAgdmFyIG1vbFdlaWdodCA9IE1hdGgucm91bmQoY2FudmFzLmdldE1vbFdlaWdodCgpICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgICAgICB2YXIgY29lZiA9IE1hdGgucm91bmQoY2FudmFzLmdldEV4dGluY3Rpb25Db2VmZmljaWVudCh0cnVlKSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgdmFyIG1vbGZpbGUgPSBjYW52YXMuZ2V0TW9sZmlsZSgpO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBmb3JtdWxhICsgJywgJyArIG1vbFdlaWdodCArICcsICcgKyBjb2VmICsgJywgJyArIG1vbGZpbGU7XG4gICAgICAgICAgICAgICAgbHJ1LnNldChncmlkQ2VsbC5jZWxsLnZhbHVlLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3R5cGUsIHN1YnR5cGUsIHBhbGV0dGVUeXBlXSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgICB3ID0gZ3JpZCA/IE1hdGgubWluKGdyaWQuY2FudmFzLndpZHRoIC0geCwgdykgOiBnLmNhbnZhcy53aWR0aCAtIHg7XG4gICAgICAgICAgICBnLnNhdmUoKTtcbiAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICBnLnJlY3QoeCwgeSwgdywgaCk7XG4gICAgICAgICAgICBnLmNsaXAoKTtcbiAgICAgICAgICAgIGcuZm9udCA9ICcxMnB4IG1vbm9zcGFjZSc7XG4gICAgICAgICAgICBnLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgcyA9IChfYSA9IGNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgLy9UT0RPOiBjYW4gdGhpcyBiZSByZXBsYWNlZC9tZXJnZWQgd2l0aCBzcGxpdFNlcXVlbmNlP1xuICAgICAgICAgICAgY29uc3QgdW5pdHMgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICBjb25zdCBwYWxldHRlID0gZ2V0UGFsbGV0ZUJ5VHlwZShwYWxldHRlVHlwZSk7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0dGVyRnVuYyA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZygnc2VwYXJhdG9yJykpOyAvLyBzcGxpdHRlcixcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnRzID0gc3BsaXR0ZXJGdW5jKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3ViUGFydHMpO1xuICAgICAgICAgICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KHN1YlBhcnRzLmpvaW4oJycpKTtcbiAgICAgICAgICAgIGxldCB4MSA9IE1hdGgubWF4KHgsIHggKyAodyAtIHRleHRTaXplLndpZHRoKSAvIDIpO1xuICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IFtjb2xvciwgb3V0ZXJBbWlubywgLCBwaXZvdF0gPSBDaGVtUGFsZXR0ZS5nZXRDb2xvckFBUGl2b3QoYW1pbm8pO1xuICAgICAgICAgICAgICAgIGNvbG9yID0gcGFsZXR0ZS5nZXQoYW1pbm8pO1xuICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3I7XG4gICAgICAgICAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIHBpdm90LCB0cnVlLCBmYWxzZSwgMS4wLCBzZXBhcmF0b3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnLnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmV4cG9ydCBjbGFzcyBDaGVtUGFsZXR0ZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDaGVtUGFsZXR0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWUgQ29sb3Igc2NoZW1lIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtncm91cGluZz1mYWxzZV0gSXMgZ3JvdXBpbmcgZW5hYmxlZC5cbiAgICAgKiBAbWVtYmVyb2YgQ2hlbVBhbGV0dGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzY2hlbWUsIGdyb3VwaW5nID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5jcCA9IHt9O1xuICAgICAgICB0aGlzLmlzSW5pdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vbm9tZXJMaWIgPSBudWxsO1xuICAgICAgICBpZiAoc2NoZW1lID09ICdncm9rJylcbiAgICAgICAgICAgIHRoaXMuY3AgPSBDaGVtUGFsZXR0ZS5nZXREYXRhZ3Jvayhncm91cGluZyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgMkQgcmVwcmVzZW50YXRpb24gb2YgYSBhbWlubyBhY2lkIHJlc2lkdWUgaW4gYSB0b29sdGlwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbH0gY2VsbCBHcmlkIGNlbGwgdG8gc2hvdyB0b29sdGlwIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlIG9mIHRoZSBtb3VzZSBwb2ludGVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvZiB0aGUgbW91c2UgcG9pbnRlci5cbiAgICAgKiBAcGFyYW0ge01vbm9tZXJMaWJyYXJ5fSBtb25vbWVyTGliIE1vbm9tZXIgTGlicmFyeSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHN0YXRpYyBzaG93VG9vbHRpcChjZWxsLCB4LCB5LCBtb25vbWVyTGliKSB7XG4gICAgICAgIGNvbnN0IHMgPSBjZWxsLmNlbGwudmFsdWU7XG4gICAgICAgIGxldCB0b0Rpc3BsYXkgPSBbdWkuZGl2VGV4dChzKV07XG4gICAgICAgIGNvbnN0IFssIGFhck91dGVyLCBhYXJJbm5lcl0gPSBDaGVtUGFsZXR0ZS5nZXRDb2xvckFBUGl2b3Qocyk7XG4gICAgICAgIGZvciAoY29uc3QgYWFyIG9mIFthYXJPdXRlciwgYWFySW5uZXJdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lckxpYi5tb25vbWVyTmFtZXMuaW5jbHVkZXMoYWFyKSkge1xuICAgICAgICAgICAgICAgIGlmIChhYXIgaW4gQ2hlbVBhbGV0dGUuQUFOYW1lcylcbiAgICAgICAgICAgICAgICAgICAgdG9EaXNwbGF5ID0gW3VpLmRpdlRleHQoQ2hlbVBhbGV0dGUuQUFOYW1lc1thYXJdKV07XG4gICAgICAgICAgICAgICAgaWYgKGFhciBpbiBDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lcylcbiAgICAgICAgICAgICAgICAgICAgdG9EaXNwbGF5ID0gW3VpLmRpdlRleHQoQ2hlbVBhbGV0dGUuQUFOYW1lc1tDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lc1thYXJdXSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGF1dG9Dcm9wOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhdXRvQ3JvcE1hcmdpbjogMCxcbiAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NDaGlyYWxUZXh0OiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3Qgc2tldGNoID0gZ3Jvay5jaGVtLnN2Z01vbChtb25vbWVyTGliLmdldE1vbm9tZXJNb2woYWFyKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGlmICh0b0Rpc3BsYXkubGVuZ3RoID09IDIpXG4gICAgICAgICAgICAgICAgICAgIHRvRGlzcGxheS5wdXNoKHVpLmRpdlRleHQoJ01vZGlmaWVkJykpO1xuICAgICAgICAgICAgICAgIHRvRGlzcGxheS5wdXNoKHNrZXRjaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdWkudG9vbHRpcC5zaG93KHVpLmRpdlYodG9EaXNwbGF5KSwgeCwgeSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVyc24gZGl2aWRlZCBhbWlubyB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29uZXRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IENoZW1QYWxldHRlLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSBDaGVtUGFsZXR0ZS5nZXRJbm5lck91dGVyKG1vbm9tZXIpO1xuICAgICAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgICAgIGlubmVyTW9ub21lciA9IChpbm5lck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke2lubmVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogaW5uZXJNb25vbWVyKTtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9hID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW0NoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXJbMF0gPT0gJ2QnICYmIG1vbm9tZXJbMV0gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDIgfHwgbW9ub21lclsyXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYiA9IG1vbm9tZXJbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFtDaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygwLCAzKSBpbiBDaGVtUGFsZXR0ZS5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IENoZW1QYWxldHRlLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gQ2hlbVBhbGV0dGUuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gNCB8fCBtb25vbWVyWzRdID09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IENoZW1QYWxldHRlLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCA0XSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBbQ2hlbVBhbGV0dGUudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtDaGVtUGFsZXR0ZS51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgZ3JvdXBpbmcgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG4gICAgICAgIGxldCBjdXJyZW50R3JvdXAgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb2xvciwgbW9ub21lcnNdIG9mIE9iamVjdC5lbnRyaWVzKGR0KSkge1xuICAgICAgICAgICAgbW9ub21lcnMuZm9yRWFjaCgobW9ub21lciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW2dyb3VwaW5nID8gZ3JvdXBzW2N1cnJlbnRHcm91cF0gOiBtb25vbWVyXSA9IENoZW1QYWxldHRlLmNvbG91clBhbGV0dGVbY29sb3JdW3NpbXBsaWZpZWQgPyAwIDogaW5kZXhdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjdXJyZW50R3JvdXArKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFsZXR0ZTtcbiAgICB9XG4gICAgc3RhdGljIGdldERhdGFncm9rKGdyb3VwaW5nID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIENoZW1QYWxldHRlLm1ha2VQYWxldHRlKENoZW1QYWxldHRlLmdyb2tHcm91cHMsIGZhbHNlLCBncm91cGluZyk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSkge1xuICAgICAgICBpZiAoc2NoZW1lID09ICdncm9rJylcbiAgICAgICAgICAgIHJldHVybiBDaGVtUGFsZXR0ZS5nZXREYXRhZ3JvaygpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxufVxuQ2hlbVBhbGV0dGUuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbkNoZW1QYWxldHRlLmdyb2tHcm91cHMgPSB7XG4gICAgJ3llbGxvdyc6IFsnQycsICdVJ10sXG4gICAgJ3JlZCc6IFsnRycsICdQJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsnQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ1InLCAnSCcsICdLJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsnRCcsICdFJ10sXG4gICAgJ29yYW5nZSc6IFsnUycsICdUJywgJ04nLCAnUSddLFxufTtcbkNoZW1QYWxldHRlLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQ2hlbVBhbGV0dGUuQUFOYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5DaGVtUGFsZXR0ZS5BQVNtaWxlcyA9IHtcbiAgICAnRyc6ICdOQ0MoPU8pTycsXG4gICAgJ0wnOiAnTltDQEhdKENDKEMpQylDKD1PKU8nLFxuICAgICdZJzogJ05DKENDMT1DQz1DKE8pQz1DMSlDKD1PKU8nLFxuICAgICdTJzogJ05DKENPKUMoPU8pTycsXG4gICAgJ0UnOiAnTltDQEBIXShDQ0MoTyk9TylDKD1PKU8nLFxuICAgICdRJzogJ05bQ0BASF0oQ0NDKE4pPU8pQyg9TylPJyxcbiAgICAnRCc6ICdOW0NAQEhdKENDKE8pPU8pQyg9TylPJyxcbiAgICAnTic6ICdOW0NAQEhdKENDKE4pPU8pQyg9TylPJyxcbiAgICAnRic6ICdOQyhDQzE9Q0M9Q0M9QzEpQyg9TylPJyxcbiAgICAnQSc6ICdOW0NASF0oQylDKD1PKU8nLFxuICAgICdLJzogJ05DKENDQ0NOKUMoPU8pTycsXG4gICAgJ1InOiAnTltDQEhdKENDQ05DKD1OKUMpQyg9TylPJyxcbiAgICAnSCc6ICdOQyhDQzE9Q049Q1tOXTEpQyg9TylPJyxcbiAgICAnQyc6ICdOW0NAQEhdKENTKUMoPU8pTycsXG4gICAgJ1YnOiAnTkMoQyhDKUMpQyg9TylPJyxcbiAgICAnUCc6ICdOKENDQzEpQzFDKD1PKU8nLFxuICAgICdXJzogJ05bQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSlDKD1PKU8nLFxuICAgICdJJzogJ05bQ0BIXShbQ0BIXShDKUNDKUMoPU8pTycsXG4gICAgJ00nOiAnTkMoQ0NTQylDKD1PKU8nLFxuICAgICdUJzogJ05DKEMoTylDKUMoPU8pTycsXG59O1xuQ2hlbVBhbGV0dGUuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuQ2hlbVBhbGV0dGUuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbiIsImV4cG9ydCB2YXIgQ09MVU1OU19OQU1FUztcbihmdW5jdGlvbiAoQ09MVU1OU19OQU1FUykge1xuICAgIENPTFVNTlNfTkFNRVNbXCJTUExJVF9DT0xcIl0gPSBcIn5zcGxpdFwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBQ1RJVklUWVwiXSA9IFwifmFjdGl2aXR5XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlfc2NhbGVkXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcIn5hbGlnbmVkX3NlcXVlbmNlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFNSU5PX0FDSURfUkVTSURVRVwiXSA9IFwiQUFSXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUF9WQUxVRVwiXSA9IFwicFZhbHVlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIk1FQU5fRElGRkVSRU5DRVwiXSA9IFwiTWVhbiBkaWZmZXJlbmNlXCI7XG59KShDT0xVTU5TX05BTUVTIHx8IChDT0xVTU5TX05BTUVTID0ge30pKTtcbmV4cG9ydCB2YXIgQ0FURUdPUklFUztcbihmdW5jdGlvbiAoQ0FURUdPUklFUykge1xuICAgIENBVEVHT1JJRVNbXCJPVEhFUlwiXSA9IFwiT3RoZXJcIjtcbiAgICBDQVRFR09SSUVTW1wiQUxMXCJdID0gXCJBbGxcIjtcbn0pKENBVEVHT1JJRVMgfHwgKENBVEVHT1JJRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBUQUdTO1xuKGZ1bmN0aW9uIChUQUdTKSB7XG4gICAgVEFHU1tcIkFBUlwiXSA9IFwiQUFSXCI7XG4gICAgVEFHU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBUQUdTW1wiU0VQQVJBVE9SXCJdID0gXCJtb25vbWVyLXNlcGFyYXRvclwiO1xuICAgIFRBR1NbXCJTRUxFQ1RJT05cIl0gPSBcInNlbGVjdGlvblwiO1xufSkoVEFHUyB8fCAoVEFHUyA9IHt9KSk7XG5leHBvcnQgdmFyIFNFTV9UWVBFUztcbihmdW5jdGlvbiAoU0VNX1RZUEVTKSB7XG4gICAgU0VNX1RZUEVTW1wiQU1JTk9fQUNJRFNcIl0gPSBcImFtaW5vQWNpZHNcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFXCJdID0gXCJhbGlnbmVkU2VxdWVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFX0RJRkZFUkVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZURpZmZlcmVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWVwiXSA9IFwiYWN0aXZpdHlcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWV9TQ0FMRURcIl0gPSBcImFjdGl2aXR5U2NhbGVkXCI7XG4gICAgU0VNX1RZUEVTW1wiTWFjcm9fTW9sZWN1bGVcIl0gPSBcIk1hY3JvbW9sZWN1bGVcIjtcbn0pKFNFTV9UWVBFUyB8fCAoU0VNX1RZUEVTID0ge30pKTtcbmV4cG9ydCBjb25zdCBTVEFUUyA9ICdzdGF0cyc7XG5leHBvcnQgY29uc3QgRU1CRURESU5HX1NUQVRVUyA9ICdlbWJlZGRpbmdTdGF0dXMnO1xuZXhwb3J0IGNvbnN0IFBFUFRJREVTX0FOQUxZU0lTID0gJ2lzUGVwdGlkZXNBbmFseXNpcyc7XG5leHBvcnQgdmFyIEZMQUdTO1xuKGZ1bmN0aW9uIChGTEFHUykge1xuICAgIEZMQUdTW1wiQ0VMTF9DSEFOR0lOR1wiXSA9IFwiaXNDZWxsQ2hhbmdpbmdcIjtcbn0pKEZMQUdTIHx8IChGTEFHUyA9IHt9KSk7XG5leHBvcnQgY29uc3QgYWFyR3JvdXBzID0ge1xuICAgICdSJzogJ1BDJywgJ0gnOiAnUEMnLCAnSyc6ICdQQycsXG4gICAgJ0QnOiAnTkMnLCAnRSc6ICdOQycsXG4gICAgJ1MnOiAnVScsICdUJzogJ1UnLCAnTic6ICdVJywgJ1EnOiAnVScsXG4gICAgJ0MnOiAnU0MnLCAnVSc6ICdTQycsICdHJzogJ1NDJywgJ1AnOiAnU0MnLFxuICAgICdBJzogJ0gnLCAnVic6ICdIJywgJ0knOiAnSCcsICdMJzogJ0gnLCAnTSc6ICdIJywgJ0YnOiAnSCcsICdZJzogJ0gnLCAnVyc6ICdIJyxcbiAgICAnLSc6ICctJyxcbn07XG5leHBvcnQgY29uc3QgZ3JvdXBEZXNjcmlwdGlvbiA9IHtcbiAgICAnUEMnOiB7ICdkZXNjcmlwdGlvbic6ICdQb3NpdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydSJywgJ0gnLCAnSyddIH0sXG4gICAgJ05DJzogeyAnZGVzY3JpcHRpb24nOiAnTmVnYXRpdmUgQW1pbm8gQWNpZHMsIHdpdGggRWxlY3RyaWNhbGx5IENoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnRCcsICdFJ10gfSxcbiAgICAnVSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggUG9sYXIgVW5jaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1MnLCAnVCcsICdOJywgJ1EnXSB9LFxuICAgICdTQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1NwZWNpYWwgQ2FzZXMnLCAnYW1pbm9BY2lkcyc6IFsnQycsICdVJywgJ0cnLCAnUCddIH0sXG4gICAgJ0gnOiB7XG4gICAgICAgICdkZXNjcmlwdGlvbic6ICdBbWlubyBBY2lkcyB3aXRoIEh5ZHJvcGhvYmljIFNpZGUgQ2hhaW4nLFxuICAgICAgICAnYW1pbm9BY2lkcyc6IFsnQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sXG4gICAgfSxcbiAgICAnLSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Vua25vd24gQW1pbm8gQWNpZCcsICdhbWlub0FjaWRzJzogWyctJ10gfSxcbn07XG4iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgTm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuL25vdGF0aW9uLWNvbnZlcnRlcic7XG4vKipcbiAqIENvbnZlcnRzIG5vdGF0aW9ucyBvZiBhIE1hY3JvbW9sZWN1bGUgY29sdW1uXG4gKlxuICogQHBhcmFtIHtERy5jb2x1bW59IGNvbCBDb2x1bW4gd2l0aCAnTWFjcm9tb2xlY3VsZScgc2VtYW50aWMgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydChjb2wpIHtcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCBjdXJyZW50ID0gY29udmVydGVyLnNvdXJjZU5vdGF0aW9uO1xuICAgIC8vVE9ETzogcmVhZCBhbGwgbm90YXRpb25zXG4gICAgY29uc3Qgbm90YXRpb25zID0gW1xuICAgICAgICBcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sXG4gICAgICAgIFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLFxuICAgICAgICBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovXG4gICAgXTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IG5vdGF0aW9ucy5maWx0ZXIoKGUpID0+IGUgIT09IGN1cnJlbnQpO1xuICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uSW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnQ29udmVydCB0bycsIGZpbHRlcmVkWzBdLCBmaWx0ZXJlZCk7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnc2VwYXJhdG9yJywgJy0nLCBbJy0nLCAnLicsICcvJ10pO1xuICAgIHVpLmRpYWxvZygnQ29udmVydCBzZXF1ZW5jZScpXG4gICAgICAgIC5hZGQodWkuZGl2KFtcbiAgICAgICAgdWkuaDEoJ2N1cnJlbnQgbm90YXRpb24nKSxcbiAgICAgICAgdWkuZGl2KGN1cnJlbnQpLFxuICAgICAgICB0YXJnZXROb3RhdGlvbklucHV0LnJvb3RcbiAgICBdKSlcbiAgICAgICAgLmFkZCh1aS5kaXYoW1xuICAgICAgICB1aS5oMSgnU2VwYXJhdG9yJyksXG4gICAgICAgIHNlcGFyYXRvcklucHV0LFxuICAgIF0pKVxuICAgICAgICAub25PSygoKSA9PiB7XG4gICAgICAgIC8vVE9ETzogY3JlYXRlIG5ldyBjb252ZXJ0ZWQgY29sdW1uXG4gICAgICAgIC8vY29uc3QgdGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OID0gc3RyVG9FbnVtPE5PVEFUSU9OPihOT1RBVElPTiwgdGFyZ2V0Tm90YXRpb25JbnB1dC52YWx1ZSkhO1xuICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IHRhcmdldE5vdGF0aW9uSW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHNlcGFyYXRvcklucHV0LnZhbHVlO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBjb252ZXJ0ZXIuY29udmVydCh0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgY29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgIH0pXG4gICAgICAgIC5zaG93KCk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCBBaW9saSBmcm9tICdAYmlvd2FzbS9haW9saSc7XG5pbXBvcnQgeyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXInO1xuLyoqXG4gKiBDb252ZXJ0cyBhcnJheSBvZiBzZXF1ZW5jZXMgaW50byBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNlcXVlbmNlcyBJbnB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcykge1xuICAgIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCB2LCBpKSA9PiBhICsgYD5zYW1wbGUke2kgKyAxfVxcbiR7dn1cXG5gLCAnJyk7XG59XG4vKipcbiAqIEV4dHJhY3RzIGFycmF5IG9mIHNlcXVlbmNlcyBmcm9tIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhIEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gT3V0cHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICovXG5mdW5jdGlvbiBfZmFzdGFUb1N0cmluZ3MoZmFzdGEpIHtcbiAgICByZXR1cm4gZmFzdGEucmVwbGFjZSgvPnNhbXBsZVxcZCsoXFxyXFxufFxccnxcXG4pL2csICcnKS5zcGxpdCgnXFxuJyk7XG59XG4vKipcbiAqIFJ1bnMgQWlvbGkgZW52aXJvbm1lbnQgd2l0aCBrYWxpZ24gdG9vbC5cbiAqXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc3JjQ29sIENvbHVtbiB3aXRoIHNlcXVlbmNlcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbGlnbmVkIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBhbGlnbmVkLlxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zdCBidWYgPSB5aWVsZCBDTEkuY2F0KCdyZXN1bHQuZmFzdGEnKTtcbiAgICAgICAgY29uc29sZS53YXJuKG91dHB1dCk7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBfZmFzdGFUb1N0cmluZ3MoYnVmKS5zbGljZSgwLCBzZXF1ZW5jZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdGd0Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKGBtc2EoJHtzcmNDb2wubmFtZX0pYCwgYWxpZ25lZCk7XG4gICAgICAgIC8vIHVuaXRzXG4gICAgICAgIGNvbnN0IHNyY1VuaXRzID0gc3JjQ29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgY29uc3QgdGd0VW5pdHMgPSBzcmNVbml0cy5zcGxpdCgnOicpLm1hcCgocCwgaSkgPT4gaSA9PSAxID8gcCArICcuTVNBJyA6IHApLmpvaW4oJzonKTtcbiAgICAgICAgdGd0Q29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0Z3RVbml0cyk7XG4gICAgICAgIHRndENvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgICAgICByZXR1cm4gdGd0Q29sO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RNU0FFbm91Z2hNZW1vcnkoY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VzQ291bnQgPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBkZWx0YSA9IHNlcXVlbmNlc0NvdW50IC8gMTAwO1xuICAgICAgICBmb3IgKGxldCBpID0gZGVsdGE7IGkgPCBzZXF1ZW5jZXNDb3VudDsgaSArPSBkZWx0YSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB5aWVsZCBydW5LYWxpZ24oREcuQ29sdW1uLmZyb21TdHJpbmdzKGNvbC5uYW1lLCBjb2wudG9MaXN0KCkuc2xpY2UoMCwgTWF0aC5yb3VuZChpKSkpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgcnVuS2FsaWduIHN1Y2NlZWRlZCBvbiAke2l9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgcnVuS2FsaWduIGZhaWxlZCBvbiAke2l9IHdpdGggJyR7ZXJyb3J9J2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbi8qKiBDbGFzcyBmb3IgaGFuZGxpbmcgY29udmVyc2lvbiBvZiBub3RhdGlvbiBzeXN0ZW1zIGluIE1hY3JvbW9sZWN1bGUgY29sdW1ucyAqL1xuZXhwb3J0IGNsYXNzIE5vdGF0aW9uQ29udmVydGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihjb2wpIHtcbiAgICAgICAgdGhpcy5fc291cmNlQ29sdW1uID0gY29sO1xuICAgICAgICB0aGlzLl9zb3VyY2VVbml0cyA9IHRoaXMuX3NvdXJjZUNvbHVtbi50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgICAgICB0aGlzLl9zb3VyY2VOb3RhdGlvbiA9IHRoaXMuZGV0ZXJtaW5lU291cmNlTm90YXRpb24oKTtcbiAgICB9XG4gICAgZ2V0IHNvdXJjZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fc291cmNlVW5pdHM7IH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICAvLyBUT0RPOiBpc1JuYVxuICAgIGlzUm5hKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdudCcpOyB9XG4gICAgaXNQZXB0aWRlKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCdwdCcpOyB9XG4gICAgLyoqIEFzc29jaWF0ZSBub3RhdGlvbiB0eXBlcyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHVuaXRzICovXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Tk9UQVRJT059IG5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGRldGVybWluZVNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIC8vIFRPRE86IGhhbmRsZSBwb3NzaWJsZSBleGNlcHRpb25zXG4gICAgICAgICAgICByZXR1cm4gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICB9XG4gICAgLy8gVE9ETzogd3JpdGUgZG9jXG4gICAgZ2V0TmV3Q29sdW1uKHRhcmdldE5vdGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuc291cmNlQ29sdW1uO1xuICAgICAgICBjb25zdCBsZW4gPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYW1lID0gdGFyZ2V0Tm90YXRpb24gKyAnKCcgKyBjb2wubmFtZSArICcpJztcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9IGNvbC5kYXRhRnJhbWUuY29sdW1ucy5nZXRVbnVzZWROYW1lKG5hbWUpO1xuICAgICAgICAvLyBkdW1teSBjb2RlXG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgY29uc3QgbmV3VW5pdHMgPSB0aGlzLnNvdXJjZVVuaXRzLnJlcGxhY2UodGhpcy5zb3VyY2VOb3RhdGlvbi50b1N0cmluZygpLCB0YXJnZXROb3RhdGlvbi50b1N0cmluZygpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBuZXdVbml0cyk7XG4gICAgICAgIC8vIFRPRE86IGRldGVybWluZSBhbGwgdGhlIHF1YWxpZmllcnMgKHVuaXRzLCAuLi4pLCBwZXJoYXBzLCB1c2luZyBkZXRlY3RvcnNcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLy8gVE9ETzogd3JpdGUgZG9jXG4gICAgY29udmVydEZhc3RhVG9TZXBhcmF0b3Ioc2VwYXJhdG9yKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIC8vICogc3BlY2lmeSBzZXBhcmF0b3JcbiAgICAgICAgLy8gKiBmYXN0YSBnYXAgc3ltYm9sIHNob3VsZCBOT1QgYmUgY29uc2lkZXJlZCAnLScgb25seSwgYnV0IHNldCBhcyBhIHBhcmFtZXRlclxuICAgICAgICAvLyAqIGluIGZhc3RhIGV2ZXJ5IHBvc2l0aW9uIGlzIGEgbW9ub21lciAobm8gbXVsdGktY2hhciBtb25vbWVycyksIGNhbGwgc3BsaXRUb01vbm9tZXJzKCkgbWV0aG9kXG4gICAgICAgIC8vICogaW4gdGhlIHJlc3VsdGluZyBqYWdnZWQgYXJyYXksIGV2ZXJ5IGdhcCBzeW1ib2wgaXMgdG8gYmUgcmVwbGFjZWQgYnlcbiAgICAgICAgLy8gdGhlIGVtcHR5IHN0cmluZywgd2hpbGUgdGhlIG1vbm9tZXJzLCB0byBiZSBzZXBhcmF0ZWQgYnkgdGhlIHNlcGFyYXRvclxuICAgICAgICAvLyAoc3BlY2lmaWVkIGFzIGEgcGFyYW1ldGVyKVxuICAgICAgICAvLyBPbiBzcGxpdFRvTW9ub21lcnMoKTogL2xpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvV2ViTG9nbyAtLT4gZ2V0U3BsaXR0ZXJcbiAgICAgICAgY29uc3QgZ2FwU3ltYm9sID0gJy0nOyAvLyB0byBiZSBzcGVjaWZpZWQgYXMgYW4gYXJndW1lbnRcbiAgICAgICAgY29uc3Qgc3BsaXR0ZXJBc0Zhc3RhID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgY29uc3QgbW9ub21lcnNBcnJheSA9IHNwbGl0dGVyQXNGYXN0YShzb3VyY2VQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyc0FycmF5W2ldID09PSBnYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzQXJyYXlbaV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIHdyYXBSbmFOdWNsZW90aWRlVG9IZWxtKG1vbm9tZXIpIHtcbiAgICB9XG4gICAgY29udmVydEZhc3RhVG9IZWxtKCkge1xuICAgICAgICBjb25zdCBnYXBTeW1ib2wgPSAnLSc7IC8vIHRvIGJlIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudFxuICAgICAgICBjb25zdCBzcGxpdHRlckFzRmFzdGEgPSBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJzQXJyYXkgPSBzcGxpdHRlckFzRmFzdGEoc291cmNlUG9seW1lcik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAvLyAvLyBUT0RPOiBoYW5kbGUgZ2FwIHN5bWJvbHMgLS0gcmVwbGFjZSBieSBhc3Rlcmlza1xuICAgICAgICAgICAgICAgIC8vIGlmIChtb25vbWVyc0FycmF5W2ldID09PSBnYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgLy8gICBtb25vbWVyc0FycmF5W2ldID0gJyonO1xuICAgICAgICAgICAgICAgIC8vIGVsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE86IGRldGVybWluZSBjb25kaXRpb25hbGx5IChpZiBpc0RuYSgpLCBvciBpc1JuYSgpLCBvciBpc1BlcHRpZGUoKSkgdGhlIHRlbXBsYXRlXG4gICAgICAgICAgICByZXR1cm4gbW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICAvLyAqIHNpbWlsYXJseSB0byBmYXN0YTJzZXBhcmF0b3IsIGRpdmlkZSBzdHJpbmcgaW50byBtb25vbWVyc1xuICAgICAgICAvLyAqIGFkamFjZW50IHNlcGFyYXRvcnMgaXMgYSBnYXAgKHN5bWJvbCB0byBiZSBzcGVjaWZpZWQpXG4gICAgICAgIC8vICogdGhlIG1vbm9tZXJzIE1VU1QgYmUgc2luZ2xlLWNoYXJhY3RlciBvbmxlcywgb3RoZXJ3aXNlIGZvcmJpZFxuICAgICAgICAvLyBjb252ZXJzaW9uXG4gICAgICAgIC8vZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yXG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgIH1cbiAgICBjb252ZXJ0U2VwYXJhdG9yVG9IZWxtKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9GYXN0YSgpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKFwiZmFzdGFcIiAvKiBOT1RBVElPTi5GQVNUQSAqLyk7XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9yZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICB9XG4gICAgLyoqIERpc3BhdGNoZXIgbWV0aG9kIGZvciBub3RhdGlvbiBjb252ZXJzaW9uICovXG4gICAgLy8gVE9ETzogd3JpdGUgdGhlIGJvZGllcyBvZiBjb252ZXJ0ZXIgbWV0aG9kc1xuICAgIGNvbnZlcnQodGFyZ2V0Tm90YXRpb24sIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gdGFyZ2V0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhcmdldCBub3RhdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvcik7IC8vIHRoZXJlIGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIGEgc2VwYXJhdG9yIGlzIG5lZWRlZFxuICAgICAgICBlbHNlIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvSGVsbSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RmFzdGFUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0hlbG0odGFyZ2V0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0YXJnZXROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvRmFzdGEoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub1NlcGFyYXRvcigpO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcyhjb2wsIHNlcSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gY29sLnRvTGlzdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBuZXcgQXJyYXkoc3RyaW5nQXJyYXkubGVuZ3RoKS5maWxsKDAuMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBkaXN0YW5jZXNbaV0gPSBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddWydMZXZlbnNodGVpbiddKHN0cmluZ0FycmF5W2ldLCBzZXEpKTtcbiAgICAgICAgcmV0dXJuIERHLkNvbHVtbi5mcm9tTGlzdChERy5DT0xVTU5fVFlQRS5GTE9BVCwgJ2Rpc3RhbmNlcycsIGRpc3RhbmNlcyk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd1Rvb2x0aXAocGFyYW1zKSB7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXSA9IHVpLmRpdkgoW10pO1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gdWkuZGl2VihbXG4gICAgICAgIHVpLmRpdlRleHQoJ3NlcXVlbnNlJyksXG4gICAgICAgIHVpLmRpdlRleHQocGFyYW1zLmFjdGl2aXR5Lm5hbWUpLFxuICAgIF0pO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZChjb2x1bW5OYW1lcyk7XG4gICAgcGFyYW1zLmxpbmUubW9scy5mb3JFYWNoKChtb2wpID0+IHtcbiAgICAgICAgY29uc3Qgc2VxID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5zZXFDb2wubmFtZSwgbW9sKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5ID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5hY3Rpdml0eS5uYW1lLCBtb2wpLnRvRml4ZWQoMikpO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdsZWZ0JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUucGFkZGluZ0xlZnQgPSAnMzBweCc7XG4gICAgICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKHVpLmRpdlYoW1xuICAgICAgICAgICAgc2VxLFxuICAgICAgICAgICAgYWN0aXZpdHksXG4gICAgICAgIF0sIHsgc3R5bGU6IHsgcGFkZGluZ0xlZnQ6ICc1cHgnIH0gfSkpO1xuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IHsgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2Uoc3BhY2VQYXJhbXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcHJlcGFyZWREYXRhO1xuICAgICAgICBpZiAoIShzcGFjZVBhcmFtcy5zZXFDb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ0hFTE0nKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VwID0gc3BhY2VQYXJhbXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICBjb25zdCBzZXBGaW5hbCA9IHNlcCA/IHNlcCA9PT0gJy4nID8gJ1xcXFxcXC4nIDogc2VwIDogJy0nO1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcEZpbmFsLCAnZycpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddKS5pbmNsdWRlcyhzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljKSlcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXN1bHQgPSB5aWVsZCByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24ocHJlcGFyZWREYXRhLCBzcGFjZVBhcmFtcy5tZXRob2ROYW1lLCBzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljLCBzcGFjZVBhcmFtcy5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29scyA9IHNwYWNlUGFyYW1zLmVtYmVkQXhlc05hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KG5hbWUsIHNlcXVlbmNlU3BhY2VSZXN1bHQuZW1iZWRkaW5nW2luZGV4XSkpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogc2VxdWVuY2VTcGFjZVJlc3VsdC5kaXN0YW5jZSwgY29vcmRpbmF0ZXM6IG5ldyBERy5Db2x1bW5MaXN0KGNvbHMpIH07XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKSB7XG4gICAgY29uc3QgYXhlcyA9IFsnRW1iZWRfWCcsICdFbWJlZF9ZJ107XG4gICAgY29uc3QgY29sTmFtZUluZCA9IGRmLmNvbHVtbnMubmFtZXMoKS5maWx0ZXIoKGl0KSA9PiBpdC5pbmNsdWRlcyhheGVzWzBdKSkubGVuZ3RoICsgMTtcbiAgICByZXR1cm4gYXhlcy5tYXAoKGl0KSA9PiBgJHtpdH1fJHtjb2xOYW1lSW5kfWApO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX0ZJTEVOQU1FID0gJy9zYW1wbGVzL0hFTE1Db3JlTGlicmFyeS5qc29uJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX01PTk9NRVJfU1lNQk9MID0gJ3N5bWJvbCc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT0xGSUxFID0gJ21vbGZpbGUnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9GSUVMRFMgPSBbJ3N5bWJvbCcsICdtb2xmaWxlJywgJ3Jncm91cHMnLCAnbmFtZSddO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2wsIG1vbm9tZXJzTGliT2JqZWN0KSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICAgIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICAgICAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2xGaWxlc0ZvclNlcS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtb2xGaWxlcy5wdXNoKG1vbEZpbGVzRm9yU2VxKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vbEZpbGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vbW9tZXJzTW9sRGljdChsaWIpIHtcbiAgICBjb25zdCBkaWN0ID0ge307XG4gICAgbGliLmZvckVhY2goKGl0KSA9PiB7XG4gICAgICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICAgICAgICBjb25zdCBtb25vbWVyT2JqZWN0ID0ge307XG4gICAgICAgICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgbW9ub21lck9iamVjdFtmaWVsZF0gPSBpdFtmaWVsZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpY3RbaXRbSEVMTV9DT1JFX0xJQl9NT05PTUVSX1NZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaWN0O1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFZkUmVnaW9uVHlwZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zJztcbmNvbnN0IHZydCA9IFZkUmVnaW9uVHlwZTtcbi8vIFBvc2l0aW9ucyBvZiByZWdpb25zIGZvciBudW1iZXJpbmcgc2NoZW1lc1xuLy8gaHR0cDovL3d3dy5iaW9pbmYub3JnLnVrL2Ficy9pbmZvLmh0bWxcbi8vIGNvbnN0IGltZ3RSZWdpb25zOiBWZFJlZ2lvbltdID0gW1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIxJywgJ0xpZ2h0JywgMSwgJzEnLCAnMjYnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMScsICdIZWF2eScsIDEsICcxJywgJzI2JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjEnLCAnTGlnaHQnLCAyLCAnMjcnLCAnMzgnKSwgLy8gMjctMzJcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIxJywgJ0hlYXZ5JywgMiwgJzI3JywgJzM4JyksIC8vIDI3LTMyXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIyJywgJ0xpZ2h0JywgMywgJzM5JywgJzU1JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjInLCAnSGVhdnknLCAzLCAnMzknLCAnNTUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMicsICdMaWdodCcsIDQsICc1NicsICc2NScpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjInLCAnSGVhdnknLCA0LCAnNTYnLCAnNjUnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnTGlnaHQnLCA1LCAnNjYnLCAnMTA0JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjMnLCAnSGVhdnknLCA1LCAnNjYnLCAnMTA0JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnTGlnaHQnLCA2LCAnMTA1JywgJzExNycpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjMnLCAnSGVhdnknLCA2LCAnMTA1JywgJzExNycpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSNCcsICdMaWdodCcsIDcsICcxMTgnLCBudWxsLyoxMjcqLyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjQnLCAnSGVhdnknLCA3LCAnMTE4JywgbnVsbC8qMTI4Ki8pLFxuLy8gXTtcbi8qKiBWaWV3ZXIgd2l0aCB0YWJzIGJhc2VkIG9uIGRlc2NyaXB0aW9uIG9mIGNoYWluIHJlZ2lvbnMuXG4gKiAgVXNlZCB0byBkZWZpbmUgcmVnaW9ucyBvZiBhbiBpbW11bm9nbG9idWxpbiBMQy5cbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uc1ZpZXdlciBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWdpb25zRGY6IERHLkRhdGFGcmFtZTtcbiAgICAgICAgdGhpcy5yZWdpb25zRmcgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIHJlZ2lvbnNUVjogREcuVGFibGVWaWV3O1xuICAgICAgICB0aGlzLnJlZ2lvbnNSb290ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pc09wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucmVnaW9ucyA9IFtdO1xuICAgICAgICAvLyAjcmVnaW9uIC0tIEhhbmRsZSBjb250cm9scycgZXZlbnRzIC0tXG4gICAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gI2VuZHJlZ2lvblxuICAgICAgICAvLyNyZWdpb24gLS0gVmlldyAtLVxuICAgICAgICB0aGlzLmhvc3QgPSBudWxsO1xuICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLmxvZ29zID0gW107XG4gICAgICAgIC8vIFRvIHByZXZlbnQgYW1iaWd1b3VzIG51bWJlcmluZyBzY2hlbWUgaW4gTUxCXG4gICAgICAgIHRoaXMucmVnaW9uVHlwZXMgPSB0aGlzLnN0cmluZ0xpc3QoJ3JlZ2lvblR5cGVzJywgW3ZydC5DRFJdLCB7IGNob2ljZXM6IE9iamVjdC52YWx1ZXModnJ0KS5maWx0ZXIoKHQpID0+IHQgIT0gdnJ0LlVua25vd24pIH0pO1xuICAgICAgICB0aGlzLmNoYWlucyA9IHRoaXMuc3RyaW5nTGlzdCgnY2hhaW5zJywgWydIZWF2eScsICdMaWdodCddLCB7IGNob2ljZXM6IFsnSGVhdnknLCAnTGlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4ID0gdGhpcy5zdHJpbmcoJ3NlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXgnLCAnY2hhaW4gc2VxdWVuY2UnKTtcbiAgICB9XG4gICAgZ2V0IGRmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhRnJhbWU7XG4gICAgfVxuICAgIC8vIFRPRE86IC5vblRhYmxlQXR0YWNoZWQgaXMgbm90IGNhbGxpbmcgb24gZGF0YUZyYW1lIHNldCwgb25Qcm9wZXJ0eUNoYW5nZWQgIGFsc28gbm90IGNhbGxpbmdcbiAgICBzZXREZih2YWx1ZSwgcmVnaW9ucykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLnNldERmKCknKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuZGVzdHJveVZpZXcoKTtcbiAgICAgICAgICAgIHRoaXMucmVnaW9ucyA9IHJlZ2lvbnM7XG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWlsZFZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAvLyNyZWdpb24gcmVnaW9uc0RGIHdpdGggZmlsdGVyXG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNEZiA9IERHLkRhdGFGcmFtZS5mcm9tT2JqZWN0cyh0aGlzLnJlZ2lvbnMpO1xuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRGYucm93cy5maWx0ZXIoKHJvdykgPT4gcm93Lm5hbWUgPT0gJ0NEUjEnKTtcbiAgICAgICAgICAgIC8vIC8vIFRvIGF2YWlsYWJsZSBvcHRpb25zIC9cbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0ZnID0gKGF3YWl0IHRoaXMucmVnaW9uc0RmLnBsb3QuZnJvbVR5cGUoREcuVklFV0VSLkZJTFRFUlMsIHtcbiAgICAgICAgICAgIC8vICAgLy8gY29sdW1uTmFtZXM6IFsnbmFtZScsXSxcbiAgICAgICAgICAgIC8vICAgc2hvd0ZpbHRlckNvdW50c0luZGljYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBzaG93SGVhZGVyOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgc2hvd1NlYXJjaEJveDogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIC8vICAgICB7dHlwZTogREcuRklMVEVSX1RZUEUuQ0FURUdPUklDQUwsIGNvbHVtbjogJ3R5cGUnLCBsYWJlbDogJ1JlZ2lvbiBuYW1lJywgc2hvd0hpc3RvZ3JhbTogZmFsc2V9LFxuICAgICAgICAgICAgLy8gICAgIHt0eXBlOiBERy5GSUxURVJfVFlQRS5DQVRFR09SSUNBTCwgY29sdW1uOiAnbmFtZScsIGxhYmVsOiAnUmVnaW9uIHR5cGUnLCBzaG93SGlzdG9ncmFtOiBmYWxzZX0sXG4gICAgICAgICAgICAvLyAgIF0sXG4gICAgICAgICAgICAvLyAgIHRpdGxlOiAnUmVnaW9ucyBmaWx0ZXInLFxuICAgICAgICAgICAgLy8gICBzaG93VGl0bGU6IHRydWUsXG4gICAgICAgICAgICAvLyAgIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGZvciByZWdpb25zIG9mIG11bHRpcGxlIGFsaWdubWVudCBieSBJTUdUIG5vbWVuY2xhdHVyZScsXG4gICAgICAgICAgICAvLyAgIHNvbWVQcm9wZXJ0eTogJ0hlbGxvJyxcbiAgICAgICAgICAgIC8vIH0pKSBhcyBERy5GaWx0ZXJHcm91cDtcbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvbiByZWdpb25zREYgd2l0aCBmaWx0ZXJcbiAgICAgICAgICAgIC8vIHRoaXMubWxiVmlldy5kb2NrTWFuYWdlci5kb2NrKHRoaXMucmVnaW9uc0ZnLnJvb3QsIERHLkRPQ0tfVFlQRS5MRUZULCByb290Tm9kZSwgJ0ZpbHRlciByZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICAvLyByeGpzLmZyb21FdmVudCh0aGlzLnJvb3QsICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUodGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZVJvb3QuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1aWxkVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5pbml0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uUHJvcGVydHlDaGFuZ2VkOiB7IGdldDogKCkgPT4gc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIF9zdXBlci5vblByb3BlcnR5Q2hhbmdlZC5jYWxsKHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWdpb25UeXBlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2hhaW5zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb3BlbihtbGJWaWV3KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhbmVsTm9kZSA9IG1sYlZpZXcuZG9ja01hbmFnZXIuZG9jayh0aGlzLnJvb3QsIERHLkRPQ0tfVFlQRS5UT1AsIG51bGwsICdSZWdpb25zJywgMC4yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNob3cobWxiVmlldykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJncykge1xuICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgfVxuICAgIGRlc3Ryb3lWaWV3KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8gVE9ETzogVW5zdWJzY3JpYmUgZnJvbSBhbmQgcmVtb3ZlIGFsbCB2aWV3IGVsZW1lbnRzXG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBWZFJlZ2lvbnNWaWV3ZXIuZGVzdHJveVZpZXcoIG1haW5MYXlvdXQgPSAkeyF0aGlzLm1haW5MYXlvdXQgPyAnbm9uZScgOiAndmFsdWUnfSApYCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYWluTGF5b3V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJvb3QucmVtb3ZlQ2hpbGQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJ1aWxkVmlldygpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5idWlsZFZpZXcoKSBzdGFydCcpO1xuICAgICAgICAgICAgY29uc3QgY29sTmFtZXMgPSBPYmplY3QuYXNzaWduKHt9LCAuLi50aGlzLmNoYWlucy5tYXAoKGNoYWluKSA9PiAoeyBbY2hhaW5dOiBgJHtjaGFpbn0gJHt0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXh9YCB9KSkpO1xuICAgICAgICAgICAgY29uc3QgcmVnaW9uc0ZpbHRlcmVkID0gdGhpcy5yZWdpb25zLmZpbHRlcigocikgPT4gdGhpcy5yZWdpb25UeXBlcy5pbmNsdWRlcyhyLnR5cGUpKTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyTGlzdCA9IEFycmF5LmZyb20obmV3IFNldChyZWdpb25zRmlsdGVyZWQubWFwKChyKSA9PiByLm9yZGVyKSkpLnNvcnQoKTtcbiAgICAgICAgICAgIHRoaXMubG9nb3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IG9yZGVySSA9IDA7IG9yZGVySSA8IG9yZGVyTGlzdC5sZW5ndGg7IG9yZGVySSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnaW9uQ2hhaW5zID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGFpbiBvZiB0aGlzLmNoYWlucykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpb24gPSByZWdpb25zRmlsdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKChyKSA9PiByLm9yZGVyID09IG9yZGVyTGlzdFtvcmRlckldICYmIHIuY2hhaW4gPT0gY2hhaW4pO1xuICAgICAgICAgICAgICAgICAgICByZWdpb25DaGFpbnNbY2hhaW5dID0gKHlpZWxkIHRoaXMuZGF0YUZyYW1lLnBsb3QuZnJvbVR5cGUoJ1dlYkxvZ28nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbE5hbWVzW2NoYWluXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25OYW1lOiByZWdpb24ucG9zaXRpb25TdGFydE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbk5hbWU6IHJlZ2lvbi5wb3NpdGlvbkVuZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXhXaWR0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXZWJMb2dvIGNyZWF0aW9uIGZpcmVzIG9uUm9vdFNpemVDaGFuZ2VkIGV2ZW50IGV2ZW4gYmVmb3JlIGNvbnRyb2wgYmVpbmcgYWRkZWQgdG8gdGhpcy5sb2dvc1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3Nbb3JkZXJJXSA9IHJlZ2lvbkNoYWlucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVpLnRhYmxlRnJvbU1hcCgpXG4gICAgICAgICAgICAvLyBERy5IdG1sVGFibGUuY3JlYXRlKClcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dCA9IHVpLnRhYmxlKHRoaXMuY2hhaW5zLCAoY2hhaW4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjaGFpbiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAuLi4ob3JkZXJMaXN0Lmxlbmd0aCA+IDAgPyBbdWkuZGl2KGNoYWluLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnMTJweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KV0gOiBbXSksXG4gICAgICAgICAgICAgICAgICAgIC8vIExpc3Qgd2l0aCBjb250cm9scyBmb3IgcmVnaW9uc1xuICAgICAgICAgICAgICAgICAgICAuLi5bLi4uQXJyYXkob3JkZXJMaXN0Lmxlbmd0aCkua2V5cygpXS5tYXAoKG9yZGVySSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2wgPSB0aGlzLmxvZ29zW29yZGVySV1bY2hhaW5dO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2wucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNEaXYgPSB1aS5kaXYoW3dsLnJvb3RdIC8qYCR7Y2hhaW59ICR7cmVnaW9uc0ZpbHRlcmVkW3JJXX1gKi8sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNEaXY7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgICAgICAgICB9LCBbJycsIC4uLlsuLi5BcnJheShvcmRlckxpc3QubGVuZ3RoKS5rZXlzKCldLm1hcCgob3JkZXJJKSA9PiByZWdpb25zRmlsdGVyZWQuZmluZCgocikgPT4gci5vcmRlciA9PSBvcmRlckxpc3Rbb3JkZXJJXSAmJiByLmNoYWluID09IHRoaXMuY2hhaW5zWzBdKS5uYW1lIHx8ICdOYW1lJyldKTtcbiAgICAgICAgICAgIHRoaXMubWFpbkxheW91dC5jbGFzc05hbWUgPSAnbWxiLXZkLXJlZ2lvbnMtdmlld2VyLXRhYmxlMic7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYmFja2dyb3VuZCA9ICcjRUVFRUZGJztcbiAgICAgICAgICAgIC8vIHRoaXMubWFpbkxheW91dC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBibGFjayc7XG4gICAgICAgICAgICBjb25zdCBjb2xvciA9IGAjZmZiYiR7TWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNTUpLnRvU3RyaW5nKDE2KX1gO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuYm94KHRoaXMubWFpbkxheW91dCwgeyAvKnN0eWxlOiB7YmFja2dyb3VuZENvbG9yOiBjb2xvcn0qL30pO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8nO1xuICAgICAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLmJ1aWxkVmlldygpIGVuZCcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2FsY1NpemUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ29IZWlnaHQgPSAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIDU0KSAvIHRoaXMuY2hhaW5zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4obG9nb0hlaWdodCwgTWF0aC5tYXgoLi4udGhpcy5sb2dvcy5tYXAoKHdsRGljdCkgPT4gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyh3bERpY3QpLm1hcCgod2wpID0+IHdsLm1heEhlaWdodCkpKSkpO1xuICAgICAgICBmb3IgKGxldCBvcmRlckkgPSAwOyBvcmRlckkgPCB0aGlzLmxvZ29zLmxlbmd0aDsgb3JkZXJJKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGNoYWluSSA9IDA7IGNoYWluSSA8IHRoaXMuY2hhaW5zLmxlbmd0aDsgY2hhaW5JKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFpbiA9IHRoaXMuY2hhaW5zW2NoYWluSV07XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvc1tvcmRlckldW2NoYWluXS5yb290LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uIC0tIFZpZXcgLS1cbiAgICBvbk1vdXNlTW92ZVJvb3QoZSkge1xuICAgICAgICAvLyB1aS50b29sdGlwLnNob3coJ3RleHQnLCBlLnggKyA4LCBlLnkgKyA4LCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBvbk1vdXNlTW92ZVJvb3QuKCB4OiAke2UueH0sIHk6ICR7ZS55fSApYCk7XG4gICAgfVxufVxuIiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wid3VcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wid3VcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuXG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF90b0NvbnN1bWFibGVBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfc2xpY2VkVG9BcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1N5bWJvbCRpdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX2dldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfcmVnZW5lcmF0b3JSdW50aW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg0KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciB3dSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gd3UoaXRlcmFibGUpIHtcblx0ICBpZiAoIWlzSXRlcmFibGUoaXRlcmFibGUpKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoXCJ3dTogYFwiICsgaXRlcmFibGUgKyBcImAgaXMgbm90IGl0ZXJhYmxlIVwiKTtcblx0ICB9XG5cdCAgcmV0dXJuIG5ldyBXdShpdGVyYWJsZSk7XG5cdH07XG5cblx0ZnVuY3Rpb24gV3UoaXRlcmFibGUpIHtcblx0ICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihpdGVyYWJsZSk7XG5cdCAgdGhpcy5uZXh0ID0gaXRlcmF0b3IubmV4dC5iaW5kKGl0ZXJhdG9yKTtcblx0fVxuXHR3dS5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cblx0d3UucHJvdG90eXBlW19TeW1ib2wkaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdC8qXG5cdCAqIEludGVybmFsIHV0aWxpdGllc1xuXHQgKi9cblxuXHQvLyBBbiBpbnRlcm5hbCBwbGFjZWhvbGRlciB2YWx1ZS5cblx0dmFyIE1JU1NJTkcgPSB7fTtcblxuXHQvLyBSZXR1cm4gd2hldGhlciBhIHRoaW5nIGlzIGl0ZXJhYmxlLlxuXHR2YXIgaXNJdGVyYWJsZSA9IGZ1bmN0aW9uIGlzSXRlcmFibGUodGhpbmcpIHtcblx0ICByZXR1cm4gdGhpbmcgJiYgdHlwZW9mIHRoaW5nW19TeW1ib2wkaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG5cdH07XG5cblx0Ly8gR2V0IHRoZSBpdGVyYXRvciBmb3IgdGhlIHRoaW5nIG9yIHRocm93IGFuIGVycm9yLlxuXHR2YXIgZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiBnZXRJdGVyYXRvcih0aGluZykge1xuXHQgIGlmIChpc0l0ZXJhYmxlKHRoaW5nKSkge1xuXHQgICAgcmV0dXJuIF9nZXRJdGVyYXRvcih0aGluZyk7XG5cdCAgfVxuXHQgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJOb3QgaXRlcmFibGU6IFwiICsgdGhpbmcpO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIHN0YXRpYyBtZXRob2Qgb24gYHd1YCBhbmQgc2V0IGl0cyBwcm90b3R5cGUgdG8gdGhlIHNoYXJlZFxuXHQvLyBgV3UucHJvdG90eXBlYC5cblx0dmFyIHN0YXRpY01ldGhvZCA9IGZ1bmN0aW9uIHN0YXRpY01ldGhvZChuYW1lLCBmbikge1xuXHQgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICB3dVtuYW1lXSA9IGZuO1xuXHR9O1xuXG5cdC8vIERlZmluZSBhIGZ1bmN0aW9uIHRoYXQgaXMgYXR0YWNoZWQgYXMgYm90aCBhIGBXdS5wcm90b3R5cGVgIG1ldGhvZCBhbmQgYVxuXHQvLyBjdXJyeWFibGUgc3RhdGljIG1ldGhvZCBvbiBgd3VgIGRpcmVjdGx5IHRoYXQgdGFrZXMgYW4gaXRlcmFibGUgYXMgaXRzIGxhc3Rcblx0Ly8gcGFyYW1ldGVyLlxuXHR2YXIgcHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuKSB7XG5cdCAgdmFyIGV4cGVjdGVkQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IGZuLmxlbmd0aCA6IGFyZ3VtZW50c1syXTtcblx0ICByZXR1cm4gKGZ1bmN0aW9uICgpIHtcblx0ICAgIGZuLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblx0ICAgIFd1LnByb3RvdHlwZVtuYW1lXSA9IGZuO1xuXG5cdCAgICAvLyArMSBmb3IgdGhlIGl0ZXJhYmxlLCB3aGljaCBpcyB0aGUgYHRoaXNgIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBzbyBpdFxuXHQgICAgLy8gaXNuJ3QgcmVmbGVjdGVkIGJ5IHRoZSBsZW5ndGggcHJvcGVydHkuXG5cdCAgICBleHBlY3RlZEFyZ3MgKz0gMTtcblxuXHQgICAgd3VbbmFtZV0gPSB3dS5jdXJyeWFibGUoZnVuY3Rpb24gKCkge1xuXHQgICAgICB2YXIgX3d1O1xuXG5cdCAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciBpdGVyYWJsZSA9IGFyZ3MucG9wKCk7XG5cdCAgICAgIHJldHVybiAoX3d1ID0gd3UoaXRlcmFibGUpKVtuYW1lXS5hcHBseShfd3UsIGFyZ3MpO1xuXHQgICAgfSwgZXhwZWN0ZWRBcmdzKTtcblx0ICB9KSgpO1xuXHR9O1xuXG5cdC8vIEEgZGVjb3JhdG9yIGZvciByZXdyYXBwaW5nIGEgbWV0aG9kJ3MgcmV0dXJuZWQgaXRlcmFibGUgaW4gd3UgdG8gbWFpbnRhaW5cblx0Ly8gY2hhaW5hYmlsaXR5LlxuXHR2YXIgcmV3cmFwID0gZnVuY3Rpb24gcmV3cmFwKGZuKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG5cdCAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIHd1KGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoYXJncykpKTtcblx0ICB9O1xuXHR9O1xuXG5cdHZhciByZXdyYXBTdGF0aWNNZXRob2QgPSBmdW5jdGlvbiByZXdyYXBTdGF0aWNNZXRob2QobmFtZSwgZm4pIHtcblx0ICByZXR1cm4gc3RhdGljTWV0aG9kKG5hbWUsIHJld3JhcChmbikpO1xuXHR9O1xuXHR2YXIgcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljID0gZnVuY3Rpb24gcmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIGZuLCBleHBlY3RlZEFyZ3MpIHtcblx0ICByZXR1cm4gcHJvdG90eXBlQW5kU3RhdGljKG5hbWUsIHJld3JhcChmbiksIGV4cGVjdGVkQXJncyk7XG5cdH07XG5cblx0Ly8gUmV0dXJuIGEgd3JhcHBlZCB2ZXJzaW9uIG9mIGBmbmAgYm91bmQgd2l0aCB0aGUgaW5pdGlhbCBhcmd1bWVudHNcblx0Ly8gYC4uLmFyZ3NgLlxuXHRmdW5jdGlvbiBjdXJyeShmbiwgYXJncykge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIG1vcmVBcmdzID0gQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcblx0ICAgICAgbW9yZUFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIGZuLmNhbGwuYXBwbHkoZm4sIFt0aGlzXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGFyZ3MpLCBtb3JlQXJncykpO1xuXHQgIH07XG5cdH1cblxuXHQvKlxuXHQgKiBQdWJsaWMgdXRpbGl0aWVzXG5cdCAqL1xuXG5cdHN0YXRpY01ldGhvZChcImN1cnJ5YWJsZVwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgZXhwZWN0ZWQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmbi5sZW5ndGggOiBhcmd1bWVudHNbMV07XG5cdCAgcmV0dXJuIChmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gZigpIHtcblx0ICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcblx0ICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gYXJncy5sZW5ndGggPj0gZXhwZWN0ZWQgPyBmbi5hcHBseSh0aGlzLCBhcmdzKSA6IGN1cnJ5KGYsIGFyZ3MpO1xuXHQgICAgfTtcblx0ICB9KSgpO1xuXHR9KTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJlbnRyaWVzXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG9iaikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uLCBfZGlkSXRlcmF0b3JFcnJvciwgX2l0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvciwgX3N0ZXAsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IgPSBfZ2V0SXRlcmF0b3IoX09iamVjdCRrZXlzKG9iaikpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGsgPSBfc3RlcC52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gW2ssIG9ialtrXV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3JbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwia2V5c1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX09iamVjdCRrZXlzKG9iaiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInZhbHVlc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIsIF9kaWRJdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yRXJyb3IyLCBfaXRlcmF0b3IyLCBfc3RlcDIsIGs7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyID0gX2dldEl0ZXJhdG9yKF9PYmplY3Qka2V5cyhvYmopKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBrID0gX3N0ZXAyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBvYmpba107XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJbmZpbml0ZSBpdGVyYXRvcnNcblx0ICovXG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY3ljbGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNhdmVkLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMywgX2RpZEl0ZXJhdG9yRXJyb3IzLCBfaXRlcmF0b3JFcnJvcjMsIF9pdGVyYXRvcjMsIF9zdGVwMywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzYXZlZCA9IFtdO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yMyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gKF9zdGVwMyA9IF9pdGVyYXRvcjMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAzLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIHNhdmVkLnB1c2goeCk7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyAmJiBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMztcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBpZiAoIXNhdmVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzYXZlZCwgXCJ0MVwiLCAzMCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiY291bnRcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMCA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgc3RlcCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IDEgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIG47XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIG4gPSBzdGFydDtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiBuO1xuXG5cdCAgICAgIGNhc2UgNDpcblx0ICAgICAgICBuICs9IHN0ZXA7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInJlcGVhdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCh0aGluZykge1xuXHQgIHZhciB0aW1lcyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IEluZmluaXR5IDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciBpO1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoISh0aW1lcyA9PT0gSW5maW5pdHkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0O1xuXHQgICAgICAgIHJldHVybiB0aGluZztcblxuXHQgICAgICBjYXNlIDQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgaSA9IDA7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGlmICghKGkgPCB0aW1lcykpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gdGhpbmc7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBpKys7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBJdGVyYXRvcnMgdGhhdCB0ZXJtaW5hdGUgb25jZSB0aGUgaW5wdXQgc2VxdWVuY2UgaGFzIGJlZW4gZXhoYXVzdGVkXG5cdCAqL1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImNoYWluXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCxcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0LFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjQsXG5cdCAgICAgIF9sZW41LFxuXHQgICAgICBpdGVyYWJsZXMsXG5cdCAgICAgIF9rZXk1LFxuXHQgICAgICBfaXRlcmF0b3I0LFxuXHQgICAgICBfc3RlcDQsXG5cdCAgICAgIGl0LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNSA9IGFyZ3MkMSQwLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcblx0ICAgICAgICAgIGl0ZXJhYmxlc1tfa2V5NV0gPSBhcmdzJDEkMFtfa2V5NV07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yNCA9IF9nZXRJdGVyYXRvcihpdGVyYWJsZXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSAoX3N0ZXA0ID0gX2l0ZXJhdG9yNC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXA0LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGl0LCBcInQwXCIsIDkpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCAmJiBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY2h1bmtcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZW1zLCBpbmRleCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUsIF9kaWRJdGVyYXRvckVycm9yNSwgX2l0ZXJhdG9yRXJyb3I1LCBfaXRlcmF0b3I1LCBfc3RlcDUsIGl0ZW07XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBbXTtcblx0ICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3I1ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSAoX3N0ZXA1ID0gX2l0ZXJhdG9yNS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ZW0gPSBfc3RlcDUudmFsdWU7XG5cblx0ICAgICAgICBpdGVtc1tpbmRleCsrXSA9IGl0ZW07XG5cblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpdGVtcyA9IFtdO1xuXHQgICAgICAgIGluZGV4ID0gMDtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjUgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ICYmIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjVbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I1O1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICAgIGlmICghaW5kZXgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICByZXR1cm4gaXRlbXM7XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAyMCwgMjQsIDMyXSwgWzI1LCwgMjcsIDMxXV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiY29uY2F0TWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242LCBfZGlkSXRlcmF0b3JFcnJvcjYsIF9pdGVyYXRvckVycm9yNiwgX2l0ZXJhdG9yNiwgX3N0ZXA2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjYgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yNiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gKF9zdGVwNiA9IF9pdGVyYXRvcjYubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA2LnZhbHVlO1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKGZuKHgpLCBcInQwXCIsIDgpO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTM7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiAmJiBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNjtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxNyk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxMywgMTcsIDI1XSwgWzE4LCwgMjAsIDI0XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243LCBfZGlkSXRlcmF0b3JFcnJvcjcsIF9pdGVyYXRvckVycm9yNywgX2l0ZXJhdG9yNywgX3N0ZXA3LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yNyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gKF9zdGVwNyA9IF9pdGVyYXRvcjcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA3LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCEoaSsrIDwgbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTYpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgJiYgX2l0ZXJhdG9yN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yN1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I3KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjc7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI1KTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQodGhpcywgXCJ0MVwiLCAzMSk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZHJvcFdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjgsIF9kaWRJdGVyYXRvckVycm9yOCwgX2l0ZXJhdG9yRXJyb3I4LCBfaXRlcmF0b3I4LCBfc3RlcDgsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I4ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSAoX3N0ZXA4ID0gX2l0ZXJhdG9yOC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDgudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxMik7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNSk7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I4ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCAmJiBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I4W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yODtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjQpO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZCh0aGlzLCBcInQxXCIsIDMwKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE3LCAyMSwgMjldLCBbMjIsLCAyNCwgMjhdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJlbnVtZXJhdGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoW3RoaXMsIHd1LmNvdW50KCldKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmlsdGVyXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjksIF9kaWRJdGVyYXRvckVycm9yOSwgX2l0ZXJhdG9yRXJyb3I5LCBfaXRlcmF0b3I5LCBfc3RlcDksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I5ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSAoX3N0ZXA5ID0gX2l0ZXJhdG9yOS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDkudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I5ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSAmJiBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I5W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZmxhdHRlblwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2hhbGxvdyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCwgX2RpZEl0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yRXJyb3IxMCwgX2l0ZXJhdG9yMTAsIF9zdGVwMTAsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEwID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IChfc3RlcDEwID0gX2l0ZXJhdG9yMTAubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMC52YWx1ZTtcblxuXHQgICAgICAgIGlmICghKHR5cGVvZiB4ICE9PSBcInN0cmluZ1wiICYmIGlzSXRlcmFibGUoeCkpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChzaGFsbG93ID8geCA6IHd1KHgpLmZsYXR0ZW4oKSwgXCJ0MFwiLCA5KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMCA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwICYmIF9pdGVyYXRvcjEwW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMDtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjUpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxOCwgMjIsIDMwXSwgWzIzLCwgMjUsIDI5XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiaW52b2tlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG5hbWUpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExLFxuXHQgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfaXRlcmF0b3JFcnJvcjExLFxuXHQgICAgICBfbGVuNixcblx0ICAgICAgYXJncyxcblx0ICAgICAgX2tleTYsXG5cdCAgICAgIF9pdGVyYXRvcjExLFxuXHQgICAgICBfc3RlcDExLFxuXHQgICAgICB4LFxuXHQgICAgICBhcmdzJDEkMCA9IGFyZ3VtZW50cztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTEgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXG5cdCAgICAgICAgZm9yIChfbGVuNiA9IGFyZ3MkMSQwLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW42ID4gMSA/IF9sZW42IC0gMSA6IDApLCBfa2V5NiA9IDE7IF9rZXk2IDwgX2xlbjY7IF9rZXk2KyspIHtcblx0ICAgICAgICAgIGFyZ3NbX2tleTYgLSAxXSA9IGFyZ3MkMSQwW19rZXk2XTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3IxMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSA9IChfc3RlcDExID0gX2l0ZXJhdG9yMTEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMS52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV0uYXBwbHkoeCwgYXJncyk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjExID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgJiYgX2l0ZXJhdG9yMTFbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjExW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjExKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjExO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJtYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyLCBfZGlkSXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3JFcnJvcjEyLCBfaXRlcmF0b3IxMiwgX3N0ZXAxMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gKF9zdGVwMTIgPSBfaXRlcmF0b3IxMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEyLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBmbih4KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyICYmIF9pdGVyYXRvcjEyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicGx1Y2tcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobmFtZSkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMsIF9kaWRJdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvckVycm9yMTMsIF9pdGVyYXRvcjEzLCBfc3RlcDEzLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTMgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSAoX3N0ZXAxMyA9IF9pdGVyYXRvcjEzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTMudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIHhbbmFtZV07XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTMgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyAmJiBfaXRlcmF0b3IxM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTNbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTM7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInJlZHVjdGlvbnNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciB2YWwsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCwgX2RpZEl0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yRXJyb3IxNCwgX2l0ZXJhdG9yMTQsIF9zdGVwMTQsIHgsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSwgX2RpZEl0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yRXJyb3IxNSwgX2l0ZXJhdG9yMTUsIF9zdGVwMTU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgdmFsID0gaW5pdGlhbDtcblxuXHQgICAgICAgIGlmICghKHZhbCA9PT0gdW5kZWZpbmVkKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE0ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IChfc3RlcDE0ID0gX2l0ZXJhdG9yMTQubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxNC52YWx1ZTtcblxuXHQgICAgICAgIHZhbCA9IHg7XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE0KTtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTQgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCAmJiBfaXRlcmF0b3IxNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTQ7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMwO1xuXHQgICAgICAgIHJldHVybiB2YWw7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTUgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMztcblx0ICAgICAgICBfaXRlcmF0b3IxNSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSAoX3N0ZXAxNSA9IF9pdGVyYXRvcjE1Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTUudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM5O1xuXHQgICAgICAgIHJldHVybiB2YWwgPSBmbih2YWwsIHgpO1xuXG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0Mjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE1ID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSA0ODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgJiYgX2l0ZXJhdG9yMTVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgNTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDUxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE1KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE1O1xuXG5cdCAgICAgIGNhc2UgNTQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCg1MSk7XG5cblx0ICAgICAgY2FzZSA1NTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDQ4KTtcblxuXHQgICAgICBjYXNlIDU2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgdmFsKTtcblxuXHQgICAgICBjYXNlIDU3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddLCBbMzMsIDQ0LCA0OCwgNTZdLCBbNDksLCA1MSwgNTVdXSk7XG5cdH0pLCAyKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJyZWplY3RcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYsIF9kaWRJdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvckVycm9yMTYsIF9pdGVyYXRvcjE2LCBfc3RlcDE2LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTYgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSAoX3N0ZXAxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTYudmFsdWU7XG5cblx0ICAgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTYgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiAmJiBfaXRlcmF0b3IxNltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTZbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTYpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTY7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNsaWNlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDAgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIHN0b3AgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcsIF9kaWRJdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvckVycm9yMTcsIF9pdGVyYXRvcjE3LCBfc3RlcDE3LCBfc3RlcDE3JHZhbHVlLCB4LCBpO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKHN0b3AgPCBzdGFydCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJwYXJhbWV0ZXIgYHN0b3BgICg9IFwiICsgc3RvcCArIFwiKSBtdXN0IGJlID49IGBzdGFydGAgKD0gXCIgKyBzdGFydCArIFwiKVwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTtcblx0ICAgICAgICBfaXRlcmF0b3IxNyA9IF9nZXRJdGVyYXRvcih0aGlzLmVudW1lcmF0ZSgpKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IChfc3RlcDE3ID0gX2l0ZXJhdG9yMTcubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfc3RlcDE3JHZhbHVlID0gX3NsaWNlZFRvQXJyYXkoX3N0ZXAxNy52YWx1ZSwgMik7XG5cdCAgICAgICAgeCA9IF9zdGVwMTckdmFsdWVbMF07XG5cdCAgICAgICAgaSA9IF9zdGVwMTckdmFsdWVbMV07XG5cblx0ICAgICAgICBpZiAoIShpIDwgc3RhcnQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaWYgKCEoaSA+PSBzdG9wKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDIwKTtcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTcgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTcgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjc7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyAmJiBfaXRlcmF0b3IxN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjk7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTcpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTc7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI5KTtcblxuXHQgICAgICBjYXNlIDMzOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzQ6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMjIsIDI2LCAzNF0sIFsyNywsIDI5LCAzM11dKTtcblx0fSksIDIpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInNwcmVhZE1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTgsIF9kaWRJdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvckVycm9yMTgsIF9pdGVyYXRvcjE4LCBfc3RlcDE4LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTggPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTggPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSAoX3N0ZXAxOCA9IF9pdGVyYXRvcjE4Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTgudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHVuZGVmaW5lZCwgX3RvQ29uc3VtYWJsZUFycmF5KHgpKTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ICYmIF9pdGVyYXRvcjE4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxODtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuKSB7XG5cdCAgdmFyIGksIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSwgX2RpZEl0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yRXJyb3IxOSwgX2l0ZXJhdG9yMTksIF9zdGVwMTksIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEobiA8IDEpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGkgPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTkgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDY7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTkgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSAoX3N0ZXAxOSA9IF9pdGVyYXRvcjE5Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTkudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgaWYgKCEoKytpID49IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTcpO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNik7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxOSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ICYmIF9pdGVyYXRvcjE5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxOVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxOSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxOTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjYpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAzMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s2LCAxOSwgMjMsIDMxXSwgWzI0LCwgMjYsIDMwXV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFrZVdoaWxlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwLCBfZGlkSXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3JFcnJvcjIwLCBfaXRlcmF0b3IyMCwgX3N0ZXAyMCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIwID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjIwID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gKF9zdGVwMjAgPSBfaXRlcmF0b3IyMC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIwLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNCk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjA7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTY7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjAgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjAgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCAmJiBfaXRlcmF0b3IyMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjApIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjA7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN11dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRhcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSwgX2RpZEl0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yRXJyb3IyMSwgX2l0ZXJhdG9yMjEsIF9zdGVwMjEsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIxID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyMSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IChfc3RlcDIxID0gX2l0ZXJhdG9yMjEubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMS52YWx1ZTtcblxuXHQgICAgICAgIGZuKHgpO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjEgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjEgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSAmJiBfaXRlcmF0b3IyMVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjFbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjEpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjE7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInVuaXF1ZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2VlbiwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyLCBfZGlkSXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3JFcnJvcjIyLCBfaXRlcmF0b3IyMiwgX3N0ZXAyMiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBzZWVuID0gbmV3IF9TZXQoKTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjIyID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gKF9zdGVwMjIgPSBfaXRlcmF0b3IyMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIyLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKHNlZW4uaGFzKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBzZWVuLmFkZCh4KTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTc7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiAmJiBfaXRlcmF0b3IyMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjI7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgc2Vlbi5jbGVhcigpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTcsIDIxLCAyOV0sIFsyMiwsIDI0LCAyOF1dKTtcblx0fSkpO1xuXG5cdHZhciBfemlwID0gcmV3cmFwKF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGl0ZXJhYmxlcykge1xuXHQgIHZhciBsb25nZXN0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgaXRlcnMsIG51bUl0ZXJzLCBudW1GaW5pc2hlZCwgZmluaXNoZWQsIHppcHBlZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzLCBfZGlkSXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3JFcnJvcjIzLCBfaXRlcmF0b3IyMywgX3N0ZXAyMywgaXQsIF9pdCRuZXh0LCB2YWx1ZSwgZG9uZTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoaXRlcmFibGVzLmxlbmd0aCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpdGVycyA9IGl0ZXJhYmxlcy5tYXAoZ2V0SXRlcmF0b3IpO1xuXHQgICAgICAgIG51bUl0ZXJzID0gaXRlcmFibGVzLmxlbmd0aDtcblx0ICAgICAgICBudW1GaW5pc2hlZCA9IDA7XG5cdCAgICAgICAgZmluaXNoZWQgPSBmYWxzZTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKGZpbmlzaGVkKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB6aXBwZWQgPSBbXTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxMTtcblx0ICAgICAgICBfaXRlcmF0b3IyMyA9IF9nZXRJdGVyYXRvcihpdGVycyk7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gKF9zdGVwMjMgPSBfaXRlcmF0b3IyMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGl0ID0gX3N0ZXAyMy52YWx1ZTtcblx0ICAgICAgICBfaXQkbmV4dCA9IGl0Lm5leHQoKTtcblx0ICAgICAgICB2YWx1ZSA9IF9pdCRuZXh0LnZhbHVlO1xuXHQgICAgICAgIGRvbmUgPSBfaXQkbmV4dC5kb25lO1xuXG5cdCAgICAgICAgaWYgKCFkb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobG9uZ2VzdCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGlmICgrK251bUZpbmlzaGVkID09IG51bUl0ZXJzKSB7XG5cdCAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgIC8vIExlYXZlIGEgaG9sZSBpbiB0aGUgYXJyYXkgc28gdGhhdCB5b3UgY2FuIGRpc3Rpbmd1aXNoIGFuIGl0ZXJhYmxlXG5cdCAgICAgICAgICAvLyB0aGF0J3MgZG9uZSAodmlhIGBpbmRleCBpbiBhcnJheSA9PSBmYWxzZWApIGZyb20gYW4gaXRlcmFibGVcblx0ICAgICAgICAgIC8vIHlpZWxkaW5nIGB1bmRlZmluZWRgLlxuXHQgICAgICAgICAgemlwcGVkLmxlbmd0aCsrO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB6aXBwZWQucHVzaCh2YWx1ZSk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDExKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzI7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMzO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgJiYgX2l0ZXJhdG9yMjNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM1O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIzO1xuXG5cdCAgICAgIGNhc2UgMzg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgzNSk7XG5cblx0ICAgICAgY2FzZSAzOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDMyKTtcblxuXHQgICAgICBjYXNlIDQwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0Mjtcblx0ICAgICAgICByZXR1cm4gemlwcGVkO1xuXG5cdCAgICAgIGNhc2UgNDI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA0NDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1sxMSwgMjgsIDMyLCA0MF0sIFszMywsIDM1LCAzOV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICBmb3IgKHZhciBfbGVuNyA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW43KSwgX2tleTcgPSAwOyBfa2V5NyA8IF9sZW43OyBfa2V5NysrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleTddID0gYXJndW1lbnRzW19rZXk3XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBMb25nZXN0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIGZvciAodmFyIF9sZW44ID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjgpLCBfa2V5OCA9IDA7IF9rZXk4IDwgX2xlbjg7IF9rZXk4KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OF0gPSBhcmd1bWVudHNbX2tleThdO1xuXHQgIH1cblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKGl0ZXJhYmxlcywgdHJ1ZSksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcFdpdGhcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICBmb3IgKHZhciBfbGVuOSA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW45ID4gMSA/IF9sZW45IC0gMSA6IDApLCBfa2V5OSA9IDE7IF9rZXk5IDwgX2xlbjk7IF9rZXk5KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5OSAtIDFdID0gYXJndW1lbnRzW19rZXk5XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMpLnNwcmVhZE1hcChmbiksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdC8qXG5cdCAqIEZ1bmN0aW9ucyB0aGF0IGZvcmNlIGl0ZXJhdGlvbiB0byBjb21wbGV0aW9uIGFuZCByZXR1cm4gYSB2YWx1ZS5cblx0ICovXG5cblx0Ly8gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB3ZSB3aWxsIGJsb2NrIHRoZSBtYWluIHRocmVhZCBhdCBhIHRpbWVcblx0Ly8gd2hpbGUgaW4gYGFzeW5jRWFjaGAuXG5cdHd1Lk1BWF9CTE9DSyA9IDE1O1xuXHQvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB5aWVsZCB0byB0aGUgbWFpbiB0aHJlYWQgYmV0d2VlbiBidXJzdHMgb2Zcblx0Ly8gd29yay5cblx0d3UuVElNRU9VVCA9IDE7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiYXN5bmNFYWNoXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBtYXhCbG9jayA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHd1Lk1BWF9CTE9DSyA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgdGltZW91dCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMiB8fCBhcmd1bWVudHNbMl0gPT09IHVuZGVmaW5lZCA/IHd1LlRJTUVPVVQgOiBhcmd1bWVudHNbMl07XG5cblx0ICB2YXIgaXRlciA9IGdldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgcmV0dXJuIG5ldyBfUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICAoZnVuY3Rpb24gbG9vcCgpIHtcblx0ICAgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuXHQgICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gdHJ1ZTtcblx0ICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjQgPSBmYWxzZTtcblx0ICAgICAgdmFyIF9pdGVyYXRvckVycm9yMjQgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyNCA9IF9nZXRJdGVyYXRvcihpdGVyKSwgX3N0ZXAyNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSAoX3N0ZXAyNCA9IF9pdGVyYXRvcjI0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWUpIHtcblx0ICAgICAgICAgIHZhciB4ID0gX3N0ZXAyNC52YWx1ZTtcblxuXHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgZm4oeCk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgICAgICAgIHJlamVjdChlKTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gbWF4QmxvY2spIHtcblx0ICAgICAgICAgICAgc2V0VGltZW91dChsb29wLCB0aW1lb3V0KTtcblx0ICAgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyNCA9IGVycjtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgJiYgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgICAgX2l0ZXJhdG9yMjRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjQpIHtcblx0ICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICByZXNvbHZlKCk7XG5cdCAgICB9KSgpO1xuXHQgIH0pO1xuXHR9LCAzKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJldmVyeVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI1ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI1ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI1OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IChfc3RlcDI1ID0gX2l0ZXJhdG9yMjUubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjUudmFsdWU7XG5cblx0ICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNSA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI1ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSAmJiBfaXRlcmF0b3IyNVtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI1KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiB0cnVlO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJmaW5kXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI2ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjYgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjYgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjY7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gKF9zdGVwMjYgPSBfaXRlcmF0b3IyNi5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyNi52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4geDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI2ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiAmJiBfaXRlcmF0b3IyNltcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI2KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZm9yRWFjaFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNyA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI3ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI3ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI3OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IChfc3RlcDI3ID0gX2l0ZXJhdG9yMjcubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjcudmFsdWU7XG5cblx0ICAgICAgZm4oeCk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI3ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjcgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ICYmIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjcpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI3O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJoYXNcIiwgZnVuY3Rpb24gKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHRoaXMuc29tZShmdW5jdGlvbiAoeCkge1xuXHQgICAgcmV0dXJuIHggPT09IHRoaW5nO1xuXHQgIH0pO1xuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJyZWR1Y2VcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgdmFsID0gaW5pdGlhbDtcblx0ICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcblx0ICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlO1xuXHQgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjggPSBmYWxzZTtcblx0ICAgIHZhciBfaXRlcmF0b3JFcnJvcjI4ID0gdW5kZWZpbmVkO1xuXG5cdCAgICB0cnkge1xuXHQgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyOCA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyODsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSAoX3N0ZXAyOCA9IF9pdGVyYXRvcjI4Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IHRydWUpIHtcblx0ICAgICAgICB2YXIgeCA9IF9zdGVwMjgudmFsdWU7XG5cblx0ICAgICAgICB2YWwgPSB4O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyOCA9IHRydWU7XG5cdCAgICAgIF9pdGVyYXRvckVycm9yMjggPSBlcnI7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ICYmIF9pdGVyYXRvcjI4W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOCkge1xuXHQgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyODtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyOSA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI5ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI5ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI5OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IChfc3RlcDI5ID0gX2l0ZXJhdG9yMjkubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjkudmFsdWU7XG5cblx0ICAgICAgdmFsID0gZm4odmFsLCB4KTtcblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjkgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyOSA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgJiYgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyOVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyOSkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gdmFsO1xuXHR9LCAyKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJzb21lXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjMwID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMzAgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMzAgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMzA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gKF9zdGVwMzAgPSBfaXRlcmF0b3IzMC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAzMC52YWx1ZTtcblxuXHQgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IzMCA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjMwID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCAmJiBfaXRlcmF0b3IzMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjMwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjMwKSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzMDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiBmYWxzZTtcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwidG9BcnJheVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkodGhpcykpO1xuXHR9KTtcblxuXHQvKlxuXHQgKiBNZXRob2RzIHRoYXQgcmV0dXJuIGFuIGFycmF5IG9mIGl0ZXJhYmxlcy5cblx0ICovXG5cblx0dmFyIE1BWF9DQUNIRSA9IDUwMDtcblxuXHR2YXIgX3RlZSA9IHJld3JhcChfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChpdGVyYXRvciwgY2FjaGUpIHtcblx0ICB2YXIgaXRlbXMsIGluZGV4LCBfaXRlcmF0b3IkbmV4dCwgZG9uZSwgdmFsdWU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcztcblx0ICAgICAgICBpbmRleCA9IDA7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IGl0ZW1zLmxlbmd0aCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvciRuZXh0ID0gaXRlcmF0b3IubmV4dCgpO1xuXHQgICAgICAgIGRvbmUgPSBfaXRlcmF0b3IkbmV4dC5kb25lO1xuXHQgICAgICAgIHZhbHVlID0gX2l0ZXJhdG9yJG5leHQudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIWRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChjYWNoZS5yZXR1cm5lZCA9PT0gTUlTU0lORykge1xuXHQgICAgICAgICAgY2FjaGUucmV0dXJuZWQgPSB2YWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDI1KTtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK10gPSB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBjYWNoZS50YWlsKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdmFsdWUgPSBpdGVtc1tpbmRleF07XG5cblx0ICAgICAgICBpZiAoaW5kZXggPT09IE1BWF9DQUNIRSkge1xuXHQgICAgICAgICAgaXRlbXMgPSBjYWNoZS5pdGVtcyA9IGl0ZW1zLnNsaWNlKGluZGV4KTtcblx0ICAgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAgICAgIGNhY2hlLnRhaWwgPSAwO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpdGVtc1tpbmRleF0gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBjYWNoZS50YWlsID0gKytpbmRleDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIHJldHVybiB2YWx1ZTtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMztcblx0ICAgICAgICByZXR1cm4gaXRlbXNbaW5kZXgrK107XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDI1OlxuXG5cdCAgICAgICAgaWYgKGNhY2hlLnRhaWwgPT09IGluZGV4KSB7XG5cdCAgICAgICAgICBpdGVtcy5sZW5ndGggPSAwO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIiwgY2FjaGUucmV0dXJuZWQpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cdF90ZWUucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInRlZVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIGl0ZXJhYmxlcyA9IG5ldyBBcnJheShuKTtcblx0ICB2YXIgY2FjaGUgPSB7IHRhaWw6IDAsIGl0ZW1zOiBbXSwgcmV0dXJuZWQ6IE1JU1NJTkcgfTtcblxuXHQgIHdoaWxlIChuLS0pIHtcblx0ICAgIGl0ZXJhYmxlc1tuXSA9IF90ZWUodGhpcywgY2FjaGUpO1xuXHQgIH1cblxuXHQgIHJldHVybiBpdGVyYWJsZXM7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInVuemlwXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDIgOiBhcmd1bWVudHNbMF07XG5cblx0ICByZXR1cm4gdGhpcy50ZWUobikubWFwKGZ1bmN0aW9uIChpdGVyLCBpKSB7XG5cdCAgICByZXR1cm4gaXRlci5wbHVjayhpKTtcblx0ICB9KTtcblx0fSwgMSk7XG5cblx0Lypcblx0ICogTnVtYmVyIG9mIGNoYW1iZXJzLlxuXHQgKi9cblxuXHR3dS50YW5nID0geyBjbGFuOiAzNiB9O1xuXG5cdC8vIFdlIGRvbid0IGhhdmUgYSBjYWNoZWQgaXRlbSBmb3IgdGhpcyBpbmRleCwgd2UgbmVlZCB0byBmb3JjZSBpdHNcblx0Ly8gZXZhbHVhdGlvbi5cblxuXHQvLyBJZiB3ZSBhcmUgdGhlIGxhc3QgaXRlcmF0b3IgdG8gdXNlIGEgY2FjaGVkIHZhbHVlLCBjbGVhbiB1cCBhZnRlclxuXHQvLyBvdXJzZWx2ZXMuXG5cblx0Ly8gV2UgaGF2ZSBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgdGhpcyBpbmRleCwgc28geWllbGQgaXQuXG5cbi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX0FycmF5JGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpW1wiZGVmYXVsdFwiXTtcblxuXHRleHBvcnRzW1wiZGVmYXVsdFwiXSA9IGZ1bmN0aW9uIChhcnIpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG5cdCAgICByZXR1cm4gYXJyMjtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIF9BcnJheSRmcm9tKGFycik7XG5cdCAgfVxuXHR9O1xuXG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oMyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLkFycmF5LmZyb207XG5cbi8qKiovIH0sXG4vKiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkYXQgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSh0cnVlKTtcblxuXHQvLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oOCkoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24oaXRlcmF0ZWQpe1xuXHQgIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQvLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG5cdH0sIGZ1bmN0aW9uKCl7XG5cdCAgdmFyIE8gICAgID0gdGhpcy5fdFxuXHQgICAgLCBpbmRleCA9IHRoaXMuX2lcblx0ICAgICwgcG9pbnQ7XG5cdCAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcblx0ICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG5cdCAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG5cdCAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyB0cnVlICAtPiBTdHJpbmcjYXRcblx0Ly8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBkZWZpbmVkICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRPX1NUUklORyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKHRoYXQsIHBvcyl7XG5cdCAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuXHQgICAgICAsIGkgPSB0b0ludGVnZXIocG9zKVxuXHQgICAgICAsIGwgPSBzLmxlbmd0aFxuXHQgICAgICAsIGEsIGI7XG5cdCAgICBpZihpIDwgMCB8fCBpID49IGwpcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuXHQgICAgYSA9IHMuY2hhckNvZGVBdChpKTtcblx0ICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGxcblx0ICAgICAgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG5cdCAgICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcblx0ICAgICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gNy4xLjQgVG9JbnRlZ2VyXG5cdHZhciBjZWlsICA9IE1hdGguY2VpbFxuXHQgICwgZmxvb3IgPSBNYXRoLmZsb29yO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNOYU4oaXQgPSAraXQpID8gMCA6IChpdCA+IDAgPyBmbG9vciA6IGNlaWwpKGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKGl0ID09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgTElCUkFSWSAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgJGRlZiAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsICRyZWRlZiAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpXG5cdCAgLCBoaWRlICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgaGFzICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIFNZTUJPTF9JVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgQlVHR1kgICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcblx0ICAsIEZGX0lURVJBVE9SICAgICA9ICdAQGl0ZXJhdG9yJ1xuXHQgICwgS0VZUyAgICAgICAgICAgID0gJ2tleXMnXG5cdCAgLCBWQUxVRVMgICAgICAgICAgPSAndmFsdWVzJztcblx0dmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRSl7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNCkoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXHQgIHZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcblx0ICAgIHN3aXRjaChraW5kKXtcblx0ICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuXHQgIH07XG5cdCAgdmFyIFRBRyAgICAgID0gTkFNRSArICcgSXRlcmF0b3InXG5cdCAgICAsIHByb3RvICAgID0gQmFzZS5wcm90b3R5cGVcblx0ICAgICwgX25hdGl2ZSAgPSBwcm90b1tTWU1CT0xfSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdXG5cdCAgICAsIF9kZWZhdWx0ID0gX25hdGl2ZSB8fCBjcmVhdGVNZXRob2QoREVGQVVMVClcblx0ICAgICwgbWV0aG9kcywga2V5O1xuXHQgIC8vIEZpeCBuYXRpdmVcblx0ICBpZihfbmF0aXZlKXtcblx0ICAgIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldFByb3RvKF9kZWZhdWx0LmNhbGwobmV3IEJhc2UpKTtcblx0ICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuXHQgICAgLy8gRkYgZml4XG5cdCAgICBpZighTElCUkFSWSAmJiBoYXMocHJvdG8sIEZGX0lURVJBVE9SKSloaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBTWU1CT0xfSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuXHQgIH1cblx0ICAvLyBEZWZpbmUgaXRlcmF0b3Jcblx0ICBpZighTElCUkFSWSB8fCBGT1JDRSloaWRlKHByb3RvLCBTWU1CT0xfSVRFUkFUT1IsIF9kZWZhdWx0KTtcblx0ICAvLyBQbHVnIGZvciBsaWJyYXJ5XG5cdCAgSXRlcmF0b3JzW05BTUVdID0gX2RlZmF1bHQ7XG5cdCAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcblx0ICBpZihERUZBVUxUKXtcblx0ICAgIG1ldGhvZHMgPSB7XG5cdCAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgICAgICAgID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoS0VZUyksXG5cdCAgICAgIHZhbHVlczogIERFRkFVTFQgPT0gVkFMVUVTID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoVkFMVUVTKSxcblx0ICAgICAgZW50cmllczogREVGQVVMVCAhPSBWQUxVRVMgPyBfZGVmYXVsdCA6IGNyZWF0ZU1ldGhvZCgnZW50cmllcycpXG5cdCAgICB9O1xuXHQgICAgaWYoRk9SQ0UpZm9yKGtleSBpbiBtZXRob2RzKXtcblx0ICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKSRyZWRlZihwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuXHQgICAgfSBlbHNlICRkZWYoJGRlZi5QICsgJGRlZi5GICogQlVHR1ksIE5BTUUsIG1ldGhvZHMpO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGNvcmUgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpXG5cdCAgLCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblx0dmFyIGN0eCA9IGZ1bmN0aW9uKGZuLCB0aGF0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24oKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cdHZhciAkZGVmID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXtcblx0ICB2YXIga2V5LCBvd24sIG91dCwgZXhwXG5cdCAgICAsIGlzR2xvYmFsID0gdHlwZSAmICRkZWYuR1xuXHQgICAgLCBpc1Byb3RvICA9IHR5cGUgJiAkZGVmLlBcblx0ICAgICwgdGFyZ2V0ICAgPSBpc0dsb2JhbCA/IGdsb2JhbCA6IHR5cGUgJiAkZGVmLlNcblx0ICAgICAgICA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV1cblx0ICAgICwgZXhwb3J0cyAgPSBpc0dsb2JhbCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pO1xuXHQgIGlmKGlzR2xvYmFsKXNvdXJjZSA9IG5hbWU7XG5cdCAgZm9yKGtleSBpbiBzb3VyY2Upe1xuXHQgICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG5cdCAgICBvd24gPSAhKHR5cGUgJiAkZGVmLkYpICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0O1xuXHQgICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuXHQgICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcblx0ICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG5cdCAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcblx0ICAgIGlmKGlzR2xvYmFsICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nKWV4cCA9IHNvdXJjZVtrZXldO1xuXHQgICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcblx0ICAgIGVsc2UgaWYodHlwZSAmICRkZWYuQiAmJiBvd24pZXhwID0gY3R4KG91dCwgZ2xvYmFsKTtcblx0ICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG5cdCAgICBlbHNlIGlmKHR5cGUgJiAkZGVmLlcgJiYgdGFyZ2V0W2tleV0gPT0gb3V0KSFmdW5jdGlvbihDKXtcblx0ICAgICAgZXhwID0gZnVuY3Rpb24ocGFyYW0pe1xuXHQgICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgQyA/IG5ldyBDKHBhcmFtKSA6IEMocGFyYW0pO1xuXHQgICAgICB9O1xuXHQgICAgICBleHBbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcblx0ICAgIH0ob3V0KTtcblx0ICAgIGVsc2UgZXhwID0gaXNQcm90byAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcblx0ICAgIC8vIGV4cG9ydFxuXHQgICAgZXhwb3J0c1trZXldID0gZXhwO1xuXHQgICAgaWYoaXNQcm90bykoZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSkpW2tleV0gPSBvdXQ7XG5cdCAgfVxuXHR9O1xuXHQvLyB0eXBlIGJpdG1hcFxuXHQkZGVmLkYgPSAxOyAgLy8gZm9yY2VkXG5cdCRkZWYuRyA9IDI7ICAvLyBnbG9iYWxcblx0JGRlZi5TID0gNDsgIC8vIHN0YXRpY1xuXHQkZGVmLlAgPSA4OyAgLy8gcHJvdG9cblx0JGRlZi5CID0gMTY7IC8vIGJpbmRcblx0JGRlZi5XID0gMzI7IC8vIHdyYXBcblx0bW9kdWxlLmV4cG9ydHMgPSAkZGVmO1xuXG4vKioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5cdHZhciBVTkRFRklORUQgPSAndW5kZWZpbmVkJztcblx0dmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSBVTkRFRklORUQgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuXHQgID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gVU5ERUZJTkVEICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZiA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdGlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMS4yLjAnfTtcblx0aWYodHlwZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTtcblxuLyoqKi8gfSxcbi8qIDE0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBjcmVhdGVEZXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIHJldHVybiAkLnNldERlc2Mob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0fSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG5cdCAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcblx0ICByZXR1cm4gb2JqZWN0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBjcmVhdGU6ICAgICAkT2JqZWN0LmNyZWF0ZSxcblx0ICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuXHQgIGlzRW51bTogICAgIHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFxuXHQgIGdldERlc2M6ICAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHksXG5cdCAgc2V0RGVzY3M6ICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIGdldEtleXM6ICAgICRPYmplY3Qua2V5cyxcblx0ICBnZXROYW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgZ2V0U3ltYm9sczogJE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG5cdCAgZWFjaDogICAgICAgW10uZm9yRWFjaFxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYml0bWFwLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHtcblx0ICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcblx0ICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcblx0ICAgIHdyaXRhYmxlICAgIDogIShiaXRtYXAgJiA0KSxcblx0ICAgIHZhbHVlICAgICAgIDogdmFsdWVcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcblx0bW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gISFleGVjKCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwga2V5KXtcblx0ICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgc3RvcmUgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSkoJ3drcycpXG5cdCAgLCBTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5TeW1ib2w7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG5cdCAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG5cdCAgICBTeW1ib2wgJiYgU3ltYm9sW25hbWVdIHx8IChTeW1ib2wgfHwgX193ZWJwYWNrX3JlcXVpcmVfXygyMikpKCdTeW1ib2wuJyArIG5hbWUpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG5cdCAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgaWQgPSAwXG5cdCAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcblx0ICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8qKiovIH0sXG4vKiAyNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG5cdC8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oMTQpKEl0ZXJhdG9yUHJvdG90eXBlLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuXHQgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9ICQuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogX193ZWJwYWNrX3JlcXVpcmVfXygxNikoMSxuZXh0KX0pO1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBoYXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgVEFHICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCd0b1N0cmluZ1RhZycpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIHRhZywgc3RhdCl7XG5cdCAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSloaWRlKGl0LCBUQUcsIHRhZyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgJGRlZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgdG9PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXygzOCkoZnVuY3Rpb24oaXRlcil7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG5cdCAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlLyosIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKi8pe1xuXHQgICAgdmFyIE8gICAgICAgPSB0b09iamVjdChhcnJheUxpa2UpXG5cdCAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcblx0ICAgICAgLCBtYXBmbiAgID0gYXJndW1lbnRzWzFdXG5cdCAgICAgICwgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWRcblx0ICAgICAgLCBpbmRleCAgID0gMFxuXHQgICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcblx0ICAgICAgLCBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgICBpZihtYXBwaW5nKW1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuXHQgICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG5cdCAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG5cdCAgICAgIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQzsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcblx0ICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgICAgICByZXN1bHRbaW5kZXhdID0gbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuXHQgICAgcmV0dXJuIHJlc3VsdDtcblx0ICB9XG5cdH0pO1xuXG5cbi8qKiovIH0sXG4vKiAyNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5cdHZhciBhRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgdGhhdCwgbGVuZ3RoKXtcblx0ICBhRnVuY3Rpb24oZm4pO1xuXHQgIGlmKHRoYXQgPT09IHVuZGVmaW5lZClyZXR1cm4gZm47XG5cdCAgc3dpdGNoKGxlbmd0aCl7XG5cdCAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG5cdCAgICB9O1xuXHQgICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuXHQgICAgfTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcblx0ICAgIH07XG5cdCAgfVxuXHQgIHJldHVybiBmdW5jdGlvbigvKiAuLi5hcmdzICovKXtcblx0ICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxuXHR2YXIgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcblx0dmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcyl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG5cdCAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcblx0ICAgIGlmKHJldCAhPT0gdW5kZWZpbmVkKWFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG5cdCAgICB0aHJvdyBlO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoIWlzT2JqZWN0KGl0KSl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxuXHR2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gKEl0ZXJhdG9ycy5BcnJheSB8fCBBcnJheS5wcm90b3R5cGVbSVRFUkFUT1JdKSA9PT0gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gNy4xLjE1IFRvTGVuZ3RoXG5cdHZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpXG5cdCAgLCBtaW4gICAgICAgPSBNYXRoLm1pbjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY2xhc3NvZiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZihpdCAhPSB1bmRlZmluZWQpcmV0dXJuIGl0W0lURVJBVE9SXSB8fCBpdFsnQEBpdGVyYXRvciddIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpXG5cdCAgLCBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgndG9TdHJpbmdUYWcnKVxuXHQgIC8vIEVTMyB3cm9uZyBoZXJlXG5cdCAgLCBBUkcgPSBjb2YoZnVuY3Rpb24oKXsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTywgVCwgQjtcblx0ICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcblx0ICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuXHQgICAgOiB0eXBlb2YgKFQgPSAoTyA9IE9iamVjdChpdCkpW1RBR10pID09ICdzdHJpbmcnID8gVFxuXHQgICAgLy8gYnVpbHRpblRhZyBjYXNlXG5cdCAgICA6IEFSRyA/IGNvZihPKVxuXHQgICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuXHQgICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU1lNQk9MX0lURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIFNBRkVfQ0xPU0lORyAgICA9IGZhbHNlO1xuXHR0cnkge1xuXHQgIHZhciByaXRlciA9IFs3XVtTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24oKXsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcblx0ICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbigpeyB0aHJvdyAyOyB9KTtcblx0fSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuXHQgIGlmKCFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuXHQgIHZhciBzYWZlID0gZmFsc2U7XG5cdCAgdHJ5IHtcblx0ICAgIHZhciBhcnIgID0gWzddXG5cdCAgICAgICwgaXRlciA9IGFycltTWU1CT0xfSVRFUkFUT1JdKCk7XG5cdCAgICBpdGVyLm5leHQgPSBmdW5jdGlvbigpeyBzYWZlID0gdHJ1ZTsgfTtcblx0ICAgIGFycltTWU1CT0xfSVRFUkFUT1JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXI7IH07XG5cdCAgICBleGVjKGFycik7XG5cdCAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXHQgIHJldHVybiBzYWZlO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfZ2V0SXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9pc0l0ZXJhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSlbXCJkZWZhdWx0XCJdO1xuXG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gKGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuXHQgICAgdmFyIF9hcnIgPSBbXTtcblx0ICAgIHZhciBfbiA9IHRydWU7XG5cdCAgICB2YXIgX2QgPSBmYWxzZTtcblx0ICAgIHZhciBfZSA9IHVuZGVmaW5lZDtcblxuXHQgICAgdHJ5IHtcblx0ICAgICAgZm9yICh2YXIgX2kgPSBfZ2V0SXRlcmF0b3IoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcblx0ICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG5cdCAgICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgX2QgPSB0cnVlO1xuXHQgICAgICBfZSA9IGVycjtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAoX2QpIHRocm93IF9lO1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBfYXJyO1xuXHQgIH1cblxuXHQgIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG5cdCAgICAgIHJldHVybiBhcnI7XG5cdCAgICB9IGVsc2UgaWYgKF9pc0l0ZXJhYmxlKE9iamVjdChhcnIpKSkge1xuXHQgICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoKTtcblxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogNDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg0MSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDQxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTtcblxuLyoqKi8gfSxcbi8qIDQyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0dmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRJdGVyYXRvcnMuTm9kZUxpc3QgPSBJdGVyYXRvcnMuSFRNTENvbGxlY3Rpb24gPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8qKiovIH0sXG4vKiA0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc2V0VW5zY29wZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpXG5cdCAgLCBzdGVwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIEl0ZXJhdG9ycyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgdG9JT2JqZWN0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXG5cdC8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcblx0Ly8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcblx0Ly8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuXHQvLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4KShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuXHQgIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcblx0ICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuXHQgIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG5cdC8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxuXHR9LCBmdW5jdGlvbigpe1xuXHQgIHZhciBPICAgICA9IHRoaXMuX3Rcblx0ICAgICwga2luZCAgPSB0aGlzLl9rXG5cdCAgICAsIGluZGV4ID0gdGhpcy5faSsrO1xuXHQgIGlmKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKXtcblx0ICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG5cdCAgICByZXR1cm4gc3RlcCgxKTtcblx0ICB9XG5cdCAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBpbmRleCk7XG5cdCAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG5cdCAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xuXHR9LCAndmFsdWVzJyk7XG5cblx0Ly8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuXHRJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5cdHNldFVuc2NvcGUoJ2tleXMnKTtcblx0c2V0VW5zY29wZSgndmFsdWVzJyk7XG5cdHNldFVuc2NvcGUoJ2VudHJpZXMnKTtcblxuLyoqKi8gfSxcbi8qIDQ0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7IC8qIGVtcHR5ICovIH07XG5cbi8qKiovIH0sXG4vKiA0NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG5cdCAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZX07XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXHJcblx0dmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KVxyXG5cdCAgLCBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcclxuXHQgIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGluZGV4ZWQgb2JqZWN0LCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3Ncblx0dmFyIGNvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IDAgaW4gT2JqZWN0KCd6JykgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCBnZXQgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuXHQgIGlmKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcblx0ICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTApLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cbi8qKiovIH0sXG4vKiA1MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGNsYXNzb2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuaXNJdGVyYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgTyA9IE9iamVjdChpdCk7XG5cdCAgcmV0dXJuIElURVJBVE9SIGluIE8gfHwgJ0BAaXRlcmF0b3InIGluIE8gfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg1MyksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKTtcblxuLyoqKi8gfSxcbi8qIDU0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7Ly8gVGhpcyBtZXRob2Qgb2Ygb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0IG5lZWRzIHRvIGJlXG5cdC8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xuXHR2YXIgZyA9XG5cdCAgdHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6XG5cdCAgdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6XG5cdCAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpcztcblxuXHQvLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcblx0Ly8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLlxuXHR2YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmXG5cdCAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG5cdC8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci5cblx0dmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXG5cdC8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cblx0Zy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcblxuXHRpZiAoaGFkUnVudGltZSkge1xuXHQgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG5cdCAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBvbGRSdW50aW1lO1xuXHR9IGVsc2Uge1xuXHQgIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG5cdCAgdHJ5IHtcblx0ICAgIGRlbGV0ZSBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICB9IGNhdGNoKGUpIHtcblx0ICAgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXHQgIH1cblx0fVxuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogbW9kdWxlLmV4cG9ydHMsIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSkpXG5cbi8qKiovIH0sXG4vKiA1NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCwgcHJvY2Vzcykgey8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG5cdCAqIGFkZGl0aW9uYWwgZ3JhbnQgb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpblxuXHQgKiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NylbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU3ltYm9sJGl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MilbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfT2JqZWN0JGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1Byb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KVtcImRlZmF1bHRcIl07XG5cblx0IShmdW5jdGlvbiAoZ2xvYmFsKSB7XG5cdCAgXCJ1c2Ugc3RyaWN0XCI7XG5cblx0ICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cblx0ICB2YXIgaXRlcmF0b3JTeW1ib2wgPSB0eXBlb2YgX1N5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIF9TeW1ib2wkaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG5cblx0ICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuXHQgIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcblx0ICBpZiAocnVudGltZSkge1xuXHQgICAgaWYgKGluTW9kdWxlKSB7XG5cdCAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcblx0ICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cblx0ICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuXHQgICAgfVxuXHQgICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuXHQgICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblxuXHQgIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuXHQgIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cblx0ICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuXHQgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcblx0ICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG5cdCAgICB2YXIgZ2VuZXJhdG9yID0gX09iamVjdCRjcmVhdGUoKG91dGVyRm4gfHwgR2VuZXJhdG9yKS5wcm90b3R5cGUpO1xuXG5cdCAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiB8fCBudWxsLCBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSkpO1xuXG5cdCAgICByZXR1cm4gZ2VuZXJhdG9yO1xuXHQgIH1cblx0ICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG5cdCAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG5cdCAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG5cdCAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG5cdCAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuXHQgIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcblx0ICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG5cdCAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcblx0ICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcblx0ICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG5cdCAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuXHQgIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcblx0ICAgIH1cblx0ICB9XG5cblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcblx0ICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcblx0ICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuXHQgIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cblx0ICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG5cdCAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuXHQgIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cblx0ICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcblx0ICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3Jcblx0ICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuXHQgIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cblx0ICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG5cdCAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID0gR2VuZXJhdG9yLnByb3RvdHlwZTtcblx0ICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cblx0ICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuXHQgIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG5cdCAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuXHQgICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuXHQgICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcblx0ICAgICAgfTtcblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcblx0ICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3Rvcjtcblx0ICAgIHJldHVybiBjdG9yID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcblx0ICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cblx0ICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cblx0ICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIiA6IGZhbHNlO1xuXHQgIH07XG5cblx0ICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG5cdCAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG5cdCAgICBnZW5GdW4ucHJvdG90eXBlID0gX09iamVjdCRjcmVhdGUoR3ApO1xuXHQgICAgcmV0dXJuIGdlbkZ1bjtcblx0ICB9O1xuXG5cdCAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG5cdCAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3Rcblx0ICAvLyBgdmFsdWUgaW5zdGFuY2VvZiBBd2FpdEFyZ3VtZW50YCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcblx0ICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLiBTb21lIG1heSBjb25zaWRlciB0aGUgbmFtZSBvZiB0aGlzIG1ldGhvZCB0b29cblx0ICAvLyBjdXRlc3ksIGJ1dCB0aGV5IGFyZSBjdXJtdWRnZW9ucy5cblx0ICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24gKGFyZykge1xuXHQgICAgcmV0dXJuIG5ldyBBd2FpdEFyZ3VtZW50KGFyZyk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIEF3YWl0QXJndW1lbnQoYXJnKSB7XG5cdCAgICB0aGlzLmFyZyA9IGFyZztcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuXHQgICAgLy8gVGhpcyBpbnZva2UgZnVuY3Rpb24gaXMgd3JpdHRlbiBpbiBhIHN0eWxlIHRoYXQgYXNzdW1lcyBzb21lXG5cdCAgICAvLyBjYWxsaW5nIGZ1bmN0aW9uIChvciBQcm9taXNlKSB3aWxsIGhhbmRsZSBleGNlcHRpb25zLlxuXHQgICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG5cdCAgICAgIHZhciByZXN1bHQgPSBnZW5lcmF0b3JbbWV0aG9kXShhcmcpO1xuXHQgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG5cdCAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEF3YWl0QXJndW1lbnQgPyBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlLmFyZykudGhlbihpbnZva2VOZXh0LCBpbnZva2VUaHJvdykgOiBfUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uICh1bndyYXBwZWQpIHtcblx0ICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuXHQgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuXHQgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG5cdCAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcblx0ICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuXHQgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2Vcblx0ICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG5cdCAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG5cdCAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcblx0ICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcblx0ICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG5cdCAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuXHQgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuXHQgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuXHQgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcblx0ICAgICAgICByZXR1cm4gcmVzdWx0O1xuXHQgICAgICB9KTtcblx0ICAgIH1cblxuXHQgICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHByb2Nlc3MuZG9tYWluKSB7XG5cdCAgICAgIGludm9rZSA9IHByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcblx0ICAgIH1cblxuXHQgICAgdmFyIGludm9rZU5leHQgPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwibmV4dFwiKTtcblx0ICAgIHZhciBpbnZva2VUaHJvdyA9IGludm9rZS5iaW5kKGdlbmVyYXRvciwgXCJ0aHJvd1wiKTtcblx0ICAgIHZhciBpbnZva2VSZXR1cm4gPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwicmV0dXJuXCIpO1xuXHQgICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuXHQgICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuXHQgICAgICB2YXIgZW5xdWV1ZVJlc3VsdCA9XG5cdCAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcblx0ICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG5cdCAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcblx0ICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cblx0ICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG5cdCAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG5cdCAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcblx0ICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcblx0ICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcblx0ICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcblx0ICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcblx0ICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuXHQgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGludm9rZShtZXRob2QsIGFyZyk7XG5cdCAgICAgIH0pIDogbmV3IF9Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cdCAgICAgICAgcmVzb2x2ZShpbnZva2UobWV0aG9kLCBhcmcpKTtcblx0ICAgICAgfSk7XG5cblx0ICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZW5xdWV1ZVJlc3VsdCBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieVxuXHQgICAgICAvLyBsYXRlciBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG5cdCAgICAgIHByZXZpb3VzUHJvbWlzZSA9IGVucXVldWVSZXN1bHRbXCJjYXRjaFwiXShmdW5jdGlvbiAoaWdub3JlZCkge30pO1xuXG5cdCAgICAgIHJldHVybiBlbnF1ZXVlUmVzdWx0O1xuXHQgICAgfVxuXG5cdCAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuXHQgICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG5cdCAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuXHQgIH1cblxuXHQgIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG5cblx0ICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG5cdCAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG5cdCAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG5cdCAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uIChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuXHQgICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcih3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSk7XG5cblx0ICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cblx0ICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG5cdCAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuXHQgICAgfSk7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuXHQgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuXHQgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG5cdCAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgIHRocm93IGFyZztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuXHQgICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcblx0ICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuXHQgICAgICB9XG5cblx0ICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuXHQgICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuXHQgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIiB8fCBtZXRob2QgPT09IFwidGhyb3dcIiAmJiBkZWxlZ2F0ZS5pdGVyYXRvclttZXRob2RdID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgICAgLy8gQSByZXR1cm4gb3IgdGhyb3cgKHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyB0aHJvd1xuXHQgICAgICAgICAgICAvLyBtZXRob2QpIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cblx0ICAgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cblx0ICAgICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuXHQgICAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG5cdCAgICAgICAgICAgIHZhciByZXR1cm5NZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltcInJldHVyblwiXTtcblx0ICAgICAgICAgICAgaWYgKHJldHVybk1ldGhvZCkge1xuXHQgICAgICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChyZXR1cm5NZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBhcmcpO1xuXHQgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcmV0dXJuIG1ldGhvZCB0aHJldyBhbiBleGNlcHRpb24sIGxldCB0aGF0XG5cdCAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gcHJldmFpbCBvdmVyIHRoZSBvcmlnaW5hbCByZXR1cm4gb3IgdGhyb3cuXG5cdCAgICAgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cblx0ICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuXHQgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHdpdGggdGhlIG91dGVyIHJldHVybiwgbm93IHRoYXQgdGhlIGRlbGVnYXRlXG5cdCAgICAgICAgICAgICAgLy8gaXRlcmF0b3IgaGFzIGJlZW4gdGVybWluYXRlZC5cblx0ICAgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kXSwgZGVsZWdhdGUuaXRlcmF0b3IsIGFyZyk7XG5cblx0ICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIC8vIExpa2UgcmV0dXJuaW5nIGdlbmVyYXRvci50aHJvdyh1bmNhdWdodCksIGJ1dCB3aXRob3V0IHRoZVxuXHQgICAgICAgICAgICAvLyBvdmVyaGVhZCBvZiBhbiBleHRyYSBmdW5jdGlvbiBjYWxsLlxuXHQgICAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICAgIGFyZyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAvLyBEZWxlZ2F0ZSBnZW5lcmF0b3IgcmFuIGFuZCBoYW5kbGVkIGl0cyBvd24gZXhjZXB0aW9ucyBzb1xuXHQgICAgICAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBtZXRob2Qgd2FzLCB3ZSBjb250aW51ZSBhcyBpZiBpdCBpc1xuXHQgICAgICAgICAgLy8gXCJuZXh0XCIgd2l0aCBhbiB1bmRlZmluZWQgYXJnLlxuXHQgICAgICAgICAgbWV0aG9kID0gXCJuZXh0XCI7XG5cdCAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cblx0ICAgICAgICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgIGlmIChpbmZvLmRvbmUpIHtcblx0ICAgICAgICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cdCAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cdCAgICAgICAgICAgIHJldHVybiBpbmZvO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAobWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IGFyZztcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIGNvbnRleHQuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcblx0ICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcblx0ICAgICAgICAgICAgdGhyb3cgYXJnO1xuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBpZiAoY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpKSB7XG5cdCAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG5cdCAgICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG5cdCAgICAgICAgICAgIG1ldGhvZCA9IFwibmV4dFwiO1xuXHQgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGFyZyk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuXHQgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblx0ICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcblx0ICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cblx0ICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cblx0ICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lID8gR2VuU3RhdGVDb21wbGV0ZWQgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG5cdCAgICAgICAgICB2YXIgaW5mbyA9IHtcblx0ICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG5cdCAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuXHQgICAgICAgICAgfTtcblxuXHQgICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcblx0ICAgICAgICAgICAgaWYgKGNvbnRleHQuZGVsZWdhdGUgJiYgbWV0aG9kID09PSBcIm5leHRcIikge1xuXHQgICAgICAgICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG5cdCAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuXHQgICAgICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGluZm87XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuXHQgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuXHQgICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihhcmcpIGNhbGwgYWJvdmUuXG5cdCAgICAgICAgICBtZXRob2QgPSBcInRocm93XCI7XG5cdCAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICB9XG5cblx0ICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuXHQgIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cblx0ICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG5cdCAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIHRoaXM7XG5cdCAgfTtcblxuXHQgIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG5cdCAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG5cdCAgICBpZiAoMSBpbiBsb2NzKSB7XG5cdCAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKDIgaW4gbG9jcykge1xuXHQgICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcblx0ICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuXHQgICAgfVxuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuXHQgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG5cdCAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG5cdCAgICBkZWxldGUgcmVjb3JkLmFyZztcblx0ICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuXHQgICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG5cdCAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG5cdCAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG5cdCAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuXHQgICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuXHQgICAgdGhpcy5yZXNldCh0cnVlKTtcblx0ICB9XG5cblx0ICBydW50aW1lLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG5cdCAgICB2YXIga2V5cyA9IFtdO1xuXHQgICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuXHQgICAgICBrZXlzLnB1c2goa2V5KTtcblx0ICAgIH1cblx0ICAgIGtleXMucmV2ZXJzZSgpO1xuXG5cdCAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuXHQgICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cblx0ICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuXHQgICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcblx0ICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcblx0ICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuXHQgICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcblx0ICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG5cdCAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG5cdCAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuXHQgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXHQgICAgICByZXR1cm4gbmV4dDtcblx0ICAgIH07XG5cdCAgfTtcblxuXHQgIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuXHQgICAgaWYgKGl0ZXJhYmxlKSB7XG5cdCAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcblx0ICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0ICAgICAgICByZXR1cm4gaXRlcmFibGU7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcblx0ICAgICAgICB2YXIgaSA9IC0xLFxuXHQgICAgICAgICAgICBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcblx0ICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcblx0ICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuXHQgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcblx0ICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcblx0ICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXG5cdCAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuXHQgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgfTtcblxuXHQgICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuXHQgICAgICB9XG5cdCAgICB9XG5cblx0ICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cblx0ICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcblx0ICB9XG5cdCAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cblx0ICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuXHQgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuXHQgIH1cblxuXHQgIENvbnRleHQucHJvdG90eXBlID0ge1xuXHQgICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cblx0ICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldChza2lwVGVtcFJlc2V0KSB7XG5cdCAgICAgIHRoaXMucHJldiA9IDA7XG5cdCAgICAgIHRoaXMubmV4dCA9IDA7XG5cdCAgICAgIHRoaXMuc2VudCA9IHVuZGVmaW5lZDtcblx0ICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG5cdCAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuXHQgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuXHQgICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcblx0ICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiYgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiYgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuXHQgICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcblx0ICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuXHQgICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuXHQgICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG5cdCAgICB9LFxuXG5cdCAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24gZGlzcGF0Y2hFeGNlcHRpb24oZXhjZXB0aW9uKSB7XG5cdCAgICAgIGlmICh0aGlzLmRvbmUpIHtcblx0ICAgICAgICB0aHJvdyBleGNlcHRpb247XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG5cdCAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuXHQgICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG5cdCAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXHQgICAgICAgIHJldHVybiAhIWNhdWdodDtcblx0ICAgICAgfVxuXG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuXHQgICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcblx0ICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuXHQgICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cblx0ICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcblx0ICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuXHQgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG5cdCAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBhYnJ1cHQ6IGZ1bmN0aW9uIGFicnVwdCh0eXBlLCBhcmcpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJiBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChmaW5hbGx5RW50cnkgJiYgKHR5cGUgPT09IFwiYnJlYWtcIiB8fCB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcblx0ICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG5cdCAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuXHQgICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG5cdCAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cblx0ICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuY29tcGxldGUocmVjb3JkKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgfSxcblxuXHQgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlY29yZCwgYWZ0ZXJMb2MpIHtcblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHwgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICB0aGlzLnJ2YWwgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG5cdCAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgZmluaXNoOiBmdW5jdGlvbiBmaW5pc2goZmluYWxseUxvYykge1xuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcblx0ICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBcImNhdGNoXCI6IGZ1bmN0aW9uIF9jYXRjaCh0cnlMb2MpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcblx0ICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXHQgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIHRocm93bjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cblx0ICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG5cdCAgICB9LFxuXG5cdCAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiBkZWxlZ2F0ZVlpZWxkKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG5cdCAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG5cdCAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG5cdCAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcblx0ICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG5cdCAgICAgIH07XG5cblx0ICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICB9XG5cdCAgfTtcblx0fSkoXG5cdC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcblx0Ly8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG5cdC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG5cdHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOiB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDogdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdW5kZWZpbmVkKTtcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSksIF9fd2VicGFja19yZXF1aXJlX18oNTYpKSlcblxuLyoqKi8gfSxcbi8qIDU2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblxuXHR2YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cdHZhciBxdWV1ZSA9IFtdO1xuXHR2YXIgZHJhaW5pbmcgPSBmYWxzZTtcblx0dmFyIGN1cnJlbnRRdWV1ZTtcblx0dmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuXHRmdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG5cdCAgICBkcmFpbmluZyA9IGZhbHNlO1xuXHQgICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICB9XG5cdCAgICBpZiAocXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgZHJhaW5RdWV1ZSgpO1xuXHQgICAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcblx0ICAgIGlmIChkcmFpbmluZykge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuXHQgICAgZHJhaW5pbmcgPSB0cnVlO1xuXG5cdCAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgd2hpbGUobGVuKSB7XG5cdCAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG5cdCAgICAgICAgcXVldWUgPSBbXTtcblx0ICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG5cdCAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcblx0ICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG5cdCAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgfVxuXHQgICAgY3VycmVudFF1ZXVlID0gbnVsbDtcblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdH1cblxuXHRwcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuXHQgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuXHQgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHQgICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcblx0ICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG5cdCAgICAgICAgc2V0VGltZW91dChkcmFpblF1ZXVlLCAwKTtcblx0ICAgIH1cblx0fTtcblxuXHQvLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5cdGZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuXHQgICAgdGhpcy5mdW4gPSBmdW47XG5cdCAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG5cdH1cblx0SXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG5cdH07XG5cdHByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5cdHByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5cdHByb2Nlc3MuZW52ID0ge307XG5cdHByb2Nlc3MuYXJndiA9IFtdO1xuXHRwcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcblx0cHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5cdGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5cdHByb2Nlc3Mub24gPSBub29wO1xuXHRwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5vbmNlID0gbm9vcDtcblx0cHJvY2Vzcy5vZmYgPSBub29wO1xuXHRwcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuXHRwcm9jZXNzLmVtaXQgPSBub29wO1xuXG5cdHByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cblx0cHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcblx0cHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cdHByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuLyoqKi8gfSxcbi8qIDU3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTgpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuU3ltYm9sO1xuXG4vKioqLyB9LFxuLyogNTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0Ly8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxuXHR2YXIgJCAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgZ2xvYmFsICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgaGFzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgU1VQUE9SVF9ERVNDICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuXHQgICwgJGRlZiAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgJHJlZGVmICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKVxuXHQgICwgJGZhaWxzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KVxuXHQgICwgc2hhcmVkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKVxuXHQgICwgc2V0VGFnICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KVxuXHQgICwgdWlkICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKVxuXHQgICwgd2tzICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKVxuXHQgICwga2V5T2YgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKVxuXHQgICwgJG5hbWVzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYxKVxuXHQgICwgZW51bUtleXMgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKVxuXHQgICwgaXNPYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgYW5PYmplY3QgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9JT2JqZWN0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgY3JlYXRlRGVzYyAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KVxuXHQgICwgZ2V0RGVzYyAgICAgICAgPSAkLmdldERlc2Ncblx0ICAsIHNldERlc2MgICAgICAgID0gJC5zZXREZXNjXG5cdCAgLCBfY3JlYXRlICAgICAgICA9ICQuY3JlYXRlXG5cdCAgLCBnZXROYW1lcyAgICAgICA9ICRuYW1lcy5nZXRcblx0ICAsICRTeW1ib2wgICAgICAgID0gZ2xvYmFsLlN5bWJvbFxuXHQgICwgc2V0dGVyICAgICAgICAgPSBmYWxzZVxuXHQgICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuXHQgICwgaXNFbnVtICAgICAgICAgPSAkLmlzRW51bVxuXHQgICwgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpXG5cdCAgLCBBbGxTeW1ib2xzICAgICA9IHNoYXJlZCgnc3ltYm9scycpXG5cdCAgLCB1c2VOYXRpdmUgICAgICA9IHR5cGVvZiAkU3ltYm9sID09ICdmdW5jdGlvbidcblx0ICAsIE9iamVjdFByb3RvICAgID0gT2JqZWN0LnByb3RvdHlwZTtcblxuXHQvLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcblx0dmFyIHNldFN5bWJvbERlc2MgPSBTVVBQT1JUX0RFU0MgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIF9jcmVhdGUoc2V0RGVzYyh7fSwgJ2EnLCB7XG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBzZXREZXNjKHRoaXMsICdhJywge3ZhbHVlOiA3fSkuYTsgfVxuXHQgIH0pKS5hICE9IDc7XG5cdH0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG5cdCAgdmFyIHByb3RvRGVzYyA9IGdldERlc2MoT2JqZWN0UHJvdG8sIGtleSk7XG5cdCAgaWYocHJvdG9EZXNjKWRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuXHQgIHNldERlc2MoaXQsIGtleSwgRCk7XG5cdCAgaWYocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bylzZXREZXNjKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG5cdH0gOiBzZXREZXNjO1xuXG5cdHZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcblx0ICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sLnByb3RvdHlwZSk7XG5cdCAgc3ltLl9rID0gdGFnO1xuXHQgIFNVUFBPUlRfREVTQyAmJiBzZXR0ZXIgJiYgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuXHQgICAgICBzZXRTeW1ib2xEZXNjKHRoaXMsIHRhZywgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHQgIHJldHVybiBzeW07XG5cdH07XG5cblx0dmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpe1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkpe1xuXHQgICAgaWYoIUQuZW51bWVyYWJsZSl7XG5cdCAgICAgIGlmKCFoYXMoaXQsIEhJRERFTikpc2V0RGVzYyhpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG5cdCAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZihoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKWl0W0hJRERFTl1ba2V5XSA9IGZhbHNlO1xuXHQgICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcblx0ICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG5cdCAgfSByZXR1cm4gc2V0RGVzYyhpdCwga2V5LCBEKTtcblx0fTtcblx0dmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCl7XG5cdCAgYW5PYmplY3QoaXQpO1xuXHQgIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSlcblx0ICAgICwgaSAgICA9IDBcblx0ICAgICwgbCA9IGtleXMubGVuZ3RoXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsID4gaSkkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cdHZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKXtcblx0ICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG5cdH07XG5cdHZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpe1xuXHQgIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5KTtcblx0ICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldXG5cdCAgICA/IEUgOiB0cnVlO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KXtcblx0ICB2YXIgRCA9IGdldERlc2MoaXQgPSB0b0lPYmplY3QoaXQpLCBrZXkpO1xuXHQgIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuXHQgIHJldHVybiBEO1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICB2YXIgbmFtZXMgID0gZ2V0TmFtZXModG9JT2JqZWN0KGl0KSlcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZighaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4pcmVzdWx0LnB1c2goa2V5KTtcblx0ICByZXR1cm4gcmVzdWx0O1xuXHR9O1xuXHR2YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdldE5hbWVzKHRvSU9iamVjdChpdCkpXG5cdCAgICAsIHJlc3VsdCA9IFtdXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpaWYoaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pKXJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuXHQgICAgaWYodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcblx0ICAgIHJldHVybiB3cmFwKHVpZChhcmd1bWVudHNbMF0pKTtcblx0ICB9O1xuXHQgICRyZWRlZigkU3ltYm9sLnByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcblx0ICAgIHJldHVybiB0aGlzLl9rO1xuXHQgIH0pO1xuXG5cdCAgJC5jcmVhdGUgICAgID0gJGNyZWF0ZTtcblx0ICAkLmlzRW51bSAgICAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG5cdCAgJC5nZXREZXNjICAgID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblx0ICAkLnNldERlc2MgICAgPSAkZGVmaW5lUHJvcGVydHk7XG5cdCAgJC5zZXREZXNjcyAgID0gJGRlZmluZVByb3BlcnRpZXM7XG5cdCAgJC5nZXROYW1lcyAgID0gJG5hbWVzLmdldCA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXHQgICQuZ2V0U3ltYm9scyA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblx0ICBpZihTVVBQT1JUX0RFU0MgJiYgIV9fd2VicGFja19yZXF1aXJlX18oOSkpe1xuXHQgICAgJHJlZGVmKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuXHQgIH1cblx0fVxuXG5cdC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG5cdGlmKCF1c2VOYXRpdmUgfHwgJGZhaWxzKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFskU3ltYm9sKCldKSAhPSAnW251bGxdJztcblx0fSkpJHJlZGVmKCRTeW1ib2wucHJvdG90eXBlLCAndG9KU09OJywgZnVuY3Rpb24gdG9KU09OKCl7XG5cdCAgaWYodXNlTmF0aXZlICYmIGlzT2JqZWN0KHRoaXMpKXJldHVybiB0aGlzO1xuXHR9KTtcblxuXHR2YXIgc3ltYm9sU3RhdGljcyA9IHtcblx0ICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcblx0ICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcblx0ICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcblx0ICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG5cdCAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcblx0ICB9LFxuXHQgIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuXHQgIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG5cdCAgICByZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG5cdCAgfSxcblx0ICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG5cdCAgdXNlU2ltcGxlOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSBmYWxzZTsgfVxuXHR9O1xuXHQvLyAxOS40LjIuMiBTeW1ib2wuaGFzSW5zdGFuY2Vcblx0Ly8gMTkuNC4yLjMgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZVxuXHQvLyAxOS40LjIuNCBTeW1ib2wuaXRlcmF0b3Jcblx0Ly8gMTkuNC4yLjYgU3ltYm9sLm1hdGNoXG5cdC8vIDE5LjQuMi44IFN5bWJvbC5yZXBsYWNlXG5cdC8vIDE5LjQuMi45IFN5bWJvbC5zZWFyY2hcblx0Ly8gMTkuNC4yLjEwIFN5bWJvbC5zcGVjaWVzXG5cdC8vIDE5LjQuMi4xMSBTeW1ib2wuc3BsaXRcblx0Ly8gMTkuNC4yLjEyIFN5bWJvbC50b1ByaW1pdGl2ZVxuXHQvLyAxOS40LjIuMTMgU3ltYm9sLnRvU3RyaW5nVGFnXG5cdC8vIDE5LjQuMi4xNCBTeW1ib2wudW5zY29wYWJsZXNcblx0JC5lYWNoLmNhbGwoKFxuXHQgICAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCwnICtcblx0ICAgICdzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuXHQgICkuc3BsaXQoJywnKSwgZnVuY3Rpb24oaXQpe1xuXHQgICAgdmFyIHN5bSA9IHdrcyhpdCk7XG5cdCAgICBzeW1ib2xTdGF0aWNzW2l0XSA9IHVzZU5hdGl2ZSA/IHN5bSA6IHdyYXAoc3ltKTtcblx0ICB9XG5cdCk7XG5cblx0c2V0dGVyID0gdHJ1ZTtcblxuXHQkZGVmKCRkZWYuRyArICRkZWYuVywge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5cdCRkZWYoJGRlZi5TLCAnU3ltYm9sJywgc3ltYm9sU3RhdGljcyk7XG5cblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhdXNlTmF0aXZlLCAnT2JqZWN0Jywge1xuXHQgIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcblx0ICBjcmVhdGU6ICRjcmVhdGUsXG5cdCAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG5cdCAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSxcblx0ICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuXHQgIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuXHQgIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcblx0ICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdCAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcblx0ICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcyxcblx0ICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdH0pO1xuXG5cdC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcblx0Ly8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuXHRzZXRUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcblx0Ly8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpO1xuXG4vKioqLyB9LFxuLyogNjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBlbCl7XG5cdCAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG5cdCAgICAsIGtleXMgICA9ICQuZ2V0S2V5cyhPKVxuXHQgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcblx0dmFyIHRvU3RyaW5nICA9IHt9LnRvU3RyaW5nXG5cdCAgLCB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KVxuXHQgICwgZ2V0TmFtZXMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZ2V0TmFtZXM7XG5cblx0dmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuXHQgID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG5cdHZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIGdldE5hbWVzKGl0KTtcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG5cdCAgfVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzLmdldCA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuXHQgIGlmKHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nKXJldHVybiBnZXRXaW5kb3dOYW1lcyhpdCk7XG5cdCAgcmV0dXJuIGdldE5hbWVzKHRvSU9iamVjdChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGFsbCBlbnVtZXJhYmxlIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBzeW1ib2xzXG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBrZXlzICAgICAgID0gJC5nZXRLZXlzKGl0KVxuXHQgICAgLCBnZXRTeW1ib2xzID0gJC5nZXRTeW1ib2xzO1xuXHQgIGlmKGdldFN5bWJvbHMpe1xuXHQgICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KVxuXHQgICAgICAsIGlzRW51bSAgPSAkLmlzRW51bVxuXHQgICAgICAsIGkgICAgICAgPSAwXG5cdCAgICAgICwga2V5O1xuXHQgICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKWtleXMucHVzaChrZXkpO1xuXHQgIH1cblx0ICByZXR1cm4ga2V5cztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNjQpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA2NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCl7XG5cdCAgcmV0dXJuICQuY3JlYXRlKFAsIEQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg2NiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNjgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlByb21pc2U7XG5cbi8qKiovIH0sXG4vKiA2NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0XG5cbi8qKiovIH0sXG4vKiA2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBMSUJSQVJZICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KVxuXHQgICwgZ2xvYmFsICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBjdHggICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGNsYXNzb2YgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgJGRlZiAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCBpc09iamVjdCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgYUZ1bmN0aW9uICA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpXG5cdCAgLCBzdHJpY3ROZXcgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSlcblx0ICAsIGZvck9mICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc2V0UHJvdG8gICA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpLnNldFxuXHQgICwgc2FtZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpXG5cdCAgLCBzcGVjaWVzICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIFNQRUNJRVMgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnc3BlY2llcycpXG5cdCAgLCBSRUNPUkQgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMikoJ3JlY29yZCcpXG5cdCAgLCBhc2FwICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NClcblx0ICAsIFBST01JU0UgICAgPSAnUHJvbWlzZSdcblx0ICAsIHByb2Nlc3MgICAgPSBnbG9iYWwucHJvY2Vzc1xuXHQgICwgaXNOb2RlICAgICA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXG5cdCAgLCBQICAgICAgICAgID0gZ2xvYmFsW1BST01JU0VdXG5cdCAgLCBXcmFwcGVyO1xuXG5cdHZhciB0ZXN0UmVzb2x2ZSA9IGZ1bmN0aW9uKHN1Yil7XG5cdCAgdmFyIHRlc3QgPSBuZXcgUChmdW5jdGlvbigpe30pO1xuXHQgIGlmKHN1Yil0ZXN0LmNvbnN0cnVjdG9yID0gT2JqZWN0O1xuXHQgIHJldHVybiBQLnJlc29sdmUodGVzdCkgPT09IHRlc3Q7XG5cdH07XG5cblx0dmFyIHVzZU5hdGl2ZSA9IGZ1bmN0aW9uKCl7XG5cdCAgdmFyIHdvcmtzID0gZmFsc2U7XG5cdCAgZnVuY3Rpb24gUDIoeCl7XG5cdCAgICB2YXIgc2VsZiA9IG5ldyBQKHgpO1xuXHQgICAgc2V0UHJvdG8oc2VsZiwgUDIucHJvdG90eXBlKTtcblx0ICAgIHJldHVybiBzZWxmO1xuXHQgIH1cblx0ICB0cnkge1xuXHQgICAgd29ya3MgPSBQICYmIFAucmVzb2x2ZSAmJiB0ZXN0UmVzb2x2ZSgpO1xuXHQgICAgc2V0UHJvdG8oUDIsIFApO1xuXHQgICAgUDIucHJvdG90eXBlID0gJC5jcmVhdGUoUC5wcm90b3R5cGUsIHtjb25zdHJ1Y3Rvcjoge3ZhbHVlOiBQMn19KTtcblx0ICAgIC8vIGFjdHVhbCBGaXJlZm94IGhhcyBicm9rZW4gc3ViY2xhc3Mgc3VwcG9ydCwgdGVzdCB0aGF0XG5cdCAgICBpZighKFAyLnJlc29sdmUoNSkudGhlbihmdW5jdGlvbigpe30pIGluc3RhbmNlb2YgUDIpKXtcblx0ICAgICAgd29ya3MgPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIC8vIGFjdHVhbCBWOCBidWcsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTYyXG5cdCAgICBpZih3b3JrcyAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSl7XG5cdCAgICAgIHZhciB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSBmYWxzZTtcblx0ICAgICAgUC5yZXNvbHZlKCQuc2V0RGVzYyh7fSwgJ3RoZW4nLCB7XG5cdCAgICAgICAgZ2V0OiBmdW5jdGlvbigpeyB0aGVuYWJsZVRoZW5Hb3R0ZW4gPSB0cnVlOyB9XG5cdCAgICAgIH0pKTtcblx0ICAgICAgd29ya3MgPSB0aGVuYWJsZVRoZW5Hb3R0ZW47XG5cdCAgICB9XG5cdCAgfSBjYXRjaChlKXsgd29ya3MgPSBmYWxzZTsgfVxuXHQgIHJldHVybiB3b3Jrcztcblx0fSgpO1xuXG5cdC8vIGhlbHBlcnNcblx0dmFyIGlzUHJvbWlzZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmICh1c2VOYXRpdmUgPyBjbGFzc29mKGl0KSA9PSAnUHJvbWlzZScgOiBSRUNPUkQgaW4gaXQpO1xuXHR9O1xuXHR2YXIgc2FtZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24oYSwgYil7XG5cdCAgLy8gbGlicmFyeSB3cmFwcGVyIHNwZWNpYWwgY2FzZVxuXHQgIGlmKExJQlJBUlkgJiYgYSA9PT0gUCAmJiBiID09PSBXcmFwcGVyKXJldHVybiB0cnVlO1xuXHQgIHJldHVybiBzYW1lKGEsIGIpO1xuXHR9O1xuXHR2YXIgZ2V0Q29uc3RydWN0b3IgPSBmdW5jdGlvbihDKXtcblx0ICB2YXIgUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdO1xuXHQgIHJldHVybiBTICE9IHVuZGVmaW5lZCA/IFMgOiBDO1xuXHR9O1xuXHR2YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgdGhlbjtcblx0ICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG5cdH07XG5cdHZhciBub3RpZnkgPSBmdW5jdGlvbihyZWNvcmQsIGlzUmVqZWN0KXtcblx0ICBpZihyZWNvcmQubilyZXR1cm47XG5cdCAgcmVjb3JkLm4gPSB0cnVlO1xuXHQgIHZhciBjaGFpbiA9IHJlY29yZC5jO1xuXHQgIGFzYXAoZnVuY3Rpb24oKXtcblx0ICAgIHZhciB2YWx1ZSA9IHJlY29yZC52XG5cdCAgICAgICwgb2sgICAgPSByZWNvcmQucyA9PSAxXG5cdCAgICAgICwgaSAgICAgPSAwO1xuXHQgICAgdmFyIHJ1biA9IGZ1bmN0aW9uKHJlYWN0KXtcblx0ICAgICAgdmFyIGNiID0gb2sgPyByZWFjdC5vayA6IHJlYWN0LmZhaWxcblx0ICAgICAgICAsIHJldCwgdGhlbjtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZihjYil7XG5cdCAgICAgICAgICBpZighb2spcmVjb3JkLmggPSB0cnVlO1xuXHQgICAgICAgICAgcmV0ID0gY2IgPT09IHRydWUgPyB2YWx1ZSA6IGNiKHZhbHVlKTtcblx0ICAgICAgICAgIGlmKHJldCA9PT0gcmVhY3QuUCl7XG5cdCAgICAgICAgICAgIHJlYWN0LnJlaihUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYodGhlbiA9IGlzVGhlbmFibGUocmV0KSl7XG5cdCAgICAgICAgICAgIHRoZW4uY2FsbChyZXQsIHJlYWN0LnJlcywgcmVhY3QucmVqKTtcblx0ICAgICAgICAgIH0gZWxzZSByZWFjdC5yZXMocmV0KTtcblx0ICAgICAgICB9IGVsc2UgcmVhY3QucmVqKHZhbHVlKTtcblx0ICAgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAgIHJlYWN0LnJlaihlcnIpO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgICAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSlydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG5cdCAgICBjaGFpbi5sZW5ndGggPSAwO1xuXHQgICAgcmVjb3JkLm4gPSBmYWxzZTtcblx0ICAgIGlmKGlzUmVqZWN0KXNldFRpbWVvdXQoZnVuY3Rpb24oKXtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWNvcmQucFxuXHQgICAgICAgICwgaGFuZGxlciwgY29uc29sZTtcblx0ICAgICAgaWYoaXNVbmhhbmRsZWQocHJvbWlzZSkpe1xuXHQgICAgICAgIGlmKGlzTm9kZSl7XG5cdCAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcblx0ICAgICAgICB9IGVsc2UgaWYoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbil7XG5cdCAgICAgICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlfSk7XG5cdCAgICAgICAgfSBlbHNlIGlmKChjb25zb2xlID0gZ2xvYmFsLmNvbnNvbGUpICYmIGNvbnNvbGUuZXJyb3Ipe1xuXHQgICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSByZWNvcmQuYSA9IHVuZGVmaW5lZDtcblx0ICAgIH0sIDEpO1xuXHQgIH0pO1xuXHR9O1xuXHR2YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbihwcm9taXNlKXtcblx0ICB2YXIgcmVjb3JkID0gcHJvbWlzZVtSRUNPUkRdXG5cdCAgICAsIGNoYWluICA9IHJlY29yZC5hIHx8IHJlY29yZC5jXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwgcmVhY3Q7XG5cdCAgaWYocmVjb3JkLmgpcmV0dXJuIGZhbHNlO1xuXHQgIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpe1xuXHQgICAgcmVhY3QgPSBjaGFpbltpKytdO1xuXHQgICAgaWYocmVhY3QuZmFpbCB8fCAhaXNVbmhhbmRsZWQocmVhY3QuUCkpcmV0dXJuIGZhbHNlO1xuXHQgIH0gcmV0dXJuIHRydWU7XG5cdH07XG5cdHZhciAkcmVqZWN0ID0gZnVuY3Rpb24odmFsdWUpe1xuXHQgIHZhciByZWNvcmQgPSB0aGlzO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICByZWNvcmQudiA9IHZhbHVlO1xuXHQgIHJlY29yZC5zID0gMjtcblx0ICByZWNvcmQuYSA9IHJlY29yZC5jLnNsaWNlKCk7XG5cdCAgbm90aWZ5KHJlY29yZCwgdHJ1ZSk7XG5cdH07XG5cdHZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICB2YXIgcmVjb3JkID0gdGhpc1xuXHQgICAgLCB0aGVuO1xuXHQgIGlmKHJlY29yZC5kKXJldHVybjtcblx0ICByZWNvcmQuZCA9IHRydWU7XG5cdCAgcmVjb3JkID0gcmVjb3JkLnIgfHwgcmVjb3JkOyAvLyB1bndyYXBcblx0ICB0cnkge1xuXHQgICAgaWYodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKXtcblx0ICAgICAgYXNhcChmdW5jdGlvbigpe1xuXHQgICAgICAgIHZhciB3cmFwcGVyID0ge3I6IHJlY29yZCwgZDogZmFsc2V9OyAvLyB3cmFwXG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIHRoZW4uY2FsbCh2YWx1ZSwgY3R4KCRyZXNvbHZlLCB3cmFwcGVyLCAxKSwgY3R4KCRyZWplY3QsIHdyYXBwZXIsIDEpKTtcblx0ICAgICAgICB9IGNhdGNoKGUpe1xuXHQgICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZWNvcmQudiA9IHZhbHVlO1xuXHQgICAgICByZWNvcmQucyA9IDE7XG5cdCAgICAgIG5vdGlmeShyZWNvcmQsIGZhbHNlKTtcblx0ICAgIH1cblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgJHJlamVjdC5jYWxsKHtyOiByZWNvcmQsIGQ6IGZhbHNlfSwgZSk7IC8vIHdyYXBcblx0ICB9XG5cdH07XG5cblx0Ly8gY29uc3RydWN0b3IgcG9seWZpbGxcblx0aWYoIXVzZU5hdGl2ZSl7XG5cdCAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcblx0ICBQID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcil7XG5cdCAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuXHQgICAgdmFyIHJlY29yZCA9IHtcblx0ICAgICAgcDogc3RyaWN0TmV3KHRoaXMsIFAsIFBST01JU0UpLCAgICAgICAgIC8vIDwtIHByb21pc2Vcblx0ICAgICAgYzogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuXHQgICAgICBhOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcblx0ICAgICAgczogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG5cdCAgICAgIGQ6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBkb25lXG5cdCAgICAgIHY6IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuXHQgICAgICBoOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gaGFuZGxlZCByZWplY3Rpb25cblx0ICAgICAgbjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIG5vdGlmeVxuXHQgICAgfTtcblx0ICAgIHRoaXNbUkVDT1JEXSA9IHJlY29yZDtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgcmVjb3JkLCAxKSwgY3R4KCRyZWplY3QsIHJlY29yZCwgMSkpO1xuXHQgICAgfSBjYXRjaChlcnIpe1xuXHQgICAgICAkcmVqZWN0LmNhbGwocmVjb3JkLCBlcnIpO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoUC5wcm90b3R5cGUsIHtcblx0ICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG5cdCAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKXtcblx0ICAgICAgdmFyIFMgPSBhbk9iamVjdChhbk9iamVjdCh0aGlzKS5jb25zdHJ1Y3RvcilbU1BFQ0lFU107XG5cdCAgICAgIHZhciByZWFjdCA9IHtcblx0ICAgICAgICBvazogICB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZSxcblx0ICAgICAgICBmYWlsOiB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICA/IG9uUmVqZWN0ZWQgIDogZmFsc2Vcblx0ICAgICAgfTtcblx0ICAgICAgdmFyIHByb21pc2UgPSByZWFjdC5QID0gbmV3IChTICE9IHVuZGVmaW5lZCA/IFMgOiBQKShmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgICAgcmVhY3QucmVzID0gcmVzO1xuXHQgICAgICAgIHJlYWN0LnJlaiA9IHJlajtcblx0ICAgICAgfSk7XG5cdCAgICAgIGFGdW5jdGlvbihyZWFjdC5yZXMpO1xuXHQgICAgICBhRnVuY3Rpb24ocmVhY3QucmVqKTtcblx0ICAgICAgdmFyIHJlY29yZCA9IHRoaXNbUkVDT1JEXTtcblx0ICAgICAgcmVjb3JkLmMucHVzaChyZWFjdCk7XG5cdCAgICAgIGlmKHJlY29yZC5hKXJlY29yZC5hLnB1c2gocmVhY3QpO1xuXHQgICAgICBpZihyZWNvcmQucylub3RpZnkocmVjb3JkLCBmYWxzZSk7XG5cdCAgICAgIHJldHVybiBwcm9taXNlO1xuXHQgICAgfSxcblx0ICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG5cdCAgICAnY2F0Y2gnOiBmdW5jdGlvbihvblJlamVjdGVkKXtcblx0ICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuXHQgICAgfVxuXHQgIH0pO1xuXHR9XG5cblx0Ly8gZXhwb3J0XG5cdCRkZWYoJGRlZi5HICsgJGRlZi5XICsgJGRlZi5GICogIXVzZU5hdGl2ZSwge1Byb21pc2U6IFB9KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyNSkoUCwgUFJPTUlTRSk7XG5cdHNwZWNpZXMoUCk7XG5cdHNwZWNpZXMoV3JhcHBlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpW1BST01JU0VdKTtcblxuXHQvLyBzdGF0aWNzXG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIXVzZU5hdGl2ZSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG5cdCAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocil7XG5cdCAgICByZXR1cm4gbmV3IHRoaXMoZnVuY3Rpb24ocmVzLCByZWopeyByZWoocik7IH0pO1xuXHQgIH1cblx0fSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogKCF1c2VOYXRpdmUgfHwgdGVzdFJlc29sdmUodHJ1ZSkpLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG5cdCAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KXtcblx0ICAgIHJldHVybiBpc1Byb21pc2UoeCkgJiYgc2FtZUNvbnN0cnVjdG9yKHguY29uc3RydWN0b3IsIHRoaXMpXG5cdCAgICAgID8geCA6IG5ldyB0aGlzKGZ1bmN0aW9uKHJlcyl7IHJlcyh4KTsgfSk7XG5cdCAgfVxuXHR9KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhKHVzZU5hdGl2ZSAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KShmdW5jdGlvbihpdGVyKXtcblx0ICBQLmFsbChpdGVyKVsnY2F0Y2gnXShmdW5jdGlvbigpe30pO1xuXHR9KSksIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcblx0ICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSl7XG5cdCAgICB2YXIgQyAgICAgID0gZ2V0Q29uc3RydWN0b3IodGhpcylcblx0ICAgICAgLCB2YWx1ZXMgPSBbXTtcblx0ICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgdmFsdWVzLnB1c2gsIHZhbHVlcyk7XG5cdCAgICAgIHZhciByZW1haW5pbmcgPSB2YWx1ZXMubGVuZ3RoXG5cdCAgICAgICAgLCByZXN1bHRzICAgPSBBcnJheShyZW1haW5pbmcpO1xuXHQgICAgICBpZihyZW1haW5pbmcpJC5lYWNoLmNhbGwodmFsdWVzLCBmdW5jdGlvbihwcm9taXNlLCBpbmRleCl7XG5cdCAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24odmFsdWUpe1xuXHQgICAgICAgICAgcmVzdWx0c1tpbmRleF0gPSB2YWx1ZTtcblx0ICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlcyhyZXN1bHRzKTtcblx0ICAgICAgICB9LCByZWopO1xuXHQgICAgICB9KTtcblx0ICAgICAgZWxzZSByZXMocmVzdWx0cyk7XG5cdCAgICB9KTtcblx0ICB9LFxuXHQgIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcblx0ICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKXtcblx0ICAgIHZhciBDID0gZ2V0Q29uc3RydWN0b3IodGhpcyk7XG5cdCAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uKHByb21pc2Upe1xuXHQgICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKHJlcywgcmVqKTtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICB9XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogNjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIENvbnN0cnVjdG9yLCBuYW1lKXtcblx0ICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXRocm93IFR5cGVFcnJvcihuYW1lICsgXCI6IHVzZSB0aGUgJ25ldycgb3BlcmF0b3IhXCIpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY3R4ICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgY2FsbCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKVxuXHQgICwgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKVxuXHQgICwgYW5PYmplY3QgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgdG9MZW5ndGggICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KVxuXHQgICwgZ2V0SXRlckZuICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQpe1xuXHQgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oaXRlcmFibGUpXG5cdCAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuXHQgICAgLCBpbmRleCAgPSAwXG5cdCAgICAsIGxlbmd0aCwgc3RlcCwgaXRlcmF0b3I7XG5cdCAgaWYodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuXHQgIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuXHQgIGlmKGlzQXJyYXlJdGVyKGl0ZXJGbikpZm9yKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcblx0ICAgIGVudHJpZXMgPyBmKGFuT2JqZWN0KHN0ZXAgPSBpdGVyYWJsZVtpbmRleF0pWzBdLCBzdGVwWzFdKSA6IGYoaXRlcmFibGVbaW5kZXhdKTtcblx0ICB9IGVsc2UgZm9yKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7ICl7XG5cdCAgICBjYWxsKGl0ZXJhdG9yLCBmLCBzdGVwLnZhbHVlLCBlbnRyaWVzKTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cdHZhciBnZXREZXNjICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldERlc2Ncblx0ICAsIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSk7XG5cdHZhciBjaGVjayA9IGZ1bmN0aW9uKE8sIHByb3RvKXtcblx0ICBhbk9iamVjdChPKTtcblx0ICBpZighaXNPYmplY3QocHJvdG8pICYmIHByb3RvICE9PSBudWxsKXRocm93IFR5cGVFcnJvcihwcm90byArIFwiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKTtcblx0fTtcblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgc2V0OiBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXHQgICAgZnVuY3Rpb24odGVzdCwgYnVnZ3ksIHNldCl7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNykoRnVuY3Rpb24uY2FsbCwgZ2V0RGVzYyhPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcblx0ICAgICAgICBzZXQodGVzdCwgW10pO1xuXHQgICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpO1xuXHQgICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cblx0ICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKXtcblx0ICAgICAgICBjaGVjayhPLCBwcm90byk7XG5cdCAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcblx0ICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG5cdCAgICAgICAgcmV0dXJuIE87XG5cdCAgICAgIH07XG5cdCAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuXHQgIGNoZWNrOiBjaGVja1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmlzIHx8IGZ1bmN0aW9uIGlzKHgsIHkpe1xuXHQgIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgU1BFQ0lFUyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdzcGVjaWVzJyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQyl7XG5cdCAgaWYoX193ZWJwYWNrX3JlcXVpcmVfXygxNykgJiYgIShTUEVDSUVTIGluIEMpKSQuc2V0RGVzYyhDLCBTUEVDSUVTLCB7XG5cdCAgICBjb25maWd1cmFibGU6IHRydWUsXG5cdCAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9XG5cdCAgfSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXHJcblx0ICAsIG1hY3JvdGFzayA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpLnNldFxyXG5cdCAgLCBPYnNlcnZlciAgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlclxyXG5cdCAgLCBwcm9jZXNzICAgPSBnbG9iYWwucHJvY2Vzc1xyXG5cdCAgLCBpc05vZGUgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2VzcydcclxuXHQgICwgaGVhZCwgbGFzdCwgbm90aWZ5O1xyXG5cclxuXHR2YXIgZmx1c2ggPSBmdW5jdGlvbigpe1xyXG5cdCAgdmFyIHBhcmVudCwgZG9tYWluO1xyXG5cdCAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpe1xyXG5cdCAgICBwcm9jZXNzLmRvbWFpbiA9IG51bGw7XHJcblx0ICAgIHBhcmVudC5leGl0KCk7XHJcblx0ICB9XHJcblx0ICB3aGlsZShoZWFkKXtcclxuXHQgICAgZG9tYWluID0gaGVhZC5kb21haW47XHJcblx0ICAgIGlmKGRvbWFpbilkb21haW4uZW50ZXIoKTtcclxuXHQgICAgaGVhZC5mbi5jYWxsKCk7IC8vIDwtIGN1cnJlbnRseSB3ZSB1c2UgaXQgb25seSBmb3IgUHJvbWlzZSAtIHRyeSAvIGNhdGNoIG5vdCByZXF1aXJlZFxyXG5cdCAgICBpZihkb21haW4pZG9tYWluLmV4aXQoKTtcclxuXHQgICAgaGVhZCA9IGhlYWQubmV4dDtcclxuXHQgIH0gbGFzdCA9IHVuZGVmaW5lZDtcclxuXHQgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcclxuXHR9XHJcblxyXG5cdC8vIE5vZGUuanNcclxuXHRpZihpc05vZGUpe1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XHJcblx0ICB9O1xyXG5cdC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxyXG5cdH0gZWxzZSBpZihPYnNlcnZlcil7XHJcblx0ICB2YXIgdG9nZ2xlID0gMVxyXG5cdCAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcclxuXHQgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gLXRvZ2dsZTtcclxuXHQgIH07XHJcblx0Ly8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcclxuXHQvLyAtIHNldEltbWVkaWF0ZVxyXG5cdC8vIC0gTWVzc2FnZUNoYW5uZWxcclxuXHQvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXHJcblx0Ly8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcclxuXHQvLyAtIHNldFRpbWVvdXRcclxuXHR9IGVsc2Uge1xyXG5cdCAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcclxuXHQgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxyXG5cdCAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcclxuXHQgIH07XHJcblx0fVxyXG5cclxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGFzYXAoZm4pe1xyXG5cdCAgdmFyIHRhc2sgPSB7Zm46IGZuLCBuZXh0OiB1bmRlZmluZWQsIGRvbWFpbjogaXNOb2RlICYmIHByb2Nlc3MuZG9tYWlufTtcclxuXHQgIGlmKGxhc3QpbGFzdC5uZXh0ID0gdGFzaztcclxuXHQgIGlmKCFoZWFkKXtcclxuXHQgICAgaGVhZCA9IHRhc2s7XHJcblx0ICAgIG5vdGlmeSgpO1xyXG5cdCAgfSBsYXN0ID0gdGFzaztcclxuXHR9O1xuXG4vKioqLyB9LFxuLyogNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGN0eCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBpbnZva2UgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KVxuXHQgICwgaHRtbCAgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nylcblx0ICAsIGNlbCAgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpXG5cdCAgLCBnbG9iYWwgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgcHJvY2VzcyAgICAgICAgICAgID0gZ2xvYmFsLnByb2Nlc3Ncblx0ICAsIHNldFRhc2sgICAgICAgICAgICA9IGdsb2JhbC5zZXRJbW1lZGlhdGVcblx0ICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuXHQgICwgTWVzc2FnZUNoYW5uZWwgICAgID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsXG5cdCAgLCBjb3VudGVyICAgICAgICAgICAgPSAwXG5cdCAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuXHQgICwgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSdcblx0ICAsIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXHR2YXIgcnVuID0gZnVuY3Rpb24oKXtcblx0ICB2YXIgaWQgPSArdGhpcztcblx0ICBpZihxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpe1xuXHQgICAgdmFyIGZuID0gcXVldWVbaWRdO1xuXHQgICAgZGVsZXRlIHF1ZXVlW2lkXTtcblx0ICAgIGZuKCk7XG5cdCAgfVxuXHR9O1xuXHR2YXIgbGlzdG5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcblx0ICBydW4uY2FsbChldmVudC5kYXRhKTtcblx0fTtcblx0Ly8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuXHRpZighc2V0VGFzayB8fCAhY2xlYXJUYXNrKXtcblx0ICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKXtcblx0ICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuXHQgICAgd2hpbGUoYXJndW1lbnRzLmxlbmd0aCA+IGkpYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcblx0ICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbigpe1xuXHQgICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG5cdCAgICB9O1xuXHQgICAgZGVmZXIoY291bnRlcik7XG5cdCAgICByZXR1cm4gY291bnRlcjtcblx0ICB9O1xuXHQgIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKXtcblx0ICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG5cdCAgfTtcblx0ICAvLyBOb2RlLmpzIDAuOC1cblx0ICBpZihfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcblx0ICAgIH07XG5cdCAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuXHQgIH0gZWxzZSBpZihNZXNzYWdlQ2hhbm5lbCl7XG5cdCAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuXHQgICAgcG9ydCAgICA9IGNoYW5uZWwucG9ydDI7XG5cdCAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RuZXI7XG5cdCAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcblx0ICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcblx0ICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuXHQgIH0gZWxzZSBpZihnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdCl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG5cdCAgICB9O1xuXHQgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0bmVyLCBmYWxzZSk7XG5cdCAgLy8gSUU4LVxuXHQgIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24oKXtcblx0ICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuXHQgICAgICAgIHJ1bi5jYWxsKGlkKTtcblx0ICAgICAgfTtcblx0ICAgIH07XG5cdCAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcblx0ICB9IGVsc2Uge1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIHNldDogICBzZXRUYXNrLFxuXHQgIGNsZWFyOiBjbGVhclRhc2tcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgYXJncywgdGhhdCl7XG5cdCAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuXHQgIHN3aXRjaChhcmdzLmxlbmd0aCl7XG5cdCAgICBjYXNlIDA6IHJldHVybiB1biA/IGZuKClcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcblx0ICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdKTtcblx0ICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcblx0ICAgIGNhc2UgMzogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcblx0ICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcblx0ICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcblx0ICB9IHJldHVybiAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5kb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbi8qKiovIH0sXG4vKiA3OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuZG9jdW1lbnRcblx0ICAvLyBpbiBvbGQgSUUgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCdcblx0ICAsIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkcmVkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih0YXJnZXQsIHNyYyl7XG5cdCAgZm9yKHZhciBrZXkgaW4gc3JjKSRyZWRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuXHQgIHJldHVybiB0YXJnZXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogODEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLk9iamVjdC5rZXlzO1xuXG4vKioqLyB9LFxuLyogODIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxuXHR2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKSgna2V5cycsIGZ1bmN0aW9uKCRrZXlzKXtcblx0ICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCl7XG5cdCAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcblx0ICB9O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDgzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVksIGV4ZWMpe1xuXHQgIHZhciAkZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAgICwgZm4gICA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV1cblx0ICAgICwgZXhwICA9IHt9O1xuXHQgIGV4cFtLRVldID0gZXhlYyhmbik7XG5cdCAgJGRlZigkZGVmLlMgKyAkZGVmLkYgKiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KShmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4NSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDg1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY3KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5TZXQ7XG5cbi8qKiovIH0sXG4vKiA4NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgc3Ryb25nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Nyk7XG5cblx0Ly8gMjMuMiBTZXQgT2JqZWN0c1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KSgnU2V0JywgZnVuY3Rpb24oZ2V0KXtcblx0ICByZXR1cm4gZnVuY3Rpb24gU2V0KCl7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzWzBdKTsgfTtcblx0fSwge1xuXHQgIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuXHQgIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKXtcblx0ICAgIHJldHVybiBzdHJvbmcuZGVmKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcblx0ICB9XG5cdH0sIHN0cm9uZyk7XG5cbi8qKiovIH0sXG4vKiA4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGhpZGUgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBjdHggICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgc3BlY2llcyAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mylcblx0ICAsIHN0cmljdE5ldyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpXG5cdCAgLCBkZWZpbmVkICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpXG5cdCAgLCBmb3JPZiAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc3RlcCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSlcblx0ICAsIElEICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpKCdpZCcpXG5cdCAgLCAkaGFzICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgaXNPYmplY3QgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgaXNPYmplY3Rcblx0ICAsIFNVUFBPUlRfREVTQyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG5cdCAgLCBTSVpFICAgICAgICAgPSBTVVBQT1JUX0RFU0MgPyAnX3MnIDogJ3NpemUnXG5cdCAgLCBpZCAgICAgICAgICAgPSAwO1xuXG5cdHZhciBmYXN0S2V5ID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG5cdCAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuXHQgIGlmKCFpc09iamVjdChpdCkpcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcblx0ICBpZighJGhhcyhpdCwgSUQpKXtcblx0ICAgIC8vIGNhbid0IHNldCBpZCB0byBmcm96ZW4gb2JqZWN0XG5cdCAgICBpZighaXNFeHRlbnNpYmxlKGl0KSlyZXR1cm4gJ0YnO1xuXHQgICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgaWRcblx0ICAgIGlmKCFjcmVhdGUpcmV0dXJuICdFJztcblx0ICAgIC8vIGFkZCBtaXNzaW5nIG9iamVjdCBpZFxuXHQgICAgaGlkZShpdCwgSUQsICsraWQpO1xuXHQgIC8vIHJldHVybiBvYmplY3QgaWQgd2l0aCBwcmVmaXhcblx0ICB9IHJldHVybiAnTycgKyBpdFtJRF07XG5cdH07XG5cblx0dmFyIGdldEVudHJ5ID0gZnVuY3Rpb24odGhhdCwga2V5KXtcblx0ICAvLyBmYXN0IGNhc2Vcblx0ICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSksIGVudHJ5O1xuXHQgIGlmKGluZGV4ICE9PSAnRicpcmV0dXJuIHRoYXQuX2lbaW5kZXhdO1xuXHQgIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuXHQgIGZvcihlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuXHQgICAgaWYoZW50cnkuayA9PSBrZXkpcmV0dXJuIGVudHJ5O1xuXHQgIH1cblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24od3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUil7XG5cdCAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGhhdCwgQywgTkFNRSk7XG5cdCAgICAgIHRoYXQuX2kgPSAkLmNyZWF0ZShudWxsKTsgLy8gaW5kZXhcblx0ICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgICAvLyBmaXJzdCBlbnRyeVxuXHQgICAgICB0aGF0Ll9sID0gdW5kZWZpbmVkOyAgICAgIC8vIGxhc3QgZW50cnlcblx0ICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgICAvLyBzaXplXG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG5cdCAgICB9KTtcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKEMucHJvdG90eXBlLCB7XG5cdCAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuXHQgICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcblx0ICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCl7XG5cdCAgICAgICAgZm9yKHZhciB0aGF0ID0gdGhpcywgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG5cdCAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcblx0ICAgICAgICAgIGlmKGVudHJ5LnApZW50cnkucCA9IGVudHJ5LnAubiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB0aGF0Ll9mID0gdGhhdC5fbCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB0aGF0W1NJWkVdID0gMDtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjMgTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcblx0ICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uKGtleSl7XG5cdCAgICAgICAgdmFyIHRoYXQgID0gdGhpc1xuXHQgICAgICAgICAgLCBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG5cdCAgICAgICAgaWYoZW50cnkpe1xuXHQgICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uXG5cdCAgICAgICAgICAgICwgcHJldiA9IGVudHJ5LnA7XG5cdCAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcblx0ICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuXHQgICAgICAgICAgaWYocHJldilwcmV2Lm4gPSBuZXh0O1xuXHQgICAgICAgICAgaWYobmV4dCluZXh0LnAgPSBwcmV2O1xuXHQgICAgICAgICAgaWYodGhhdC5fZiA9PSBlbnRyeSl0aGF0Ll9mID0gbmV4dDtcblx0ICAgICAgICAgIGlmKHRoYXQuX2wgPT0gZW50cnkpdGhhdC5fbCA9IHByZXY7XG5cdCAgICAgICAgICB0aGF0W1NJWkVdLS07XG5cdCAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG5cdCAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuXHQgICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSwgMylcblx0ICAgICAgICAgICwgZW50cnk7XG5cdCAgICAgICAgd2hpbGUoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcblx0ICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG5cdCAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcblx0ICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcblx0ICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmKFNVUFBPUlRfREVTQykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIEM7XG5cdCAgfSxcblx0ICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuXHQgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuXHQgICAgICAsIHByZXYsIGluZGV4O1xuXHQgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG5cdCAgICBpZihlbnRyeSl7XG5cdCAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcblx0ICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcblx0ICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcblx0ICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG5cdCAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG5cdCAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcblx0ICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuXHQgICAgICB9O1xuXHQgICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG5cdCAgICAgIGlmKHByZXYpcHJldi5uID0gZW50cnk7XG5cdCAgICAgIHRoYXRbU0laRV0rKztcblx0ICAgICAgLy8gYWRkIHRvIGluZGV4XG5cdCAgICAgIGlmKGluZGV4ICE9PSAnRicpdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcblx0ICAgIH0gcmV0dXJuIHRoYXQ7XG5cdCAgfSxcblx0ICBnZXRFbnRyeTogZ2V0RW50cnksXG5cdCAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuXHQgICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG5cdCAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICAgICAgdGhpcy5fdCA9IGl0ZXJhdGVkOyAgLy8gdGFyZ2V0XG5cdCAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcblx0ICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcblx0ICAgIH0sIGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuXHQgICAgICAgICwgZW50cnkgPSB0aGF0Ll9sO1xuXHQgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG5cdCAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuXHQgICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG5cdCAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICByZXR1cm4gc3RlcCgxKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG5cdCAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG5cdCAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG5cdCAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG5cdCAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG5cdCAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuXHQgICAgc3BlY2llcyhDKTtcblx0ICAgIHNwZWNpZXMoX193ZWJwYWNrX3JlcXVpcmVfXygxMilbTkFNRV0pOyAvLyBmb3Igd3JhcHBlclxuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaGlkZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcblx0ICB2YXIgQmFzZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVtOQU1FXVxuXHQgICAgLCBDICAgICA9IEJhc2Vcblx0ICAgICwgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnXG5cdCAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuXHQgICAgLCBPICAgICA9IHt9O1xuXHQgIGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSB8fCB0eXBlb2YgQyAhPSAnZnVuY3Rpb24nXG5cdCAgICB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOyB9KSlcblx0ICApe1xuXHQgICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3Jcblx0ICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGFyZ2V0LCBDLCBOQU1FKTtcblx0ICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0YXJnZXRbQURERVJdLCB0YXJnZXQpO1xuXHQgICAgfSk7XG5cdCAgICAkLmVhY2guY2FsbCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMnLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcblx0ICAgICAgdmFyIGNoYWluID0gS0VZID09ICdhZGQnIHx8IEtFWSA9PSAnc2V0Jztcblx0ICAgICAgaWYoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpaGlkZShDLnByb3RvdHlwZSwgS0VZLCBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG5cdCAgICAgICAgcmV0dXJuIGNoYWluID8gdGhpcyA6IHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICAgIGlmKCdzaXplJyBpbiBwcm90bykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2Muc2l6ZTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQywgTkFNRSk7XG5cblx0ICBPW05BTUVdID0gQztcblx0ICAkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiwgTyk7XG5cblx0ICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cblx0ICByZXR1cm4gQztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciAkZGVmICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cdCRkZWYoJGRlZi5QLCAnU2V0Jywge3RvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXyg5MCkoJ1NldCcpfSk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgZm9yT2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgICAgaWYoY2xhc3NvZih0aGlzKSAhPSBOQU1FKXRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG5cdCAgICB2YXIgYXJyID0gW107XG5cdCAgICBmb3JPZih0aGlzLCBmYWxzZSwgYXJyLnB1c2gsIGFycik7XG5cdCAgICByZXR1cm4gYXJyO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjsiLCJtb2R1bGUuZXhwb3J0cyA9IERHOyIsIm1vZHVsZS5leHBvcnRzID0gZ3JvazsiLCJtb2R1bGUuZXhwb3J0cyA9IHJ4anM7IiwibW9kdWxlLmV4cG9ydHMgPSB1aTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjXG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcInBhY2thZ2VcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0IHsgVmRSZWdpb25zVmlld2VyIH0gZnJvbSAnLi92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7IHJ1bkthbGlnbiB9IGZyb20gJy4vdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50JztcbmltcG9ydCB7IFNlcXVlbmNlQWxpZ25tZW50IH0gZnJvbSAnLi9zZXFfYWxpZ24nO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuL3V0aWxzL2NvbnZlcnQnO1xuaW1wb3J0IHsgZ2V0RW1iZWRkaW5nQ29sc05hbWVzLCBzZXF1ZW5jZVNwYWNlIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1zcGFjZSc7XG5pbXBvcnQgeyBnZXRBY3Rpdml0eUNsaWZmcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2UtYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IGdldE1vbGZpbGVzRnJvbVNlcSwgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSB9IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWFjcm9Nb2wgfSBmcm9tICcuL3V0aWxzL2F0b21pYy13b3Jrcyc7XG5pbXBvcnQgeyBNYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXIgfSBmcm9tICcuL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuLy90YWdzOiBpbml0XG5leHBvcnQgZnVuY3Rpb24gaW5pdEJpbygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBhcHBhcmVudGx5IEhFTE1XZWJFZGl0b3IgcmVxdWlyZXMgZG9qbyB0byBiZSBpbml0aWFsaXplZCBmaXJzdFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7IHJlc29sdmUobnVsbCk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vbmFtZTogbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBNYWNyb21vbGVjdWxlXG4vL291dHB1dDogZ3JpZF9jZWxsX3JlbmRlcmVyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIG1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gbmV3IE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpO1xufVxuLy9uYW1lOiBzZXF1ZW5jZUFsaWdubWVudFxuLy9pbnB1dDogc3RyaW5nIGFsaWduVHlwZSB7Y2hvaWNlczogWydMb2NhbCBhbGlnbm1lbnQnLCAnR2xvYmFsIGFsaWdubWVudCddfVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUFsaWdubWVudChhbGlnblR5cGUsIGFsaWduVGFibGUsIGdhcCwgc2VxMSwgc2VxMikge1xuICAgIGNvbnN0IHRvQWxpZ24gPSBuZXcgU2VxdWVuY2VBbGlnbm1lbnQoc2VxMSwgc2VxMiwgZ2FwLCBhbGlnblRhYmxlKTtcbiAgICBjb25zdCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4vL25hbWU6IFZkUmVnaW9uc1xuLy9kZXNjcmlwdGlvbjogVi1Eb21haW4gcmVnaW9ucyB2aWV3ZXJcbi8vdGFnczogdmlld2VyLCBwYW5lbFxuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiB2ZFJlZ2lvblZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFZkUmVnaW9uc1ZpZXdlcigpO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzLi4uXG4vL25hbWU6IFNlcXVlbmNlIEFjdGl2aXR5IENsaWZmc1xuLy9kZXNjcmlwdGlvbjogZGV0ZWN0IGFjdGl2aXR5IGNsaWZmc1xuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9pbnB1dDogY29sdW1uIGFjdGl2aXRpZXNcbi8vaW5wdXQ6IGRvdWJsZSBzaW1pbGFyaXR5ID0gODAgW1NpbWlsYXJpdHkgY3V0b2ZmXVxuLy9pbnB1dDogc3RyaW5nIG1ldGhvZE5hbWUgeyBjaG9pY2VzOltcIlVNQVBcIiwgXCJ0LVNORVwiLCBcIlNQRVwiXSB9XG5leHBvcnQgZnVuY3Rpb24gYWN0aXZpdHlDbGlmZnMoZGYsIHNlcXVlbmNlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgYXhlc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICdTUEUnOiB7IGN5Y2xlczogMjAwMCwgbGFtYmRhOiAxLjAsIGRsYW1iZGE6IDAuMDAwNSB9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bml0cyA9IHNlcXVlbmNlLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIHlpZWxkIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBzZXF1ZW5jZSwgYXhlc05hbWVzLCAnQWN0aXZpdHkgY2xpZmZzJywgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgJ0xldmVuc2h0ZWluJywgbWV0aG9kTmFtZSwgREcuU0VNVFlQRS5NQUNST01PTEVDVUxFLCB1bml0cywgc2VxdWVuY2VTcGFjZSwgc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMsIGRyYXdUb29sdGlwLCBvcHRpb25zW21ldGhvZE5hbWVdKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IFNlcXVlbmNlIFNwYWNlLi4uXG4vL25hbWU6IFNlcXVlbmNlIFNwYWNlXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbiBtYWNyb01vbGVjdWxlIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbi8vaW5wdXQ6IHN0cmluZyBzaW1pbGFyaXR5TWV0cmljIHsgY2hvaWNlczpbXCJMZXZlbnNodGVpblwiLCBcIlRhbmltb3RvXCJdIH1cbi8vaW5wdXQ6IGJvb2wgcGxvdEVtYmVkZGluZ3MgPSB0cnVlXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VTcGFjZVRvcE1lbnUodGFibGUsIG1hY3JvTW9sZWN1bGUsIG1ldGhvZE5hbWUsIHNpbWlsYXJpdHlNZXRyaWMgPSAnTGV2ZW5zaHRlaW4nLCBwbG90RW1iZWRkaW5ncykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGVtYmVkQ29sc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKHRhYmxlKTtcbiAgICAgICAgY29uc3QgY2hlbVNwYWNlUGFyYW1zID0ge1xuICAgICAgICAgICAgc2VxQ29sOiBtYWNyb01vbGVjdWxlLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogZW1iZWRDb2xzTmFtZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VTcGFjZVJlcyA9IHlpZWxkIHNlcXVlbmNlU3BhY2UoY2hlbVNwYWNlUGFyYW1zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHNlcXVlbmNlU3BhY2VSZXMuY29vcmRpbmF0ZXM7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGVtYmVkZGluZ3MpXG4gICAgICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBpZiAocGxvdEVtYmVkZGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBncm9rLnNoZWxsLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYubmFtZSA9PT0gdGFibGUubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgdi5zY2F0dGVyUGxvdCh7IHg6IGVtYmVkQ29sc05hbWVzWzBdLCB5OiBlbWJlZENvbHNOYW1lc1sxXSwgdGl0bGU6ICdTZXF1ZW5jZSBzcGFjZScgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbjtcbi8vdG9wLW1lbnU6IEJpbyB8IFRvIEF0b21pYyBMZXZlbC4uLlxuLy9uYW1lOiBUbyBBdG9taWMgTGV2ZWxcbi8vZGVzY3JpcHRpb246IHJldHVybnMgbW9sZmlsZXMgZm9yIGVhY2ggbW9ub21lciBmcm9tIEhFTE0gbGlicmFyeVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIHRvQXRvbWljTGV2ZWwoZGYsIHNlcXVlbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJGaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dChIRUxNX0NPUkVfTElCX0ZJTEVOQU1FKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJPYmplY3QgPSBKU09OLnBhcnNlKG1vbm9tZXJzTGliRmlsZSk7XG4gICAgICAgIGNvbnN0IGF0b21pY0NvZGVzID0gZ2V0TW9sZmlsZXNGcm9tU2VxKHNlcXVlbmNlLCBtb25vbWVyc0xpYk9iamVjdCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkIGdldE1hY3JvTW9sKGF0b21pY0NvZGVzKTtcbiAgICAgICAgY29uc3QgY29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdyZWdlbmVyYXRlZCcsIHJlc3VsdCk7XG4gICAgICAgIGNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NT0xFQ1VMRTtcbiAgICAgICAgY29sLnRhZ3NbREcuVEFHUy5VTklUU10gPSAnbW9sYmxvY2snO1xuICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgTVNBLi4uXG4vL25hbWU6IE1TQVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2UgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbGVTZXF1ZW5jZUFsaWdubWVudEFueSh0YWJsZSwgY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbXNhQ29sID0geWllbGQgcnVuS2FsaWduKGNvbCwgZmFsc2UpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChtc2FDb2wpO1xuICAgICAgICAvLyBUaGlzIGNhbGwgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIGNlbGwgcmVuZGVyZXIgYWN0aXZhdGlvblxuICAgICAgICB5aWVsZCBncm9rLmRhdGEuZGV0ZWN0U2VtYW50aWNUeXBlcyh0YWJsZSk7XG4gICAgICAgIC8vIGNvbnN0IHR2OiBERy5UYWJsZVZpZXcgPSBncm9rLnNoZWxsLnR2O1xuICAgICAgICAvLyB0di5ncmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgcmV0dXJuIG1zYUNvbDtcbiAgICB9KTtcbn1cbi8vbmFtZTogQ29tcG9zaXRpb24gQW5hbHlzaXNcbi8vdG9wLW1lbnU6IEJpbyB8IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2l0aW9uQW5hbHlzaXMoKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgLy8gSGlnaGVyIHByaW9yaXR5IGZvciBjb2x1bW5zIHdpdGggTVNBIGRhdGEgdG8gc2hvdyB3aXRoIFdlYkxvZ28uXG4gICAgICAgIGNvbnN0IHR2ID0gZ3Jvay5zaGVsbC50djtcbiAgICAgICAgY29uc3QgZGYgPSB0di5kYXRhRnJhbWU7XG4gICAgICAgIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgICAgICAgbGV0IGNvbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgcmV0dXJuIHVuaXRzID8gdW5pdHMuaW5kZXhPZignTVNBJykgIT09IC0xIDogZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWNvbClcbiAgICAgICAgICAgIGNvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgICAgICBpZiAoIWNvbCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcignQ3VycmVudCB0YWJsZSBkb2VzIG5vdCBjb250YWluIHNlcXVlbmNlcycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHR2LmFkZFZpZXdlcignV2ViTG9nbycsIHsgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2wubmFtZSB9KTtcbiAgICB9KTtcbn1cbi8vIGhlbHBlciBmdW5jdGlvbiBmb3IgaW1wb3J0RmFzdGFcbmZ1bmN0aW9uIHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKSB7XG4gICAgY29uc3Qgc2VxID0gZmlsZUNvbnRlbnQuc2xpY2Uoc3RhcnRPZlNlcXVlbmNlLCBlbmRPZlNlcXVlbmNlKTtcbiAgICBjb25zdCBzZXFBcnJheSA9IHNlcS5zcGxpdCgvXFxzLyk7XG4gICAgcmV0dXJuIHNlcUFycmF5LmpvaW4oJycpO1xufVxuLy9uYW1lOiBpbXBvcnRGYXN0YVxuLy9kZXNjcmlwdGlvbjogT3BlbnMgRkFTVEEgZmlsZVxuLy90YWdzOiBmaWxlLWhhbmRsZXJcbi8vbWV0YS5leHQ6IGZhc3RhLCBmbmEsIGZmbiwgZmFhLCBmcm4sIGZhXG4vL2lucHV0OiBzdHJpbmcgZmlsZUNvbnRlbnRcbi8vb3V0cHV0OiBsaXN0IHRhYmxlc1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEZhc3RhKGZpbGVDb250ZW50KSB7XG4gICAgY29uc3QgcmVnZXggPSAvXj4oLiopJC9nbTsgLy8gbWF0Y2ggbGluZXMgc3RhcnRpbmcgd2l0aCA+XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXkgPSBbXTtcbiAgICBjb25zdCBzZXF1ZW5jZXNBcnJheSA9IFtdO1xuICAgIGxldCBzdGFydE9mU2VxdWVuY2UgPSAwO1xuICAgIGxldCBtYXRjaDsgLy8gbWF0Y2guaW5kZXggaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0Y2hlZCBsaW5lXG4gICAgd2hpbGUgKG1hdGNoID0gcmVnZXguZXhlYyhmaWxlQ29udGVudCkpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBmaWxlQ29udGVudC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyAxLCByZWdleC5sYXN0SW5kZXgpO1xuICAgICAgICBkZXNjcmlwdGlvbnNBcnJheS5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKHN0YXJ0T2ZTZXF1ZW5jZSAhPT0gMClcbiAgICAgICAgICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIHN0YXJ0T2ZTZXF1ZW5jZSA9IHJlZ2V4Lmxhc3RJbmRleCArIDE7XG4gICAgfVxuICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIC0xKSk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXlDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2Rlc2NyaXB0aW9uJywgZGVzY3JpcHRpb25zQXJyYXkpO1xuICAgIGNvbnN0IHNlcXVlbmNlQ29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdzZXF1ZW5jZScsIHNlcXVlbmNlc0FycmF5KTtcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gJ01hY3JvbW9sZWN1bGUnO1xuICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXF1ZW5jZUNvbCwgNSwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgIGNvbnN0IHNlcVR5cGUgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICBbJ05UJywgbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpXSxcbiAgICAgICAgWydQVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpXSxcbiAgICBdO1xuICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlcy5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICBjb25zdCB1bml0cyA9IGBmYXN0YToke3NlcVR5cGV9OiR7YWxwaGFiZXR9YDtcbiAgICBzZXF1ZW5jZUNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdW5pdHMpO1xuICAgIHJldHVybiBbREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uc0FycmF5Q29sLFxuICAgICAgICAgICAgc2VxdWVuY2VDb2wsXG4gICAgICAgIF0pXTtcbn1cbi8vbmFtZTogQmlvIHwgQ29udmVydFxuLy9mcmllbmRseS1uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL3RhZ3M6IHBhbmVsLCBiaW9cbi8vaW5wdXQ6IGNvbHVtbiBjb2wge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhbmVsKGNvbCkge1xuICAgIGNvbnZlcnQoY29sKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
|