@datagrok/bio 1.7.7 → 1.7.8

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/dist/package.js CHANGED
@@ -4644,7 +4644,9 @@ __webpack_require__.r(__webpack_exports__);
4644
4644
  /* harmony import */ var datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__);
4645
4645
  /* harmony import */ var datagrok_api_grok__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! datagrok-api/grok */ "datagrok-api/grok");
4646
4646
  /* harmony import */ var datagrok_api_grok__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(datagrok_api_grok__WEBPACK_IMPORTED_MODULE_1__);
4647
- /* harmony import */ var _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @datagrok-libraries/bio/src/utils/notation-converter */ "./node_modules/@datagrok-libraries/bio/src/utils/notation-converter.js");
4647
+ /* harmony import */ var cash_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cash-dom */ "cash-dom");
4648
+ /* harmony import */ var cash_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cash_dom__WEBPACK_IMPORTED_MODULE_2__);
4649
+ /* harmony import */ var _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @datagrok-libraries/bio/src/utils/notation-converter */ "./node_modules/@datagrok-libraries/bio/src/utils/notation-converter.js");
4648
4650
  var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4649
4651
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4650
4652
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -4657,6 +4659,7 @@ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _argume
4657
4659
 
4658
4660
 
4659
4661
 
4662
+
4660
4663
  let convertDialog = null;
4661
4664
  let convertDialogSubs = [];
4662
4665
  /**
@@ -4665,7 +4668,7 @@ let convertDialogSubs = [];
4665
4668
  * @param {DG.column} col Column with 'Macromolecule' semantic type
4666
4669
  */
4667
4670
  function convert(col) {
4668
- const converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_2__.NotationConverter(col);
4671
+ const converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_3__.NotationConverter(col);
4669
4672
  const current = converter.sourceNotation;
4670
4673
  //TODO: read all notations
4671
4674
  const notations = [
@@ -4676,13 +4679,23 @@ function convert(col) {
4676
4679
  const separatorArray = ['-', '.', '/'];
4677
4680
  const filteredNotations = notations.filter((e) => e !== current);
4678
4681
  const targetNotationInput = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.choiceInput('Convert to', filteredNotations[0], filteredNotations);
4679
- const separatorInput = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.choiceInput('Choose separator', separatorArray[0], separatorArray);
4682
+ const separatorInput = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.choiceInput('Separator', separatorArray[0], separatorArray);
4683
+ // hide the separator input for non-SEPARATOR target notations
4684
+ if (targetNotationInput.value !== "SEPARATOR" /* NOTATION.SEPARATOR */)
4685
+ cash_dom__WEBPACK_IMPORTED_MODULE_2___default()(separatorInput.root).hide();
4686
+ else
4687
+ cash_dom__WEBPACK_IMPORTED_MODULE_2___default()(separatorInput.root).show();
4688
+ targetNotationInput.onChanged(() => __awaiter(this, void 0, void 0, function* () {
4689
+ if (targetNotationInput.value !== "SEPARATOR" /* NOTATION.SEPARATOR */)
4690
+ cash_dom__WEBPACK_IMPORTED_MODULE_2___default()(separatorInput.root).hide();
4691
+ else
4692
+ cash_dom__WEBPACK_IMPORTED_MODULE_2___default()(separatorInput.root).show();
4693
+ }));
4680
4694
  if (convertDialog == null) {
4681
4695
  convertDialog = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.dialog('Convert sequence notation')
4682
4696
  .add(datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.div([
4683
4697
  datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.h1('Current notation: ' + current),
4684
4698
  targetNotationInput.root,
4685
- // TODO: conditional separator input
4686
4699
  separatorInput.root
4687
4700
  ]))
4688
4701
  .onOK(() => __awaiter(this, void 0, void 0, function* () {
@@ -4700,7 +4713,7 @@ function convert(col) {
4700
4713
  }
4701
4714
  function convertDo(srcCol, targetNotation, separator) {
4702
4715
  return __awaiter(this, void 0, void 0, function* () {
4703
- const converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_2__.NotationConverter(srcCol);
4716
+ const converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_3__.NotationConverter(srcCol);
4704
4717
  const newColumn = converter.convert(targetNotation, separator);
4705
4718
  srcCol.dataFrame.columns.add(newColumn);
4706
4719
  yield datagrok_api_grok__WEBPACK_IMPORTED_MODULE_1__.data.detectSemanticTypes(srcCol.dataFrame);
@@ -4764,6 +4777,7 @@ function _fastaToStrings(fasta) {
4764
4777
  *
4765
4778
  * @param {DG.Column} srcCol Column with sequences.
4766
4779
  * @param {boolean} isAligned Whether the column is aligned.
4780
+ * @param {string} unUsedName
4767
4781
  * @return {Promise<DG.Column>} Aligned sequences.
4768
4782
  */
4769
4783
  function runKalign(srcCol, isAligned = false, unUsedName = '') {
@@ -5006,7 +5020,7 @@ function createJsonMonomerLibFromSdf(table) {
5006
5020
  const resultLib = [];
5007
5021
  for (let i = 0; i < table.rowCount; i++) {
5008
5022
  const monomer = {};
5009
- Object.keys(_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict).forEach(key => {
5023
+ Object.keys(_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict).forEach((key) => {
5010
5024
  if (key === _const__WEBPACK_IMPORTED_MODULE_3__.MONOMER_SYMBOL) {
5011
5025
  const monomerSymbol = table.get(_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict[key], i);
5012
5026
  monomer[key] = monomerSymbol === '.' ? table.get(_const__WEBPACK_IMPORTED_MODULE_3__.SDF_MONOMER_NAME, i) : monomerSymbol;
@@ -5016,8 +5030,8 @@ function createJsonMonomerLibFromSdf(table) {
5016
5030
  const jsonRgroups = [];
5017
5031
  rgroups.forEach((g) => {
5018
5032
  const rgroup = {};
5019
- const altAtom = g.substring(g.lastIndexOf("]") + 1);
5020
- let radicalNum = g.match(/\[R(\d+)\]/)[1];
5033
+ const altAtom = g.substring(g.lastIndexOf(']') + 1);
5034
+ const radicalNum = g.match(/\[R(\d+)\]/)[1];
5021
5035
  rgroup[_const__WEBPACK_IMPORTED_MODULE_3__.CAP_GROUP_SMILES] = altAtom === 'H' ? `[*:${radicalNum}][H]` : `O[*:${radicalNum}]`;
5022
5036
  rgroup[_const__WEBPACK_IMPORTED_MODULE_3__.RGROUP_ALTER_ID] = altAtom === 'H' ? `R${radicalNum}-H` : `R${radicalNum}-OH`;
5023
5037
  rgroup[_const__WEBPACK_IMPORTED_MODULE_3__.CAP_GROUP_NAME] = altAtom === 'H' ? `H` : `OH`;
@@ -5027,9 +5041,8 @@ function createJsonMonomerLibFromSdf(table) {
5027
5041
  monomer[key] = jsonRgroups;
5028
5042
  }
5029
5043
  else {
5030
- if (_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict[key]) {
5044
+ if (_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict[key])
5031
5045
  monomer[key] = table.get(_const__WEBPACK_IMPORTED_MODULE_3__.jsonSdfMonomerLibDict[key], i);
5032
- }
5033
5046
  }
5034
5047
  });
5035
5048
  resultLib.push(monomer);
@@ -10594,6 +10607,17 @@ return /******/ (function(modules) { // webpackBootstrap
10594
10607
 
10595
10608
  /***/ }),
10596
10609
 
10610
+ /***/ "cash-dom":
10611
+ /*!********************!*\
10612
+ !*** external "$" ***!
10613
+ \********************/
10614
+ /***/ ((module) => {
10615
+
10616
+ "use strict";
10617
+ module.exports = $;
10618
+
10619
+ /***/ }),
10620
+
10597
10621
  /***/ "datagrok-api/dg":
10598
10622
  /*!*********************!*\
10599
10623
  !*** external "DG" ***!
@@ -11118,4 +11142,4 @@ function convertPanel(col) {
11118
11142
  bio = __webpack_exports__;
11119
11143
  /******/ })()
11120
11144
  ;
11121
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLGVBQWU7QUFDekY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsS0FBSyxFQUFFLEVBR1Y7O0FBRVY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyRkFBMkYsZUFBZTtBQUMxRztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLCtGQUErRixlQUFlO0FBQzlHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkRBQTZELHNFQUFzRTtBQUNuSTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTixJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELHNFQUFzRTtBQUMvSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELHNFQUFzRTtBQUMvSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELHNFQUFzRTtBQUMvSDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkRBQTJELHNFQUFzRTtBQUNqSTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EseURBQXlELHNFQUFzRTtBQUMvSDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFF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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLGdEQUFnRCxRQUFRO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFD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QUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrREFBcUI7QUFDdEQsd0JBQXdCLCtEQUFxQjtBQUM3QztBQUNBLGtCQUFrQiwwRkFBZ0IsaUJBQWlCLGlHQUF1QjtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsdUdBQTZCO0FBQzdGO0FBQ0E7QUFDQSwwQkFBMEIsa0VBQXdCO0FBQ2xELDJCQUEyQixRQUFRLEdBQUcsU0FBUztBQUMvQyx1QkFBdUIsdURBQWE7QUFDcEMsWUFBWSxrRUFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDZDtBQUNQLElBQUksd0RBQU87QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AYmlvd2FzbS9haW9saS9kaXN0L2Fpb2xpLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxLXBhbGV0dGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxdWVuY2UtZW5jb2Rlci5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3Vua25vd24uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nby5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9mYXN0ZXN0LWxldmVuc2h0ZWluL2luZGV4LmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9qYXJvLXdpbmtsZXItdHlwZXNjcmlwdC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL2NvbnN0LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy9zZXFfYWxpZ24udHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2F0b21pYy13b3Jrcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY2VsbC1yZW5kZXJlci50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9jb252ZXJ0LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9tdWx0aXBsZS1zZXF1ZW5jZS1hbGlnbm1lbnQudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvc2VxdWVuY2Utc3BhY2UudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3V0aWxzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyLnRzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy93dS9kaXN0L3d1LmpzIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInJ4anNcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jpby8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQWlvbGkgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgdmFyIG5hbWUgPSBcIkBiaW93YXNtL2Fpb2xpXCI7XG4gIHZhciB2ZXJzaW9uID0gXCIyLjQuMC1yYzJcIjtcbiAgdmFyIGRlc2NyaXB0aW9uID0gXCJBIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgV2ViQXNzZW1ibHktYmFzZWQgZ2Vub21pY3MgdG9vbHNcIjtcbiAgdmFyIGJyb3dzZXIgPSBcImRpc3QvYWlvbGkuanNcIjtcbiAgdmFyIHdvcmtlciA9IFwiZGlzdC9haW9saS53b3JrZXIuanNcIjtcbiAgdmFyIG1haW4gPSBcImFpb2xpLmpzXCI7XG4gIHZhciByZXBvc2l0b3J5ID0ge1xuICBcdHR5cGU6IFwiZ2l0XCIsXG4gIFx0dXJsOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9haW9saS5naXRcIlxuICB9O1xuICB2YXIgYXV0aG9yID0gXCJSb2JlcnQgQWJvdWtoYWxpbFwiO1xuICB2YXIgbGljZW5zZSA9IFwiTUlUXCI7XG4gIHZhciBkZXBlbmRlbmNpZXMgPSB7XG4gIFx0Y29tbGluazogXCJeNC4zLjFcIixcbiAgXHRcIndhc20tZmVhdHVyZS1kZXRlY3RcIjogXCJeMS4yLjExXCJcbiAgfTtcbiAgdmFyIGRldkRlcGVuZGVuY2llcyA9IHtcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI6IFwiXjExLjAuMVwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tanNvblwiOiBcIl40LjEuMFwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCI6IFwiXjcuMC4wXCIsXG4gIFx0Y3lwcmVzczogXCJeOC4wLjBcIixcbiAgXHRyb2xsdXA6IFwiXjEuMjkuMFwiLFxuICBcdFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIlxuICB9O1xuICB2YXIgc2NyaXB0cyA9IHtcbiAgXHRidWlsZDogXCJyb2xsdXAgLWNcIixcbiAgXHRkZXY6IFwicm9sbHVwIC1jIC13XCIsXG4gIFx0dGVzdDogXCJjeXByZXNzIHJ1blwiLFxuICBcdFwidGVzdC1vcGVuXCI6IFwiY3lwcmVzcyBvcGVuXCJcbiAgfTtcbiAgdmFyIGZpbGVzID0gW1xuICBcdFwiZGlzdFwiXG4gIF07XG4gIHZhciBwa2cgPSB7XG4gIFx0bmFtZTogbmFtZSxcbiAgXHR2ZXJzaW9uOiB2ZXJzaW9uLFxuICBcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgXHRicm93c2VyOiBicm93c2VyLFxuICBcdHdvcmtlcjogd29ya2VyLFxuICBcdG1haW46IG1haW4sXG4gIFx0cmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgXHRhdXRob3I6IGF1dGhvcixcbiAgXHRsaWNlbnNlOiBsaWNlbnNlLFxuICBcdGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLFxuICBcdGRldkRlcGVuZGVuY2llczogZGV2RGVwZW5kZW5jaWVzLFxuICBcdHNjcmlwdHM6IHNjcmlwdHMsXG4gIFx0ZmlsZXM6IGZpbGVzXG4gIH07XG5cbiAgLyoqXHJcbiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnByb3h5XCIpO1xyXG4gIGNvbnN0IGNyZWF0ZUVuZHBvaW50ID0gU3ltYm9sKFwiQ29tbGluay5lbmRwb2ludFwiKTtcclxuICBjb25zdCByZWxlYXNlUHJveHkgPSBTeW1ib2woXCJDb21saW5rLnJlbGVhc2VQcm94eVwiKTtcclxuICBjb25zdCB0aHJvd01hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsudGhyb3duXCIpO1xyXG4gIGNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsKSB8fCB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlIHRvIGhhbmRsZSBvYmplY3RzIG1hcmtlZCB0byBwcm94eS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eVRyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIHZhbFtwcm94eU1hcmtlcl0sXHJcbiAgICAgIHNlcmlhbGl6ZShvYmopIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQxKTtcclxuICAgICAgICAgIHJldHVybiBbcG9ydDIsIFtwb3J0Ml1dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShwb3J0KSB7XHJcbiAgICAgICAgICBwb3J0LnN0YXJ0KCk7XHJcbiAgICAgICAgICByZXR1cm4gd3JhcChwb3J0KTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZXIgdG8gaGFuZGxlIHRocm93biBleGNlcHRpb25zLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRocm93VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmIHRocm93TWFya2VyIGluIHZhbHVlLFxyXG4gICAgICBzZXJpYWxpemUoeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgICBsZXQgc2VyaWFsaXplZDtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0geyBpc0Vycm9yOiBmYWxzZSwgdmFsdWUgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbc2VyaWFsaXplZCwgW11dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICBpZiAoc2VyaWFsaXplZC5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Ioc2VyaWFsaXplZC52YWx1ZS5tZXNzYWdlKSwgc2VyaWFsaXplZC52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBzZXJpYWxpemVkLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBzZXJpYWxpemF0aW9uIG9mIGNlcnRhaW4gdmFsdWVzLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRyYW5zZmVySGFuZGxlcnMgPSBuZXcgTWFwKFtcclxuICAgICAgW1wicHJveHlcIiwgcHJveHlUcmFuc2ZlckhhbmRsZXJdLFxyXG4gICAgICBbXCJ0aHJvd1wiLCB0aHJvd1RyYW5zZmVySGFuZGxlcl0sXHJcbiAgXSk7XHJcbiAgZnVuY3Rpb24gZXhwb3NlKG9iaiwgZXAgPSBzZWxmKSB7XHJcbiAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGNhbGxiYWNrKGV2KSB7XHJcbiAgICAgICAgICBpZiAoIWV2IHx8ICFldi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgeyBpZCwgdHlwZSwgcGF0aCB9ID0gT2JqZWN0LmFzc2lnbih7IHBhdGg6IFtdIH0sIGV2LmRhdGEpO1xyXG4gICAgICAgICAgY29uc3QgYXJndW1lbnRMaXN0ID0gKGV2LmRhdGEuYXJndW1lbnRMaXN0IHx8IFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXRoLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJHRVRcIiAvKiBHRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiU0VUXCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFtwYXRoLnNsaWNlKC0xKVswXV0gPSBmcm9tV2lyZVZhbHVlKGV2LmRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQVBQTFlcIiAvKiBBUFBMWSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlLmFwcGx5KHBhcmVudCwgYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IHJhd1ZhbHVlKC4uLmFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm94eSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRyYW5zZmVyKHBvcnQxLCBbcG9ydDFdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXR1cm5WYWx1ZSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3dpcmVWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3aXJlVmFsdWUpLCB7IGlkIH0pLCB0cmFuc2ZlcmFibGVzKTtcclxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAvLyBkZXRhY2ggYW5kIGRlYWN0aXZlIGFmdGVyIHNlbmRpbmcgcmVsZWFzZSByZXNwb25zZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSB7XHJcbiAgICAgIHJldHVybiBlbmRwb2ludC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk1lc3NhZ2VQb3J0XCI7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQoZW5kcG9pbnQpIHtcclxuICAgICAgaWYgKGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpKVxyXG4gICAgICAgICAgZW5kcG9pbnQuY2xvc2UoKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gd3JhcChlcCwgdGFyZ2V0KSB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgW10sIHRhcmdldCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUmVsZWFzZWQpIHtcclxuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZVwiKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBjcmVhdGVQcm94eShlcCwgcGF0aCA9IFtdLCB0YXJnZXQgPSBmdW5jdGlvbiAoKSB7IH0pIHtcclxuICAgICAgbGV0IGlzUHJveHlSZWxlYXNlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHtcclxuICAgICAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gcmVsZWFzZVByb3h5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb3h5UmVsZWFzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRoZW46ICgpID0+IHByb3h5IH07XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIgLyogR0VUICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByLnRoZW4uYmluZChyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbLi4ucGF0aCwgcHJvcF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldChfdGFyZ2V0LCBwcm9wLCByYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgLy8gRklYTUU6IEVTNiBQcm94eSBIYW5kbGVyIGBzZXRgIG1ldGhvZHMgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhXHJcbiAgICAgICAgICAgICAgLy8gYm9vbGVhbi4gVG8gc2hvdyBnb29kIHdpbGwsIHdlIHJldHVybiB0cnVlIGFzeW5jaHJvbm91c2x5IMKvXFxfKOODhClfL8KvXHJcbiAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIlNFVFwiIC8qIFNFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIHByb3BdLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZywgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBjcmVhdGVFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBXZSBqdXN0IHByZXRlbmQgdGhhdCBgYmluZCgpYCBkaWRu4oCZdCBoYXBwZW4uXHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IFwiYmluZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgcGF0aC5zbGljZSgwLCAtMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkFQUExZXCIgLyogQVBQTFkgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJ1Y3QoX3RhcmdldCwgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwcm94eTtcclxuICB9XHJcbiAgZnVuY3Rpb24gbXlGbGF0KGFycikge1xyXG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyhhcmd1bWVudExpc3QpIHtcclxuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gYXJndW1lbnRMaXN0Lm1hcCh0b1dpcmVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBbcHJvY2Vzc2VkLm1hcCgodikgPT4gdlswXSksIG15RmxhdChwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzFdKSldO1xyXG4gIH1cclxuICBjb25zdCB0cmFuc2ZlckNhY2hlID0gbmV3IFdlYWtNYXAoKTtcclxuICBmdW5jdGlvbiB0cmFuc2ZlcihvYmosIHRyYW5zZmVycykge1xyXG4gICAgICB0cmFuc2ZlckNhY2hlLnNldChvYmosIHRyYW5zZmVycyk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb3h5KG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmosIHsgW3Byb3h5TWFya2VyXTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdG9XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgaGFuZGxlcl0gb2YgdHJhbnNmZXJIYW5kbGVycykge1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtzZXJpYWxpemVkVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gaGFuZGxlci5zZXJpYWxpemUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlcyxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogXCJSQVdcIiAvKiBSQVcgKi8sXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJhbnNmZXJDYWNoZS5nZXQodmFsdWUpIHx8IFtdLFxyXG4gICAgICBdO1xyXG4gIH1cclxuICBmdW5jdGlvbiBmcm9tV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlckhhbmRsZXJzLmdldCh2YWx1ZS5uYW1lKS5kZXNlcmlhbGl6ZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIFwiUkFXXCIgLyogUkFXICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCBtc2csIHRyYW5zZmVycykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICAgICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBsKGV2KSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFldi5kYXRhIHx8ICFldi5kYXRhLmlkIHx8IGV2LmRhdGEuaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShldi5kYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oeyBpZCB9LCBtc2cpLCB0cmFuc2ZlcnMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KDQpXHJcbiAgICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKVxyXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xyXG4gIH1cbiAgLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbGluay5tanMubWFwXG5cbiAgLy8gQ29uc3RhbnRzXG4gIGNvbnN0IFVSTF9DRE5fUk9PVCA9IFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjJcIjtcbiAgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBcdC8vIEJpb3dhc20gQ0ROIFVSTHNcbiAgXHR1cmxDRE46IFVSTF9DRE5fUk9PVCxcbiAgXHQvLyBHZXQgdGhlIFdvcmtlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgQWlvbGkgdmVyc2lvblxuICBcdHVybEFpb2xpOiBgJHtVUkxfQ0ROX1JPT1R9L2Fpb2xpLyR7cGtnLnZlcnNpb259L2Fpb2xpLndvcmtlci5qc2AsXG4gIFx0Ly8gV2hlcmUgd2UgY2FuIGZpbmQgdGhlIGJhc2UgYmlvd2FzbSBtb2R1bGUgKG9ubHkgbW9kaWZ5IHRoaXMgZm9yIGxvY2FsIGRldmVsb3BtZW50KVxuICBcdHVybEJhc2VNb2R1bGU6IG51bGwsXG5cbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyB0aGUgc2hhcmVkIGZpbGVzeXN0ZW1cbiAgXHRkaXJTaGFyZWQ6IFwiL3NoYXJlZFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIEZpbGUvQmxvYiBvYmplY3RzIHRvIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4gIFx0ZGlyTW91bnRlZDogXCIvbW50XCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3Igc3ltbGlua3MgKGJhc2ljYWxseSwgd2UgbWFrZSBhIHN5bWxpbmsgdG8gZWFjaCBmaWxlIG1vdW50ZWQgb24gV09SS0VSRlNcbiAgXHQvLyBzbyB0aGF0IG9wZXJhdGlvbnMgbGlrZSBcInNhbXRvb2xzIGluZGV4XCIgZG9uJ3QgY3Jhc2ggZHVlIHRvIHRoZSByZWFkLW9ubHkgbmF0dXJlIG9mIFdPUktFUlMpLlxuICBcdC8vIEFsc28gbW91bnQgVVJMcyBsYXppbHkgaW4gdGhhdCBmb2xkZXIuXG4gIFx0ZGlyRGF0YTogXCIvZGF0YVwiLFxuICBcdC8vIEludGVybGVhdmUgc3Rkb3V0L3N0ZGVyci4gSWYgc2V0IHRvIGZhbHNlLCBgLmV4ZWMoKWAgcmV0dXJucyBhbiBvYmplY3QgeyBcInN0ZG91dFwiOiA8dGV4dD4sIFwic3RkZXJyXCI6IDx0ZXh0PiB9XG4gIFx0cHJpbnRJbnRlcmxlYXZlZDogdHJ1ZSxcblxuICBcdC8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJXb3JrZXIgd2l0aCBwYXlsb2FkIHsgdHlwZTogXCJiaW93YXNtXCIsIHZhbHVlOiAuLi4gfS5cbiAgXHQvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Jpb3dhc20vdHJlZS9tYWluL3Rvb2xzL2JodHNuZT4gZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VuZCByZWd1bGFyIHVwZGF0ZXNcbiAgXHQvLyBiYWNrIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbE1haW4oKSBpcyBkb25lIHJ1bm5pbmcuXG4gIFx0Y2FsbGJhY2s6IG51bGwsXG5cbiAgXHQvLyBEZWJ1Z2dpbmdcbiAgXHRkZWJ1ZzogZmFsc2UsXG4gIFx0ZW52OiBcInByZFwiXG4gIH07XG5cbiAgLy8gQ2xhc3M6IDEgb2JqZWN0ID0gMSB3b3JrZXI7IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV5IHdhbnQgdG9vbHMgcnVubmluZyBpbiBzZXBhcmF0ZSB0aHJlYWRzIG9yIGFsbCBvZiB0aGVtIGluIG9uZVxuICBjbGFzcyBBaW9saVxuICB7XG4gIFx0Y29uc3RydWN0b3IodG9vbHMsIGNvbmZpZz17fSlcbiAgXHR7XG4gIFx0XHRpZih0b29scyA9PSBudWxsKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyBhcnJheSBvZiB0b29scyBhcyBpbnB1dCB0byBBaW9saSBjb25zdHJ1Y3Rvci5cIjtcblxuICBcdFx0Ly8gUGFyc2UgdXNlciBpbnB1dFxuICBcdFx0aWYoIUFycmF5LmlzQXJyYXkodG9vbHMpKVxuICBcdFx0XHR0b29scyA9IFsgdG9vbHMgXTtcbiAgXHRcdC8vIE92ZXJ3cml0ZSBkZWZhdWx0IGNvbmZpZyBpZiBzcGVjaWZpZWRcbiAgXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIENPTkZJR19ERUZBVUxUUywgY29uZmlnKTtcbiAgXHRcdC8vIEZvciBjb252ZW5pZW5jZSwgc3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBvciBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW5zdGVhZCBvZiBvYmplY3QgY29uZmlnXG4gIFx0XHR0b29scyA9IHRvb2xzLm1hcCh0aGlzLl9wYXJzZVRvb2wpO1xuICBcdFx0Ly8gSWYgdGVzdGluZyB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudCBlLmcuIGNkbi1zdGcuYmlvd2FzbS5jb21cbiAgXHRcdGlmKGNvbmZpZy5lbnYgIT0gXCJwcmRcIikge1xuICBcdFx0XHRjb25maWcudXJsQ0ROID0gY29uZmlnLnVybENETi5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0XHRjb25maWcudXJsQWlvbGkgPSBjb25maWcudXJsQWlvbGkucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdH1cblxuICBcdFx0Ly8gQWRkIGJpb3dhc20gYmFzZSBtb2R1bGUgdG8gbGlzdCBvZiB0b29scyB0byBpbml0aWFsaXplIChuZWVkIHRoaXMgZm9yIHRoZSBzaGFyZWQgdmlydHVhbCBmaWxlc3lzdGVtKVxuICBcdFx0dG9vbHMgPSBbe1xuICBcdFx0XHR0b29sOiBcImJhc2VcIixcbiAgXHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIFx0XHRcdHVybFByZWZpeDogY29uZmlnLnVybEJhc2VNb2R1bGVcbiAgXHRcdH0sIC4uLnRvb2xzXTtcblxuICBcdFx0Ly8gU2V0IHN0YXRlXG4gIFx0XHR0aGlzLnRvb2xzID0gdG9vbHM7XG4gIFx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICBcdFx0Ly8gSGFuZGxlIGNhbGxiYWNrIChkZWxldGUgaXQgYmVjYXVzZSB3ZSBjYW4ndCBzZW5kIGEgZnVuY3Rpb24gdG8gdGhlIFdlYldvcmtlcilcbiAgXHRcdGlmKHRoaXMuY29uZmlnLmNhbGxiYWNrICE9IG51bGwpXG4gIFx0XHRcdHRoaXMuY2FsbGJhY2sgPSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcbiAgXHRcdGRlbGV0ZSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcblxuICBcdFx0cmV0dXJuIHRoaXMuaW5pdCgpO1xuICBcdH1cblxuICBcdC8vIEluaXRpYWxpemUgdGhlIFdlYldvcmtlciBhbmQgdGhlIFdlYkFzc2VtYmx5IG1vZHVsZXMgd2l0aGluIGl0XG4gIFx0YXN5bmMgaW5pdCgpIHtcbiAgXHRcdC8vIE5vdGU6IFdlIGNhbiBvbmx5IGNyZWF0ZSBhIFdlYldvcmtlciB1c2luZyBhIFVSTCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGFwcCBydW5uaW5nIGl0LCBpLmUuIHdlXG4gIFx0XHQvLyBjYW4ndCBkbyBgbmV3IFdvcmtlcihcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyLy4uLlwiKWAsIHNvIGluc3RlYWQgd2UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhhdFxuICBcdFx0Ly8gVVJMIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhlIFdlYldvcmtlci4gU2VlIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjAwMTU4OTg+LlxuICBcdFx0Y29uc3QgbW9kdWxlSlMgPSBhd2FpdCAoYXdhaXQgZmV0Y2godGhpcy5jb25maWcudXJsQWlvbGkpKS50ZXh0KCk7XG4gIFx0XHRjb25zdCBtb2R1bGVCbG9iID0gbmV3IEJsb2IoW21vZHVsZUpTXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KTtcblxuICBcdFx0Ly8gQ3JlYXRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChtb2R1bGVCbG9iKSk7XG4gIFx0XHQvLyBMaXN0ZW4gZm9yIFwiYmlvd2FzbVwiIG1lc3NhZ2VzIGZyb20gdGhlIFdlYldvcmtlclxuICBcdFx0aWYodGhpcy5jYWxsYmFjaylcbiAgXHRcdFx0d29ya2VyLm9ubWVzc2FnZSA9IGUgPT4ge1xuICBcdFx0XHRcdGlmKGUuZGF0YS50eXBlID09IFwiYmlvd2FzbVwiKVxuICBcdFx0XHRcdFx0dGhpcy5jYWxsYmFjayhlLmRhdGEudmFsdWUpO1xuICBcdFx0XHR9O1xuXG4gIFx0XHRjb25zdCBhaW9saSA9IHdyYXAod29ya2VyKTtcbiAgXHRcdGFpb2xpLnRvb2xzID0gdGhpcy50b29scztcbiAgXHRcdGFpb2xpLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gIFx0XHQvLyBJbml0aWFsaXplIHRoZSB0b29scyBpbnNpZGUgdGhlIFdlYldvcmtlclxuICBcdFx0YXdhaXQgYWlvbGkuaW5pdCgpO1xuXG4gIFx0XHRyZXR1cm4gYWlvbGk7XG4gIFx0fVxuXG4gIFx0Ly8gUGFyc2UgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnRvIHsgXCJ0b29sXCI6IDx0b29sPiwgXCJwcm9ncmFtXCI6IDxwcm9ncmFtPiwgXCJ2ZXJzaW9uXCI6IDx2ZXJzaW9uPiB9XG4gIFx0X3BhcnNlVG9vbCh0b29sKVxuICBcdHtcbiAgXHRcdC8vIElmIG5vdCBhIHN0cmluZywgbGVhdmUgaXQgYXMgaXNcbiAgXHRcdGlmKHR5cGVvZiB0b29sICE9PSBcInN0cmluZ1wiKVxuICBcdFx0XHRyZXR1cm4gdG9vbDtcblxuICBcdFx0Ly8gU3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiXG4gIFx0XHRjb25zdCB0b29sU3BsaXQgPSB0b29sLnNwbGl0KFwiL1wiKTtcbiAgXHRcdGlmKHRvb2xTcGxpdC5sZW5ndGggIT0gMiAmJiB0b29sU3BsaXQubGVuZ3RoICE9IDMpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nICc8dG9vbD4vPHZlcnNpb24+JyBvciAnPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj4nXCI7XG5cbiAgXHRcdHJldHVybiB7XG4gIFx0XHRcdHRvb2w6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0cHJvZ3JhbTogdG9vbFNwbGl0Lmxlbmd0aCA9PSAzID8gdG9vbFNwbGl0WzFdIDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHR2ZXJzaW9uOiB0b29sU3BsaXRbdG9vbFNwbGl0Lmxlbmd0aCAtIDFdXG4gIFx0XHR9O1xuICBcdH1cbiAgfVxuXG4gIHJldHVybiBBaW9saTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFpb2xpLmpzLm1hcFxuIiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkcyB7XG4gICAgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgICAgICAgICBjYXNlICdncm9rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICBjYXNlICdsZXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkxlc2s7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hlbVBhbGV0dGU6IHNjaGVtZSBcXGAke3NjaGVtZX1cXGAgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpdmlkZWQgYW1pbm8gYWNpZCB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29udGVudCBpcyBudW1iZXIsIHRoZW4gaXRzIG9taXR0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjIHJhdyBhbWlub1xuICAgICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZ119IG91dGVyIGFuZCBpbm5lciBjb250ZW50XG4gICAgICovXG4gICAgc3RhdGljIGdldElubmVyT3V0ZXIoYykge1xuICAgICAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgICAgIGxldCBpbm5lciA9ICcnO1xuICAgICAgICBsZXQgb3V0ZXIgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGMpIHtcbiAgICAgICAgICAgIGlmIChjaGFyID09ICcoJylcbiAgICAgICAgICAgICAgICBpc0lubmVyKys7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgICAgICAgICBpc0lubmVyLS07XG4gICAgICAgICAgICBlbHNlIGlmIChpc0lubmVyKVxuICAgICAgICAgICAgICAgIGlubmVyICs9IGNoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0Q29sb3JBQVBpdm90KG1vbm9tZXIgPSAnJywgc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAvL2NvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSBBQVBhbGV0dGVzLkdyb2tHcm91cHMoKTtcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IHRoaXMuZ2V0UGFsZXR0ZShzY2hlbWUpO1xuICAgICAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICAgICAgb3V0ZXJNb25vbWVyID0gKG91dGVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7b3V0ZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBvdXRlck1vbm9tZXIpO1xuICAgICAgICBpbm5lck1vbm9tZXIgPSAoaW5uZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtpbm5lck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IGlubmVyTW9ub21lcik7XG4gICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAxIHx8IG1vbm9tZXJbMV0gPT0gJygnKSB7XG4gICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYSA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDFdIDpcbiAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdIGluIGNoZW1QYWxldHRlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAyIHx8IG1vbm9tZXJbMl0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2IgPSBtb25vbWVyWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoKF9jID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvTG93ZXJDYXNlKCkpID09IG1vbm9tZXJbMF0pIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygxLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMF07XG4gICAgfVxufVxuQW1pbm9hY2lkcy5TZW1UeXBlID0gJ0FtaW5vYWNpZHMnO1xuQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnQW1pbm9hY2lkc011bHRpcGxlQWxpZ25tZW50JztcbkFtaW5vYWNpZHMudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5BbWlub2FjaWRzLk5hbWVzID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXMgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuLyoqIFRPRE86IEZ1bGw/XG4gKi9cbkFtaW5vYWNpZHMuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXMXBibTloWTJsa2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1GdGFXNXZZV05wWkhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJUeXhyUWtGQmJVSXNVMEZCVVN4alFVRmpPMGxCUnpkRExFMUJRVTBzUzBGQlN5eEpRVUZKTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJRek5DTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRMmhETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRE5VUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRPMmRDUVVNMVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRla0lzUlVGQlJTeExRVUZMTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCU1Uwc1RVRkJUU3hMUVVGTExGVkJRVlU3VVVGRE1VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6bENMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0blFrRkRha01zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEzUkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRPMmRDUVVOdVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRka1FzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETzJkQ1FVTXZRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGVrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJRenRoUVVOcVF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkpUU3hOUVVGTkxFdEJRVXNzVFVGQlRUdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhEUVVGRE8yZENRVU51UXl4NVJFRkJlVVE3WjBKQlEzcEVMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xGRkJRVkVzUlVGQlJTeFRRVUZUTzJGQlEzQkNMRU5CUVVNc1EwRkJRenRUUVVOS08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCY1Vka0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCYVVJc1RVRkJUVHRSUVVNNVF5eFJRVUZSTEUxQlFVMHNSVUZCUlR0WlFVTm9RaXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZGtNc1MwRkJTeXhOUVVGTk8yZENRVU5VTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEycERPMmRDUVVORkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRUUVVOeVJUdEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlV6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUldZc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEY0VJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dG5Ra0ZEWWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhPMmRDUVVOc1FpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFOUJRVTg3WjBKQlEyUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenM3WjBKQlJXUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5vUlN4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eFZRVUZyUWl4RlFVRkZMRVZCUVVVc1UwRkJhVUlzVFVGQlRUczdVVUZEZWtVc2MwUkJRWE5FTzFGQlEzUkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGREwwUXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZETTBZc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkZNMFlzU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0WlFVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNoRU8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdFpRVU16UkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhMUVVGTExFbEJRVWtzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenR2UWtGRGJrTXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJDeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjRSRHRUUVVOR08xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMWxCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0blFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVUVzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHR2UWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8zZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJEdGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVOQlFVTTdPMEZCY0V4bExHdENRVUZQTEVkQlFWY3NXVUZCV1N4RFFVRkRPMEZCUlM5Q0xHMURRVUYzUWl4SFFVRlhMRFpDUVVFMlFpeERRVUZETzBGQlJURkZMSGxDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZOMElzWjBKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1YwRkJWenREUVVOcVFpeERRVUZETzBGQlJWa3NiVUpCUVZFc1IwRkJjVUk3U1VGRGVrTXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTd3lRa0ZCTWtJN1NVRkRhRU1zUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIbENRVUY1UWp0SlFVTTVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEc5RFFVRnZRenRKUVVONlF5eEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdERRVU4yUWl4RFFVRkRPMEZCUlZrc05FSkJRV2xDTEVkQlFYRkNPMGxCUTJ4RUxFZEJRVWNzUlVGQlJTeExRVUZMTzBsQlExWXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4dFFrRkJiVUk3U1VGRGVFSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4alFVRmpPMGxCUTI1Q0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNaMEpCUVdkQ08wbEJRM0pDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGhRVUZoTzBsQlEyeENMRWRCUVVjc1JVRkJSU3dyUWtGQkswSTdTVUZEY0VNc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHREUVVOc1FpeERRVUZETzBGQlJVWTdSMEZEUnp0QlFVTlhMSE5DUVVGWExFZEJRWEZDTzBsQlF6VkRMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdRMEZEV0N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHeGxjMnM2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVEdWemF5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVzWlhOcklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWJHVnpheUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjBFbkxDQW5VeWNzSUNkVUoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJQ0FnVzFzblF5Y3NJQ2RXSnl3Z0owa25MQ0FuVENjc0lDZFFKeXdnSjBZbkxDQW5XU2NzSUNkTkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkT0p5d2dKMUVuTENBblNDZGRMQ0FuYldGblpXNTBZU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRMSnl3Z0oxSW5YU3dnSjJGc2JGOWliSFZsSjEwc1hHNGdJQ0FnSUNCZExDQm1ZV3h6WlN3Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWJHVnphenRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2R5YjJ0SGNtOTFjSE02SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUjNKdmEwZHliM1Z3Y3lncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW5jbTlyUjNKdmRYQnpJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaM0p2YTBkeWIzVndjeUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFVblhTd2dKM2xsYkd4dmR5ZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMUFuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEJKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMDBuTENBblJpY3NJQ2RaSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRTSnl3Z0owZ25MQ0FuU3lkZExDQW5iR2xuYUhSZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKMlJoY210ZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZFRKeXdnSjFRbkxDQW5UaWNzSUNkUkoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuY205clIzSnZkWEJ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nY21GelRXOXNPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRkpoYzAxdmJDZ3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV5WVhOTmIyd2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlZWE5OYjJ3Z1BTQnVaWGNnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S0h0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwyRmpZMlZ6TG1WdWN5MXNlVzl1TG1aeUwySnBiM1JwWXk5eVlYTjBiM0F2YUdWc2NDOWpiMnh2ZFhJdWFIUnRYRzRnSUNBZ0lDQWdJQ2RFSnpvZ0p5TkZOakJCTUVFbkxDQXZMeUJoYzNBc0lHRnpjR0Z5ZEdsaklHRmphV1FzSUdGemNGeHVJQ0FnSUNBZ0lDQW5SU2M2SUNjalJUWXdRVEJCSnl3Z0x5OGdaMngxTENCbmJIVjBZVzFwWXlCaFkybGtYRzRnSUNBZ0lDQWdJQ2RESnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJqZVhNc0lHTjVjM1JsYVc1bFhHNGdJQ0FnSUNBZ0lDZE5Kem9nSnlORk5rVTJNREFuTENBdkx5QnRaWFFzSUcxbGRHaHBiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owc25PaUFuSXpFME5VRkdSaWNzSUM4dklHeDVjeXdnYkhsemFXNWxYRzRnSUNBZ0lDQWdJQ2RTSnpvZ0p5TXhORFZCUmtZbkxDQXZMeUJoY21jc0lHRnlaMmx1YVc1bFhHNGdJQ0FnSUNBZ0lDZFRKem9nSnlOR1FUazJNREFuTENBdkx5QnpaWElzSUhObGNtbHVaVnh1SUNBZ0lDQWdJQ0FuVkNjNklDY2pSa0U1TmpBd0p5d2dMeThnZEdoeUxDQjBhSEpsYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMFluT2lBbkl6TXlNekpCUVNjc0lDOHZJSEJvWlN3Z2NHaGxibmxzWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuV1NjNklDY2pNekl6TWtGQkp5d2dMeThnZEhseUxDQjBlWEp2YzJsdVpWeHVJQ0FnSUNBZ0lDQW5UaWM2SUNjak1EQkVRMFJESnl3Z0x5OGdZWE51TENCaGMzQmhjbUZuYVc1bFhHNGdJQ0FnSUNBZ0lDZFJKem9nSnlNd01FUkRSRU1uTENBdkx5Qm5iRzRzSUdkc2RYUmhiV2x1WlZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2NqUlVKRlFrVkNKeXdnTHk4Z1oyeDVMQ0JuYkhsamFXNWxYRzRnSUNBZ0lDQWdJQ2RNSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJzWlhVc0lHeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0oxWW5PaUFuSXpCR09ESXdSaWNzSUM4dklIWmhiQ3dnZG1Gc2FXNWxYRzRnSUNBZ0lDQWdJQ2RKSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJwYkdVc0lHbHpiMnhsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMEVuT2lBbkkwTTRRemhET0Njc0lDOHZJR0ZzWVN3Z1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBblZ5YzZJQ2NqUWpRMVFVSTBKeXdnTHk4Z2RISndMQ0IwY25sd2RHOXdhR0Z1WEc0Z0lDQWdJQ0FnSUNkSUp6b2dKeU00TWpneVJESW5MQ0F2THlCb2FYTXNJR2hwYzNScFpHbHVaVnh1SUNBZ0lDQWdJQ0FuVUNjNklDY2pSRU01TmpneUp5d2dMeThnY0hKdkxDQndjbTlzYVc1bFhHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5JMEpGUVRBMlJTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbUZ6VFc5c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSeklIdGNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVTZJSE4wY21sdVp5QTlJQ2RCYldsdWIyRmphV1J6Snp0Y2JseHVJQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qk9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RIYkhsamFXNWxKeXhjYmlBZ0lDQW5UQ2M2SUNkTVpYVmphVzVsSnl4Y2JpQWdJQ0FuV1NjNklDZFVlWEp2YzJsdVpTY3NYRzRnSUNBZ0oxTW5PaUFuVTJWeWFXNWxKeXhjYmlBZ0lDQW5SU2M2SUNkSGJIVjBZVzFwWXlCaFkybGtKeXhjYmlBZ0lDQW5VU2M2SUNkSGJIVjBZVzFwYm1VbkxGeHVJQ0FnSUNkRUp6b2dKMEZ6Y0dGeWRHbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkT0p6b2dKMEZ6Y0dGeVlXZHBibVVuTEZ4dUlDQWdJQ2RHSnpvZ0oxQm9aVzU1YkdGc1lXNXBibVVuTEZ4dUlDQWdJQ2RCSnpvZ0owRnNZVzVwYm1VbkxGeHVJQ0FnSUNkTEp6b2dKMHg1YzJsdVpTY3NYRzRnSUNBZ0oxSW5PaUFuUVhKbmFXNXBibVVuTEZ4dUlDQWdJQ2RJSnpvZ0owaHBjM1JwWkdsdVpTY3NYRzRnSUNBZ0owTW5PaUFuUTNsemRHVnBibVVuTEZ4dUlDQWdJQ2RXSnpvZ0oxWmhiR2x1WlNjc1hHNGdJQ0FnSjFBbk9pQW5VSEp2YkdsdVpTY3NYRzRnSUNBZ0oxY25PaUFuVkhKNWNIUnZjR2hoYmljc1hHNGdJQ0FnSjBrbk9pQW5TWE52YkdWMVkybHVaU2NzWEc0Z0lDQWdKMDBuT2lBblRXVjBhR2x2Ym1sdVpTY3NYRzRnSUNBZ0oxUW5PaUFuVkdoeVpXOXVhVzVsSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKMDVEUXlnOVR5bFBKeXhjYmlBZ0lDQW5UQ2M2SUNkT1cwTkFTRjBvUTBNb1F5bERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxa25PaUFuVGtNb1EwTXhQVU5EUFVNb1R5bERQVU14S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMU1uT2lBblRrTW9RMDhwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SU2M2SUNkT1cwTkFRRWhkS0VORFF5aFBLVDFQS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUVuT2lBblRsdERRRUJJWFNoRFEwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RFSnpvZ0owNWJRMEJBU0Ywb1EwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RPSnpvZ0owNWJRMEJBU0Ywb1EwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RHSnpvZ0owNURLRU5ETVQxRFF6MURRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RCSnpvZ0owNWJRMEJJWFNoREtVTW9QVThwVHljc1hHNGdJQ0FnSjBzbk9pQW5Ua01vUTBORFEwNHBReWc5VHlsUEp5eGNiaUFnSUNBblVpYzZJQ2RPVzBOQVNGMG9RME5EVGtNb1BVNHBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZElKem9nSjA1REtFTkRNVDFEVGoxRFcwNWRNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZERKem9nSjA1YlEwQkFTRjBvUTFNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVmljNklDZE9ReWhES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkUUp6b2dKMDRvUTBORE1TbERNVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxY25PaUFuVGx0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMGtuT2lBblRsdERRRWhkS0Z0RFFFaGRLRU1wUTBNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVFNjNklDZE9ReWhEUTFOREtVTW9QVThwVHljc1hHNGdJQ0FnSjFRbk9pQW5Ua01vUXloUEtVTXBReWc5VHlsUEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWelZISjFibU5oZEdWa09pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSnlwREtpY3NYRzRnSUNBZ0owd25PaUFuUTBNb1F5bERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5XU2M2SUNkRE1UMURReWc5UTBNOVF6RkRReWdxS1NvcFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVDBOREtDb3BReW9uTEZ4dUlDQWdJQ2RGSnpvZ0p5cGJRMEJBU0Ywb1EwTkRLRThwUFU4cEtpY3NYRzRnSUNBZ0oxRW5PaUFuS2s1YlEwQkFTRjBvUTBOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBRbk9pQW5LbHREUUVCSVhTaERReWhQS1QxUEtTb25MRnh1SUNBZ0lDZE9Kem9nSnlwYlEwQkFTRjBvUTBNb1RpazlUeWtxSnl4Y2JpQWdJQ0FuUmljNklDZERNVDFEUXoxREtFTTlRekVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5RU2M2SUNkRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblN5YzZJQ2RES0VORFRpbERReWdxS1NvbkxGeHVJQ0FnSUNkU0p6b2dKeXBiUTBCSVhTaERRME5PUXlnOVRpbERLU29uTEZ4dUlDQWdJQ2RJSnpvZ0owTXhQVU1vVGtNOVRqRXBRME1vS2lrcUp5eGNiaUFnSUNBblF5YzZJQ2RES0Z0RFFFQklYU2dxS1NvcFV5Y3NYRzRnSUNBZ0oxWW5PaUFuUTBNb1F5bERLQ29wS2ljc1hHNGdJQ0FnSjFBbk9pQW5RekZEUTA0b0tpbERNU29uTEZ4dUlDQWdJQ2RYSnpvZ0p5cGJRMEJBU0Ywb1EyTXhZekpqWTJOall6SnVLRnRJWFNsak1Ta3FKeXhjYmlBZ0lDQW5TU2M2SUNkRFExdERRRWhkS0VNcFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblRTYzZJQ2REVTBORFF5Z3FLU29uTEZ4dUlDQWdJQ2RVSnpvZ0owTkRLRThwUXlncUtTb25MRnh1SUNCOU8xeHVYRzRnSUM4cUtpQlVUMFJQT2lCR2RXeHNQMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVVoxYkd4T1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUVd4aEp6b2dKMEVuTEZ4dUlDQWdJQ2RCY21jbk9pQW5VaWNzWEc0Z0lDQWdKMEZ6YmljNklDZE9KeXhjYmlBZ0lDQW5RWE53SnpvZ0owUW5MRnh1SUNBZ0lDZERlWE1uT2lBblF5Y3NYRzRnSUNBZ0owZHNiaWM2SUNkUkp5eGNiaUFnSUNBblIyeDFKem9nSjBVbkxGeHVJQ0FnSUNkSGJIa25PaUFuUnljc1hHNGdJQ0FnSjBocGN5YzZJQ2RJSnl4Y2JpQWdJQ0FuU1d4bEp6b2dKMGtuTEZ4dUlDQWdJQ2RNWlhVbk9pQW5UQ2NzWEc0Z0lDQWdKMHg1Y3ljNklDZExKeXhjYmlBZ0lDQW5UV1YwSnpvZ0owMG5MRnh1SUNBZ0lDZFFhR1VuT2lBblJpY3NYRzRnSUNBZ0oxQnlieWM2SUNkUUp5eGNiaUFnSUNBblUyVnlKem9nSjFNbkxGeHVJQ0FnSUNkVWFISW5PaUFuVkNjc1hHNGdJQ0FnSjFSeWNDYzZJQ2RYSnl4Y2JpQWdJQ0FuVkhseUp6b2dKMWtuTEZ4dUlDQWdJQ2RXWVd3bk9pQW5WaWNzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSUVlXeGxkSFJsS0hOamFHVnRaVG9nYzNSeWFXNW5JRDBnSjJkeWIyc25LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WTJobGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkbmNtOXJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQmpZWE5sSUNkc1pYTnJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVUR1Z6YXp0Y2JpQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkRhR1Z0VUdGc1pYUjBaVG9nYzJOb1pXMWxJRnhjWUNSN2MyTm9aVzFsZlZ4Y1lDQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBkbWxrWldRZ1lXMXBibThnWVdOcFpDQjNhWFJvSUdsMGN5QmpiMjUwWlc1MElHbHVJSFJvWlNCaWNtRmphMlYwTENCcFppQjBhR1VnWTI5dWRHVnVkQ0JwY3lCdWRXMWlaWElzSUhSb1pXNGdhWFJ6SUc5dGFYUjBaV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdNZ2NtRjNJR0Z0YVc1dlhHNGdJQ0FxSUVCeVpYUjFjbTRnZTF0emRISnBibWNzSUhOMGNtbHVaMTE5SUc5MWRHVnlJR0Z1WkNCcGJtNWxjaUJqYjI1MFpXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRWx1Ym1WeVQzVjBaWElvWXpvZ2MzUnlhVzVuS1RvZ1czTjBjbWx1Wnl3Z2MzUnlhVzVuWFNCN1hHNGdJQ0FnYkdWMElHbHpTVzV1WlhJZ1BTQXdPMXh1SUNBZ0lHeGxkQ0JwYm01bGNpQTlJQ2NuTzF4dUlDQWdJR3hsZENCdmRYUmxjaUE5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR0Z5SUc5bUlHTXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHRnlJRDA5SUNjb0p5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpc3JPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmhoY2lBOVBTQW5LU2NwWEc0Z0lDQWdJQ0FnSUdselNXNXVaWEl0TFR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dselNXNXVaWElwWEc0Z0lDQWdJQ0FnSUdsdWJtVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUc5MWRHVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNGcGMwNWhUaWh3WVhKelpVbHVkQ2hwYm01bGNpa3BJRDhnVzI5MWRHVnlMQ0FuSjEwZ09pQmJiM1YwWlhJc0lHbHVibVZ5WFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFEyOXNiM0pCUVZCcGRtOTBLRzF2Ym05dFpYSTZJSE4wY21sdVp5QTlJQ2NuTENCelkyaGxiV1U2SUNkbmNtOXJKeUE5SUNkbmNtOXJKeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaeXdnYzNSeWFXNW5MQ0J1ZFcxaVpYSmRJSHRjYmlBZ0lDQXZMMk52Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0JCUVZCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNb0tUdGNiaUFnSUNCamIyNXpkQ0JqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQwZ2RHaHBjeTVuWlhSUVlXeGxkSFJsS0hOamFHVnRaU2s3WEc0Z0lDQWdiR1YwSUZ0dmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2wwZ1BTQjBhR2x6TG1kbGRFbHVibVZ5VDNWMFpYSW9iVzl1YjIxbGNpazdYRzRnSUNBZ2IzVjBaWEpOYjI1dmJXVnlJRDBnS0c5MWRHVnlUVzl1YjIxbGNpNXNaVzVuZEdnZ1BpQTJJRDhnWUNSN2IzVjBaWEpOYjI1dmJXVnlMbk5zYVdObEtEQXNJRE1wZlM0dUxtQWdPaUJ2ZFhSbGNrMXZibTl0WlhJcE8xeHVJQ0FnSUdsdWJtVnlUVzl1YjIxbGNpQTlJQ2hwYm01bGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTJsdWJtVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2dhVzV1WlhKTmIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXhJSHg4SUcxdmJtOXRaWEpiTVYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNRjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F4WFNBNlhHNGdJQ0FnSUNBZ0lGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHMXZibTl0WlhKYk1GMGdQVDBnSjJRbklDWW1JRzF2Ym05dFpYSmJNVjBoSUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeUlIeDhJRzF2Ym05dFpYSmJNbDBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdiVzl1YjIxbGNsc3hYVDh1ZEc5VmNIQmxja05oYzJVb0tTRTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTUN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJdWJHVnVaM1JvSUQwOUlETWdmSHdnYlc5dWIyMWxjbHN6WFNBOVBTQW5LQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcFhUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObExtZGxkQ2hoYldsdWJ5a3NJR0Z0YVc1dkxDQnBibTVsY2sxdmJtOXRaWElzSUROZElEcGNiaUFnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlXekJkUHk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUcxdmJtOXRaWEpiTUYwcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektTQnBiaUIwYUdsekxrRkJSblZzYkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQTBJSHg4SUcxdmJtOXRaWEpiTkYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0EwWFNBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lEUmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTUYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJywgJ1UnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG59XG5OdWNsZW90aWRlcy5TZW1UeXBlID0gJ051Y2xlb3RpZGVzJztcbk51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50Jztcbk51Y2xlb3RpZGVzLk5hbWVzID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJuVmpiR1Z2ZEdsa1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKdWRXTnNaVzkwYVdSbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZMUVN4UFFVRlBMRVZCUVdFc1kwRkJZeXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZNVVFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHTkJRV003U1VGSE9VTXNUVUZCVFN4TFFVRkxMRmxCUVZrN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXp0blFrRkRNVU1zUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFMUJRVTA3WjBKQlExZ3NSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRTFCUVUwN1lVRkRha0lzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExGZEJRVmM3TzBGQlEwNHNiVUpCUVU4c1IwRkJWeXhoUVVGaExFTkJRVU03UVVGRmFFTXNiME5CUVhkQ0xFZEJRVmNzT0VKQlFUaENMRU5CUVVNN1FVRkZjRVVzYVVKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVVVGQlVUdERRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTm9jbTl0WVhSdlozSmhiVG9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JEYUhKdmJXRjBiMmR5WVcwb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMGdibVYzSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNb2UxeHVJQ0FnSUNBZ0lDQW5RU2M2SUNkbmNtVmxiaWNzWEc0Z0lDQWdJQ0FnSUNkREp6b2dKMkpzZFdVbkxGeHVJQ0FnSUNBZ0lDQW5SeWM2SUNkaWJHRmpheWNzSUM4dklHOXlZVzVuWlNBL1hHNGdJQ0FnSUNBZ0lDZFVKem9nSjNKbFpDY3NJQ2RWSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBblozSmhlU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTJoeWIyMWhkRzluY21GdE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT2RXTnNaVzkwYVdSbGN5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuVG5WamJHVnZkR2xrWlhNbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlLCBQYWxldHRlVHlwZSA9IFNlcVBhbGV0dGVCYXNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWxldHRlVHlwZShwYWxldHRlKTtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVbbV07XG4gICAgfVxufVxuU2VxUGFsZXR0ZUJhc2UudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG4vKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9ycyAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdsQ1FTeE5RVUZOTEU5QlFVOHNZMEZCWXp0SlFUSkRla0lzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJiRUpUTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJkMElzUlVGRGJrUXNWVUZCVlN4SFFVRkhMRXRCUVVzc1JVRkJSU3hqUVVGeFF5eGpRVUZqTzFGQlJYWkZMRTFCUVUwc1QwRkJUeXhIUVVFNFFpeEZRVUZGTEVOQlFVTTdVVUZET1VNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0blFrRkRNMElzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGUlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6czdRVUZvUkdFc05rSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVWc1JDdzBRMEZCTkVNN1FVRkRPVUlzTkVKQlFXRXNSMEZCWjBNN1NVRkRla1FzVVVGQlVTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRE1VWXNWMEZCVnl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xRkJRM0JITEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEc5Q1FVRnZRaXhEUVVGRE8wbEJRMjVHTEZWQlFWVXNSVUZCUlN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEc5Q1FVRnZRanRSUVVNdlJ5eHRRa0ZCYlVJc1EwRkJRenRKUVVOMFFpeFRRVUZUTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTjJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTTNReXhUUVVGVExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF6dEpRVU55UlN4WFFVRlhMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF6dEpRVU55UkN4WlFVRlpMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXp0SlFVTTVSaXhaUVVGWkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dEpRVU14UlN4WlFVRlpMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjBSaXhQUVVGUExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTTNReXhoUVVGaExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU12UlN4VlFVRlZMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjRSaXhOUVVGTkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVNMVFpeFBRVUZQTEVWQlFVVXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1EwRkJRenRKUVVNdlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU14Uml4UlFVRlJMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0SlFVTTNRaXhQUVVGUExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenREUVVNNVFpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVFpYRlFZV3hsZEhSbElIdGNiaUFnTHk4Z1ZHaGxjbVVnWVhKbElIUnZieUJ0ZFdOb0lIQnliMkpzWlcwZ2QybDBhQ0JwYm1SbGVHVnlJSEJ5YjNCbGNuUjVJR2x1SUhSNWNHVnpZM0pwY0hRdVhHNGdJQzh2SUM4cUtseHVJQ0F2THlBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JTQk5iMjV2YldWeUlHTm9ZWEpoWTNSbGNseHVJQ0F2THlBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFTnZiRzl5WEc0Z0lDOHZJQ0FxTDF4dUlDQXZMeUJiYlRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nVFc5dWIyMWxjaUJqYjJ4dmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYlNCTmIyNXZiV1Z5WEc0Z0lDQXFMMXh1SUNCblpYUW9iVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJWeFVHRnNaWFIwWlVKaGMyVWdhVzF3YkdWdFpXNTBjeUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtUmxabWx1WldSRGIyeHZjaUE5SUNkeVoySW9NVEF3TERFd01Dd3hNREFwSnp0Y2JseHVJQ0F2S2lvZ1VHRnNaWFIwWlNCM2FYUm9JSE5vWVdSbGN5QnZaaUJ3Y21sdFlYSjVJR052Ykc5eWN5QXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJy4uL3ZpZXdlcnMvd2ViLWxvZ28nO1xuLyoqIENsYXNzIGZvciBoYW5kbGluZyBjb252ZXJzaW9uIG9mIG5vdGF0aW9uIHN5c3RlbXMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgTm90YXRpb25Db252ZXJ0ZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QgPSB7XG4gICAgICAgICAgICBIRUxNOiAnKicsXG4gICAgICAgICAgICBTRVBBUkFUT1I6ICcnLFxuICAgICAgICAgICAgRkFTVEE6ICctJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9zb3VyY2VDb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fc291cmNlQ29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZVVuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX3NvdXJjZU5vdGF0aW9uID0gdGhpcy5nZXRTb3VyY2VOb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAodGhpcy5pc0hlbG0oKSkgPyB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSA6XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICB9XG4gICAgZ2V0IHNwbGl0dGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fc3BsaXR0ZXIgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl9zcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5fc291cmNlQ29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICAgIH1cbiAgICA7XG4gICAgZ2V0IHNvdXJjZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fc291cmNlVW5pdHM7IH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBnZXQgZGVmYXVsdEdhcFN5bWJvbCgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2w7IH1cbiAgICBnZXQgc2VwYXJhdG9yKCkge1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgICAgICBpZiAoc2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHNlcGFyYXRvcjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXBhcmF0b3Igbm90IHNldCcpO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncm5hJyk7IH1cbiAgICBpc0RuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnZG5hJyk7IH1cbiAgICBpc1BlcHRpZGUoKSB7IHJldHVybiB0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ3B0Jyk7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldFNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdoZWxtJykpXG4gICAgICAgICAgICByZXR1cm4gXCJIRUxNXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY29sdW1uIGhhcyB1bml0cyB0aGF0IGRvIG5vdCBjb3JyZXNwb25kIHRvIGFueSBub3RhdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgZW1wdHkgY29sdW1uIG9mIHRoZSBzcGVjaWZpZWQgbm90YXRpb24gdHlwZSBhbmQgdGhlIHNhbWVcbiAgICAgKiBsZW5ndGggYXMgc291cmNlQ29sdW1uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05PVEFUSU9OfSB0YXJnZXROb3RhdGlvblxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBnZXROZXdDb2x1bW4odGFyZ2V0Tm90YXRpb24pIHtcbiAgICAgICAgY29uc3QgY29sID0gdGhpcy5zb3VyY2VDb2x1bW47XG4gICAgICAgIGNvbnN0IGxlbiA9IGNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0YXJnZXROb3RhdGlvbi50b0xvd2VyQ2FzZSgpICsgJygnICsgY29sLm5hbWUgKyAnKSc7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSBjb2wuZGF0YUZyYW1lLmNvbHVtbnMuZ2V0VW51c2VkTmFtZShuYW1lKTtcbiAgICAgICAgLy8gZHVtbXkgY29kZVxuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJycpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgdGhpcy5zb3VyY2VVbml0cy5yZXBsYWNlKHRoaXMuc291cmNlTm90YXRpb24udG9Mb3dlckNhc2UoKS50b1N0cmluZygpLCB0YXJnZXROb3RhdGlvbi50b0xvd2VyQ2FzZSgpLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgLy8gVE9ETzogc3BlY2lmeSBjZWxsIHJlbmRlcmVycyBmb3IgYWxsIGNhc2VzXG4gICAgICAgIGlmICh0aGlzLnRvRmFzdGEodGFyZ2V0Tm90YXRpb24pKSB7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuQ0VMTF9SRU5ERVJFUiwgJ01hY3JvbW9sZWN1bGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgICAqL1xuICAgIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvciwgZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoJ3NlcGFyYXRvcicsIHNlcGFyYXRvcik7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAgICogbWFjcm9tb2xlY3VsZSAocGVwdGlkZSwgRE5BLCBSTkEpXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICAgKi9cbiAgICBnZXRIZWxtV3JhcHBlcnMoKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAgICAgICAgICh0aGlzLmlzUGVwdGlkZSgpKSA/ICdQRVBUSURFMXsnIDpcbiAgICAgICAgICAgICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcbiAgICAgICAgaWYgKHByZWZpeCA9PT0gJ1Vua25vd24nKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIHBlcHRpZGUsIG5vciBudWNsZW90aWRlJyk7XG4gICAgICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgICAgIGNvbnN0IGxlZnRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSkgPyAnRCgnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1IoJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgICB9XG4gICAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgc3RyaW5ncyB0byBIRUxNXG4gICAgY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCkge1xuICAgICAgICBjb25zdCBtb25vbWVyQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNvdXJjZVBvbHltZXIpO1xuICAgICAgICBjb25zdCBtb25vbWVySGVsbUFycmF5ID0gbW9ub21lckFycmF5Lm1hcCgobW0pID0+IHtcbiAgICAgICAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bGVmdFdyYXBwZXJ9JHttbX0ke3JpZ2h0V3JhcHBlcn1gO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke21vbm9tZXJIZWxtQXJyYXkuam9pbignLicpfSR7cG9zdGZpeH1gO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgc3RyaW5nIHdpdGggU0VQQVJBVE9SL0ZBU1RBIG5vdGF0aW9uIHRvIEhFTE1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VQb2x5bWVyICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbCAgQW4gb3B0aW9uYWwgZ2FwIHN5bWJvbCwgc2V0IHRvXG4gICAgICogZGVmYXVsdCB2YWx1ZXMgKCctJyBmb3IgRkFTVEEgYW5kICcnIGZvciBTRVBBUkFUT1IpIHVubGVzcyBzcGVjaWZpZWRcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgdGFyZ2V0IEhFTE0gc3RyaW5nXG4gICAgICovXG4gICAgY29udmVydFN0cmluZ1RvSGVsbShzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSBjb2x1bW4gdG8gSEVMTVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2xcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAgICovXG4gICAgY29udmVydFRvSGVsbShzb3VyY2VHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJIRUxNXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFNFUEFSQVRPUiBjb2x1bW4gdG8gRkFTVEEgbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gZmFzdGFHYXBTeW1ib2wgT3B0aW9uYWwgZ2FwIHN5bWJvbCBmb3IgRkFTVEFcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICBDb252ZXJ0ZWQgY29sdW1uXG4gICAgICovXG4gICAgY29udmVydFNlcGFyYXRvclRvRmFzdGEoZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yID0gJycsIHRndEdhcFN5bWJvbCA9IG51bGwpIHtcbiAgICAgICAgaWYgKHRndEdhcFN5bWJvbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID9cbiAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEEgOlxuICAgICAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gJycpXG4gICAgICAgICAgICB0Z3RTZXBhcmF0b3IgPSB0aGlzLnNlcGFyYXRvcjtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4odGd0Tm90YXRpb24pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlbG1Qb2x5bWVyID0gdGhpcy5zb3VyY2VDb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgICAgICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCB0Z3RNb25vbWVyc0FycmF5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSkge1xuICAgICAgICAgICAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2godGd0R2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgfVxuICAgIC8qKiBEaXNwYXRjaGVyIG1ldGhvZCBmb3Igbm90YXRpb24gY29udmVyc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndFNlcGFyYXRvciAgIFBvc3NpYmxlIHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgICAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnQodGd0Tm90YXRpb24sIHRndFNlcGFyYXRvciA9IG51bGwpIHtcbiAgICAgICAgLy8gcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBzZXBhcmF0b3IgaXMgbm90IHNwZWNpZmllZCcpO1xuICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZSBpZiAoKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkgJiYgdGhpcy50b0hlbG0odGd0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgICAgICBlbHNlIC8vIHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJtOTBZWFJwYjI0dFkyOXVkbVZ5ZEdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYm05MFlYUnBiMjR0WTI5dWRtVnlkR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkRkRU1zVDBGQlR5eEZRVUZsTEU5QlFVOHNSVUZCUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlV6RkVMR2xHUVVGcFJqdEJRVU5xUml4TlFVRk5MRTlCUVU4c2FVSkJRV2xDTzBsQk5GUTFRaXhaUVVGdFFpeEhRVUZqTzFGQmRsUjZRaXd5UWtGQmMwSXNSMEZCUnp0WlFVTXZRaXhKUVVGSkxFVkJRVVVzUjBGQlJ6dFpRVU5VTEZOQlFWTXNSVUZCUlN4RlFVRkZPMWxCUTJJc1MwRkJTeXhGUVVGRkxFZEJRVWM3VTBGRFdDeERRVUZETzFGQlJVMHNZMEZCVXl4SFFVRjNRaXhKUVVGSkxFTkJRVU03VVVGclZEVkRMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEzcENMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hMUVVGTExFdEJRVXNzU1VGQlNUdFpRVU5vUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFdEJRVXNzUTBGQlF6czdXVUZGTVVJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRRMEZCYlVNc1EwRkJReXhEUVVGRE8xRkJRM1pFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRU5CUVVNN1VVRkRhRVFzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU0zUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhFTEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdTVUZETlVNc1EwRkJRenRKUVROVVJDeEpRVUZqTEZGQlFWRTdVVUZEY0VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eExRVUZMTEVsQlFVazdXVUZEZWtJc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWRHTEVsQlFWa3NWMEZCVnl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTDBRc1NVRkJXU3haUVVGWkxFdEJRV2RDTEU5QlFVOHNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmNFVXNTVUZCVnl4alFVRmpMRXRCUVdVc1QwRkJUeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBSU3hKUVVGWExHZENRVUZuUWl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWNFJTeEpRVUZYTEZOQlFWTTdVVUZEYkVJc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGVFUXNTVUZCU1N4VFFVRlRMRXRCUVVzc1NVRkJTVHRaUVVOd1FpeFBRVUZQTEZOQlFWTXNRMEZCUXpzN1dVRkZha0lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN1NVRkZUU3hQUVVGUExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNZMEZCWXl4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tVc1YwRkJWeXhMUVVGakxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNlVU5CUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJUZEZMRTFCUVUwc1MwRkJZeXhQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZqTEN0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ1UlN4UFFVRlBMRU5CUVVNc1kwRkJkMElzU1VGQllTeFBRVUZQTEdOQlFXTXNhVU5CUVcxQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYaEdMRmRCUVZjc1EwRkJReXhqUVVGM1FpeEpRVUZoTEU5QlFVOHNZMEZCWXl4NVEwRkJkVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYUVjc1RVRkJUU3hEUVVGRExHTkJRWGRDTEVsQlFXRXNUMEZCVHl4alFVRmpMQ3RDUVVGclFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBSaXhMUVVGTExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZNMFVzUzBGQlN5eExRVUZqTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5GTEZOQlFWTXNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ5Uml3MFJFRkJORVE3U1VGRE5VUTdPMDlCUlVjN1NVRkRTeXhwUWtGQmFVSTdVVUZEZGtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRGNFUXNiME5CUVhOQ08yRkJRMjVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUXpkRUxEUkRRVUV3UWp0aFFVTjJRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU40UkN4clEwRkJjVUk3TzFsQlJYSkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTmtSQlFUWkVMRU5CUVVNc1EwRkJRenRKUVVOdVJpeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBzc1dVRkJXU3hEUVVGRExHTkJRWGRDTzFGQlF6TkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eGpRVUZqTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzVlVGQlZTeEhRVUZITEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTNSQ3hoUVVGaE8xRkJRMklzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETzFGQlF6ZERMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRMlFzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUTJJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlEzUkNMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUXpWRExHTkJRV01zUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkRlRU1zUTBGRFJpeERRVUZETzFGQlEwWXNOa05CUVRaRE8xRkJRemRETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhqUVVGakxFTkJRVU1zUlVGQlJUdFpRVU5vUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVOa0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVTnlRaXhsUVVGbExFTkJRVU1zUTBGQlF6dFRRVU53UWp0UlFVTkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTeXgxUWtGQmRVSXNRMEZCUXl4VFFVRnBRaXhGUVVGRkxHbENRVUZuUXl4SlFVRkpPMUZCUTNKR0xFbEJRVWtzWTBGQll5eExRVUZMTEVsQlFVazdXVUZEZWtJc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVWNlF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3h6UTBGQmIwSXNRMEZCUXp0UlFVTjRSQ3h6UkVGQmMwUTdVVUZEZEVRc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyaEVMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU4yUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOc1JDeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEdOQlFXTTdiMEpCUXpGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhUUVVGVExFTkJRVU03WVVGRGFrVTdXVUZEUkN4UFFVRlBMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVNMVF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExHVkJRV1U3VVVGRGNrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGRrTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRM2hDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1F5eFRRVUZUTEVOQlFVTXNRMEZCUXl3MlEwRkJOa003VVVGRk9VUXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVenRaUVVOMFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzWkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzcERMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNNRUpCUVRCQ08xRkJRM2hFTEUxQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExEQkNRVUV3UWp0UlFVTXpSaXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRFUXNRMEZCUXp0SlFVVkVMRzFFUVVGdFJEdEpRVU16UXl4dFFrRkJiVUlzUTBGRGVrSXNZVUZCY1VJc1JVRkRja0lzWlVGQmRVSXNSVUZEZGtJc1RVRkJZeXhGUVVOa0xGZEJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEU5QlFXVTdVVUZGWml4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzWjBKQlFXZENMRWRCUVdFc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRkZPMWxCUTJwRkxFbEJRVWtzUlVGQlJTeExRVUZMTEdWQlFXVTdaMEpCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUTBGQlF6czdaMEpCUlhoRExFOUJRVThzUjBGQlJ5eFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhIUVVGSExFMUJRVTBzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUMEZCVHl4RlFVRkZMRU5CUVVNN1NVRkROVVFzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTU3h0UWtGQmJVSXNRMEZEZUVJc1lVRkJjVUlzUlVGRGNrSXNhMEpCUVdsRExFbEJRVWs3VVVGRmNrTXNTVUZCU1N4bFFVRmxMRXRCUVVzc1NVRkJTVHRaUVVNeFFpeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6RkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1lVRkJZU3hGUVVGRkxHVkJRV1VzUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU01Unl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTeXhoUVVGaExFTkJRVU1zYTBKQlFXbERMRWxCUVVrN1VVRkRla1FzU1VGQlNTeGxRVUZsTEV0QlFVc3NTVUZCU1R0WlFVTXhRaXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJSVEZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03VVVGRk5VVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzTkVKQlFXVXNRMEZCUXp0UlFVTnVSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycEVMRTlCUVU4c1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hsUVVGblFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1dVRkJXU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OUhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMHNzZFVKQlFYVkNMRU5CUVVNc2FVSkJRV2RETEVsQlFVazdVVUZEYkVVc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVWeVJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3c0UWtGQlowSXNRMEZCUXp0UlFVTndSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRjRVFzYzBOQlFYTkRPMWxCUTNSRExFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xbEJRelZFTEUxQlFVMHNhMEpCUVd0Q0xFZEJRV0VzUlVGQlJTeERRVUZETzFsQlEzaERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMjVFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU55UWl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRU5CUVVNN2FVSkJRekZETzNGQ1FVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUXpGQ0xIZERRVUYzUXp0dlFrRkRlRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlEycERMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdjVUpCUVUwN2IwSkJRMHdzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTXZRanRoUVVOR08xbEJRMFFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY2tNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVE3T3pzN096czdPMDlCVVVjN1NVRkRTeXhYUVVGWExFTkJRMnBDTEZkQlFXMUNMRVZCUTI1Q0xHVkJRWFZDTEVWQlFVVXNSVUZEZWtJc1pVRkJPRUlzU1VGQlNUdFJRVVZzUXl4SlFVRkpMRmxCUVZrc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVrSXNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRMjVETEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVMEZEZWtNN1VVRkZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEZRVUZGTzFsQlEyeEZMRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzFGQlJXaERMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhEUVVGRE8xRkJRemRFTEhkRFFVRjNRenRSUVVONFF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJWeXhGUVVGRkxFVkJRVVU3V1VGRE4wSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRMME1zYVVOQlFXbERPMWxCUTJwRExFMUJRVTBzWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03V1VGRGJFUXNUVUZCVFN4blFrRkJaMElzUjBGQllTeEZRVUZGTEVOQlFVTTdXVUZEZEVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMR05CUVdNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUXpsRExFMUJRVTBzU1VGQlNTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGREwwSXNTVUZCU1N4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRE4wTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4RFFVRkRPMmxDUVVOMFF6dHhRa0ZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQmRVSXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnVSU3d5UkVGQk1rUTdiMEpCUXpORUxFMUJRVTBzVDBGQlR5eEhRVUZITEVkQlFVY3NSMEZCUnl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8yOUNRVU5xUXl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2FVSkJRMmhETzNGQ1FVRk5PMjlDUVVOTUxHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZETjBJN1lVRkRSanRaUVVORUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFGQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWUExITkNRVUZ6UWp0UlFVTTFRaXhwUkVGQmFVUTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zV1VGQldTeHpRMEZCYjBJc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4UFFVRlBMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeGxRVUU0UWl4SlFVRkpPMUZCUTNSRkxITkNRVUZ6UWp0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NWMEZCVnp0WlFVTnlReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRE4wTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEZsQlFWa3NTMEZCU3l4SlFVRkpPMWxCUTNoRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaME5CUVdkRExFTkJRVU1zUTBGQlF6dFJRVVZ3UkN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEpRVUZKTzFsQlF6RkZMRTlCUVU4c1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8yRkJReTlETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZEZWtVc1QwRkJUeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdZVUZEZWtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU03V1VGRGRFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVXNRMEZCUXp0aFFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRanRaUVVOMFJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WVVGRGJFTXNhVVJCUVdsRU8xbEJRM0JFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzV1VGQllTeERRVUZETEVOQlFVTTdTVUZEZUVRc1EwRkJRenREUVdOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYm1sdGNHOXlkQ0I3VTNCc2FYUjBaWEpHZFc1akxDQlhaV0pNYjJkdmZTQm1jbTl0SUNjdUxpOTJhV1YzWlhKekwzZGxZaTFzYjJkdkp6dGNibHh1THlvcUlHVnVkVzBnZEhsd1pTQjBieUJ6YVcxd2JHbG1lU0J6WlhSMGFXNW5JRndpZFhObGNpMW1jbWxsYm1Sc2VWd2lJRzV2ZEdGMGFXOXVJR2xtSUc1bFkyVnpjMkZ5ZVNBcUwxeHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdUazlVUVZSSlQwNGdlMXh1SUNCR1FWTlVRU0E5SUNkR1FWTlVRU2NzWEc0Z0lGTkZVRUZTUVZSUFVpQTlJQ2RUUlZCQlVrRlVUMUluTEZ4dUlDQklSVXhOSUQwZ0owaEZURTBuWEc1OVhHNWNiaThxS2lCRGJHRnpjeUJtYjNJZ2FHRnVaR3hwYm1jZ1kyOXVkbVZ5YzJsdmJpQnZaaUJ1YjNSaGRHbHZiaUJ6ZVhOMFpXMXpJR2x1SUUxaFkzSnZiVzlzWldOMWJHVWdZMjlzZFcxdWN5QXFMMXh1Wlhod2IzSjBJR05zWVhOeklFNXZkR0YwYVc5dVEyOXVkbVZ5ZEdWeUlIdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmYzI5MWNtTmxRMjlzZFcxdU9pQkVSeTVEYjJ4MWJXNDdJQzh2SUhSb1pTQmpiMngxYlc0Z2RHOGdZbVVnWTI5dWRtVnlkR1ZrWEc0Z0lIQnlhWFpoZEdVZ1gzTnZkWEpqWlZWdWFYUnpPaUJ6ZEhKcGJtYzdJQzh2SUhWdWFYUnpMQ0J2WmlCMGFHVWdabTl5YlNCbVlYTjBZVHBUUlZFNlRsUXNJR1YwWXk1Y2JpQWdjSEpwZG1GMFpTQmZjMjkxY21ObFRtOTBZWFJwYjI0NklFNVBWRUZVU1U5T095QXZMeUJqZFhKeVpXNTBJRzV2ZEdGMGFXOXVJQ2gzYVhSb2IzVjBJRHBUUlZFNlRsUXNJR1YwWXk0cFhHNGdJSEJ5YVhaaGRHVWdYMlJsWm1GMWJIUkhZWEJUZVcxaWIydzZJSE4wY21sdVp6dGNiaUFnY0hKcGRtRjBaU0JmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMElEMGdlMXh1SUNBZ0lFaEZURTA2SUNjcUp5eGNiaUFnSUNCVFJWQkJVa0ZVVDFJNklDY25MRnh1SUNBZ0lFWkJVMVJCT2lBbkxTY3NYRzRnSUgwN1hHNWNiaUFnY0hKcGRtRjBaU0JmYzNCc2FYUjBaWEk2SUZOd2JHbDBkR1Z5Um5WdVl5QjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQndjbTkwWldOMFpXUWdaMlYwSUhOd2JHbDBkR1Z5S0NrNklGTndiR2wwZEdWeVJuVnVZeUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM053YkdsMGRHVnlJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdkR2hwY3k1ZmMzQnNhWFIwWlhJZ1BTQlhaV0pNYjJkdkxtZGxkRk53YkdsMGRHVnlSbTl5UTI5c2RXMXVLSFJvYVhNdVgzTnZkWEpqWlVOdmJIVnRiaWs3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNOd2JHbDBkR1Z5TzF4dUlDQjlPMXh1WEc1Y2JpQWdjSEpwZG1GMFpTQm5aWFFnYzI5MWNtTmxWVzVwZEhNb0tUb2djM1J5YVc1bklIc2djbVYwZFhKdUlIUm9hWE11WDNOdmRYSmpaVlZ1YVhSek95QjlYRzVjYmlBZ2NISnBkbUYwWlNCblpYUWdjMjkxY21ObFEyOXNkVzF1S0NrNklFUkhMa052YkhWdGJpQjdJSEpsZEhWeWJpQjBhR2x6TGw5emIzVnlZMlZEYjJ4MWJXNDdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSE52ZFhKalpVNXZkR0YwYVc5dUtDazZJRTVQVkVGVVNVOU9JSHNnY21WMGRYSnVJSFJvYVhNdVgzTnZkWEpqWlU1dmRHRjBhVzl1T3lCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCa1pXWmhkV3gwUjJGd1UzbHRZbTlzS0NrNklITjBjbWx1WnlCN0lISmxkSFZ5YmlCMGFHbHpMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNPeUI5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J6WlhCaGNtRjBiM0lvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JqYjI1emRDQnpaWEJoY21GMGIzSWdQU0IwYUdsekxuTnZkWEpqWlVOdmJIVnRiaTVuWlhSVVlXY29KM05sY0dGeVlYUnZjaWNwTzF4dUlDQWdJR2xtSUNoelpYQmhjbUYwYjNJZ0lUMDlJRzUxYkd3cFhHNGdJQ0FnSUNCeVpYUjFjbTRnYzJWd1lYSmhkRzl5TzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVTJWd1lYSmhkRzl5SUc1dmRDQnpaWFFuS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCcGMwWmhjM1JoS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTV6YjNWeVkyVk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1UmtGVFZFRTdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTlRaWEJoY21GMGIzSW9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlU1dmRHRjBhVzl1SUQwOVBTQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSTdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTklaV3h0S0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTV6YjNWeVkyVk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1U0VWTVRUc2dmVnh1WEc0Z0lIQjFZbXhwWXlCMGIwWmhjM1JoS0hSaGNtZGxkRTV2ZEdGMGFXOXVPaUJPVDFSQlZFbFBUaWs2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdGeVoyVjBUbTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGtaQlUxUkJPeUI5WEc1Y2JpQWdjSFZpYkdsaklIUnZVMlZ3WVhKaGRHOXlLSFJoY21kbGRFNXZkR0YwYVc5dU9pQk9UMVJCVkVsUFRpazZJR0p2YjJ4bFlXNGdleUJ5WlhSMWNtNGdkR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMDlJRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVanNnZlZ4dVhHNGdJSEIxWW14cFl5QjBiMGhsYkcwb2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMFlYSm5aWFJPYjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVNFVk1UVHNnZlZ4dVhHNGdJSEIxWW14cFl5QnBjMUp1WVNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzVsYm1SelYybDBhQ2duY201aEp5azdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTkVibUVvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbk52ZFhKalpWVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VaVzVrYzFkcGRHZ29KMlJ1WVNjcE95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVHVndkR2xrWlNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzVsYm1SelYybDBhQ2duY0hRbktUc2dmVnh1WEc0Z0lDOHFLaUJCYzNOdlkybGhkR1VnYm05MFlYUnBiMjRnZEhsd1pYTWdkMmwwYUNCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCMWJtbDBjeUFxTDF4dUlDQXZLaXBjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUazlVUVZSSlQwNTlJQ0FnSUNCT2IzUmhkR2x2YmlCaGMzTnZZMmxoZEdWa0lIZHBkR2dnZEdobElIVnVhWFJ6SUhSNWNHVmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwVTI5MWNtTmxUbTkwWVhScGIyNG9LVG9nVGs5VVFWUkpUMDRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbk52ZFhKalpWVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2duWm1GemRHRW5LU2xjYmlBZ0lDQWdJSEpsZEhWeWJpQk9UMVJCVkVsUFRpNUdRVk5VUVR0Y2JpQWdJQ0JsYkhObElHbG1JQ2gwYUdsekxuTnZkWEpqWlZWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25jMlZ3WVhKaGRHOXlKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0Nkb1pXeHRKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVTRVZNVFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFSb1pTQmpiMngxYlc0Z2FHRnpJSFZ1YVhSeklIUm9ZWFFnWkc4Z2JtOTBJR052Y25KbGMzQnZibVFnZEc4Z1lXNTVJRzV2ZEdGMGFXOXVKeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ2JtVjNJR1Z0Y0hSNUlHTnZiSFZ0YmlCdlppQjBhR1VnYzNCbFkybG1hV1ZrSUc1dmRHRjBhVzl1SUhSNWNHVWdZVzVrSUhSb1pTQnpZVzFsWEc0Z0lDQXFJR3hsYm1kMGFDQmhjeUJ6YjNWeVkyVkRiMngxYlc1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdE9UMVJCVkVsUFRuMGdkR0Z5WjJWMFRtOTBZWFJwYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUk9aWGREYjJ4MWJXNG9kR0Z5WjJWMFRtOTBZWFJwYjI0NklFNVBWRUZVU1U5T0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQmpiMjV6ZENCamIyd2dQU0IwYUdsekxuTnZkWEpqWlVOdmJIVnRianRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0JqYjJ3dWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHNWhiV1VnUFNCMFlYSm5aWFJPYjNSaGRHbHZiaTUwYjB4dmQyVnlRMkZ6WlNncElDc2dKeWduSUNzZ1kyOXNMbTVoYldVZ0t5QW5LU2M3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzVG1GdFpTQTlJR052YkM1a1lYUmhSbkpoYldVdVkyOXNkVzF1Y3k1blpYUlZiblZ6WldST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUM4dklHUjFiVzE1SUdOdlpHVmNiaUFnSUNCamIyNXpkQ0J1WlhkRGIyeDFiVzRnUFNCRVJ5NURiMngxYlc0dVpuSnZiVXhwYzNRb0ozTjBjbWx1Wnljc0lHNWxkME52YkU1aGJXVXNJRzVsZHlCQmNuSmhlU2hzWlc0cExtWnBiR3dvSnljcEtUdGNiaUFnSUNCdVpYZERiMngxYlc0dWMyVnRWSGx3WlNBOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlR0Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRnh1SUNBZ0lDQWdSRWN1VkVGSFV5NVZUa2xVVXl4Y2JpQWdJQ0FnSUhSb2FYTXVjMjkxY21ObFZXNXBkSE11Y21Wd2JHRmpaU2hjYmlBZ0lDQWdJQ0FnZEdocGN5NXpiM1Z5WTJWT2IzUmhkR2x2Ymk1MGIweHZkMlZ5UTJGelpTZ3BMblJ2VTNSeWFXNW5LQ2tzWEc0Z0lDQWdJQ0FnSUhSaGNtZGxkRTV2ZEdGMGFXOXVMblJ2VEc5M1pYSkRZWE5sS0NrdWRHOVRkSEpwYm1jb0tWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrN1hHNGdJQ0FnTHk4Z1ZFOUVUem9nYzNCbFkybG1lU0JqWld4c0lISmxibVJsY21WeWN5Qm1iM0lnWVd4c0lHTmhjMlZ6WEc0Z0lDQWdhV1lnS0hSb2FYTXVkRzlHWVhOMFlTaDBZWEpuWlhST2IzUmhkR2x2YmlrcElIdGNiaUFnSUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1hHNGdJQ0FnSUNBZ0lFUkhMbFJCUjFNdVEwVk1URjlTUlU1RVJWSkZVaXhjYmlBZ0lDQWdJQ0FnSjAxaFkzSnZiVzlzWldOMWJHVW5LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1bGQwTnZiSFZ0Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjUyWlhKMElHRWdUV0ZqY205dGIyeGxZM1ZzWlNCamIyeDFiVzRnWm5KdmJTQkdRVk5VUVNCMGJ5QlRSVkJCVWtGVVQxSWdibTkwWVhScGIyNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY0dGeVlYUnZjaUFnUVNCemNHVmphV1pwWXlCelpYQmhjbUYwYjNJZ2RHOGdZbVVnZFhObFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm1GemRHRkhZWEJUZVcxaWIyd2dJRWRoY0NCemVXMWliMndnYVc0Z1JrRlRWRUVzSUNjdEp5QmllU0JrWldaaGRXeDBYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMGdJQ0FnSUNBZ0lFRWdibVYzSUdOdmJIVnRiaUJwYmlCVFJWQkJVa0ZVVDFJZ2JtOTBZWFJwYjI1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5T2lCemRISnBibWNzSUdaaGMzUmhSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdiblZzYkNrNklFUkhMa052YkhWdGJpQjdYRzRnSUNBZ2FXWWdLR1poYzNSaFIyRndVM2x0WW05c0lEMDlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ1ptRnpkR0ZIWVhCVGVXMWliMndnUFNCMGFHbHpMbVJsWm1GMWJIUkhZWEJUZVcxaWIydzdYRzVjYmlBZ0lDQmpiMjV6ZENCdVpYZERiMngxYlc0Z1BTQjBhR2x6TG1kbGRFNWxkME52YkhWdGJpaE9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSXBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQnVaWGRzZVNCamNtVmhkR1ZrSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ptRnpkR0ZRYjJ4NWJXVnlJRDBnZEdocGN5NXpiM1Z5WTJWRGIyeDFiVzR1WjJWMEtHbGtlQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYa2dQU0IwYUdsekxuTndiR2wwZEdWeUtHWmhjM1JoVUc5c2VXMWxjaWs3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdaaGMzUmhUVzl1YjIxbGNuTkJjbkpoZVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptRnpkR0ZOYjI1dmJXVnljMEZ5Y21GNVcybGRJRDA5UFNCbVlYTjBZVWRoY0ZONWJXSnZiQ2xjYmlBZ0lDQWdJQ0FnSUNCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhsYmFWMGdQU0IwYUdsekxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1VTBWUVFWSkJWRTlTTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR1poYzNSaFRXOXViMjFsY25OQmNuSmhlUzVxYjJsdUtITmxjR0Z5WVhSdmNpazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2JtVjNRMjlzZFcxdUxuTmxkRlJoWnlnbmMyVndZWEpoZEc5eUp5d2djMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdkM0poY0hCbGNpQnpkSEpwYm1keklHWnZjaUJJUlV4TkxDQmtaWEJsYm1ScGJtY2diMjRnZEdobElIUjVjR1VnYjJZZ2RHaGxYRzRnSUNBcUlHMWhZM0p2Ylc5c1pXTjFiR1VnS0hCbGNIUnBaR1VzSUVST1FTd2dVazVCS1Z4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kYlhYMGdRWEp5WVhrZ2IyWWdkM0poY0hCbGNuTmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwU0dWc2JWZHlZWEJ3WlhKektDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGdnUFNBb2RHaHBjeTVwYzBSdVlTZ3BLU0EvSUNkRVRrRXhleWNnT2x4dUlDQWdJQ0FnS0hSb2FYTXVhWE5TYm1Fb0tTa2dQeUFuVWs1Qk1Yc25JRHBjYmlBZ0lDQWdJQ0FnS0hSb2FYTXVhWE5RWlhCMGFXUmxLQ2twSUQ4Z0oxQkZVRlJKUkVVeGV5Y2dPbHh1SUNBZ0lDQWdJQ0FnSUNkVmJtdHViM2R1SnpzZ0x5OGdkR2hwY3lCallYTmxJSE5vYjNWc1pDQmlaU0JvWVc1a2JHVmtJR0Z6SUdWNFkyVndkR2x2Ym1Gc1hHNWNiaUFnSUNCcFppQW9jSEpsWm1sNElEMDlQU0FuVlc1cmJtOTNiaWNwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMDVsYVhSb1pYSWdjR1Z3ZEdsa1pTd2dibTl5SUc1MVkyeGxiM1JwWkdVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhCdmMzUm1hWGdnUFNBbmZTUWtKQ2M3WEc0Z0lDQWdZMjl1YzNRZ2JHVm1kRmR5WVhCd1pYSWdQU0FvZEdocGN5NXBjMFJ1WVNncEtTQS9JQ2RFS0NjZ09seHVJQ0FnSUNBZ0tIUm9hWE11YVhOU2JtRW9LU2tnUHlBblVpZ25JRG9nSnljN0lDOHZJRzV2SUhkeVlYQndaWElnWm05eUlIQmxjSFJwWkdWelhHNGdJQ0FnWTI5dWMzUWdjbWxuYUhSWGNtRndjR1Z5SUQwZ0tIUm9hWE11YVhORWJtRW9LU0I4ZkNCMGFHbHpMbWx6VW01aEtDa3BJRDhnSnlsUUp5QTZJQ2NuT3lBdkx5QnVieUIzY21Gd2NHVnlJR1p2Y2lCd1pYQjBhV1JsYzF4dUlDQWdJSEpsZEhWeWJpQmJjSEpsWm1sNExDQnNaV1owVjNKaGNIQmxjaXdnY21sbmFIUlhjbUZ3Y0dWeUxDQndiM04wWm1sNFhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdadmNpQmpiMjUyWlhKMGFXNW5JSE4wY21sdVozTWdkRzhnU0VWTVRWeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlViMGhsYkcxSVpXeHdaWElvWEc0Z0lDQWdjMjkxY21ObFVHOXNlVzFsY2pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE52ZFhKalpVZGhjRk41YldKdmJEb2djM1J5YVc1bkxGeHVJQ0FnSUhCeVpXWnBlRG9nYzNSeWFXNW5MRnh1SUNBZ0lHeGxablJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NtbG5hSFJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NHOXpkR1pwZURvZ2MzUnlhVzVuWEc0Z0lDazZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYlc5dWIyMWxja0Z5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2loemIzVnlZMlZRYjJ4NWJXVnlLVHRjYmlBZ0lDQmpiMjV6ZENCdGIyNXZiV1Z5U0dWc2JVRnljbUY1T2lCemRISnBibWRiWFNBOUlHMXZibTl0WlhKQmNuSmhlUzV0WVhBb0tHMXRPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiU0E5UFQwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtWVhWc2RFZGhjRk41YldKdmJITkVhV04wTGtoRlRFMDdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJnSkh0c1pXWjBWM0poY0hCbGNuMGtlMjF0ZlNSN2NtbG5hSFJYY21Gd2NHVnlmV0E3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHQWtlM0J5WldacGVIMGtlMjF2Ym05dFpYSklaV3h0UVhKeVlYa3VhbTlwYmlnbkxpY3BmU1I3Y0c5emRHWnBlSDFnTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZiblpsY25RZ1lTQnpkSEpwYm1jZ2QybDBhQ0JUUlZCQlVrRlVUMUl2UmtGVFZFRWdibTkwWVhScGIyNGdkRzhnU0VWTVRWeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjMjkxY21ObFVHOXNlVzFsY2lBZ1FTQnpkSEpwYm1jZ2RHOGdZbVVnWTI5dWRtVnlkR1ZrWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzSUNCQmJpQnZjSFJwYjI1aGJDQm5ZWEFnYzNsdFltOXNMQ0J6WlhRZ2RHOWNiaUFnSUNvZ1pHVm1ZWFZzZENCMllXeDFaWE1nS0NjdEp5Qm1iM0lnUmtGVFZFRWdZVzVrSUNjbklHWnZjaUJUUlZCQlVrRlVUMUlwSUhWdWJHVnpjeUJ6Y0dWamFXWnBaV1JjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQWdWR2hsSUhSaGNtZGxkQ0JJUlV4TklITjBjbWx1WjF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmJuWmxjblJUZEhKcGJtZFViMGhsYkcwb1hHNGdJQ0FnYzI5MWNtTmxVRzlzZVcxbGNqb2djM1J5YVc1bkxGeHVJQ0FnSUhOdmRYSmpaVWRoY0ZONWJXSnZiRG9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd4Y2JpQWdLU0E2SUhOMGNtbHVaeUI3WEc0Z0lDQWdhV1lnS0hOdmRYSmpaVWRoY0ZONWJXSnZiQ0E5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSE52ZFhKalpVZGhjRk41YldKdmJDQTlJSFJvYVhNdVpHVm1ZWFZzZEVkaGNGTjViV0p2YkR0Y2JpQWdJQ0JqYjI1emRDQmJjSEpsWm1sNExDQnNaV1owVjNKaGNIQmxjaXdnY21sbmFIUlhjbUZ3Y0dWeUxDQndiM04wWm1sNFhTQTlJSFJvYVhNdVoyVjBTR1ZzYlZkeVlYQndaWEp6S0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEZSdlNHVnNiVWhsYkhCbGNpaHpiM1Z5WTJWUWIyeDViV1Z5TENCemIzVnlZMlZIWVhCVGVXMWliMndzSUhCeVpXWnBlQ3dnYkdWbWRGZHlZWEJ3WlhJc0lISnBaMmgwVjNKaGNIQmxjaXdnY0c5emRHWnBlQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXVkbVZ5ZENCaElHTnZiSFZ0YmlCMGJ5QklSVXhOWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuSUh3Z2JuVnNiSDBnYzI5MWNtTmxSMkZ3VTNsdFltOXNYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZMjl1ZG1WeWRGUnZTR1ZzYlNoemIzVnlZMlZIWVhCVGVXMWliMnc2SUhOMGNtbHVaeUI4SUc1MWJHd2dQU0J1ZFd4c0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQnBaaUFvYzI5MWNtTmxSMkZ3VTNsdFltOXNJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdjMjkxY21ObFIyRndVM2x0WW05c0lEMGdkR2hwY3k1a1pXWmhkV3gwUjJGd1UzbHRZbTlzTzF4dVhHNGdJQ0FnWTI5dWMzUWdXM0J5WldacGVDd2diR1ZtZEZkeVlYQndaWElzSUhKcFoyaDBWM0poY0hCbGNpd2djRzl6ZEdacGVGMGdQU0IwYUdsekxtZGxkRWhsYkcxWGNtRndjR1Z5Y3lncE8xeHVYRzRnSUNBZ1kyOXVjM1FnYm1WM1EyOXNkVzF1SUQwZ2RHaHBjeTVuWlhST1pYZERiMngxYlc0b1RrOVVRVlJKVDA0dVNFVk1UU2s3WEc0Z0lDQWdMeThnWVhOemFXZHVJSFJvWlNCMllXeDFaWE1nZEc4Z2RHaGxJR1Z0Y0hSNUlHTnZiSFZ0Ymx4dUlDQWdJRzVsZDBOdmJIVnRiaTVwYm1sMEtDaHBaSGc2SUc1MWJXSmxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzI5MWNtTmxVRzlzZVcxbGNpQTlJSFJvYVhNdWMyOTFjbU5sUTI5c2RXMXVMbWRsZENocFpIZ3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRlJ2U0dWc2JVaGxiSEJsY2loemIzVnlZMlZRYjJ4NWJXVnlMQ0J6YjNWeVkyVkhZWEJUZVcxaWIyd2hMQ0J3Y21WbWFYZ3NJR3hsWm5SWGNtRndjR1Z5TENCeWFXZG9kRmR5WVhCd1pYSXNJSEJ2YzNSbWFYZ3BPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQlRSVkJCVWtGVVQxSWdZMjlzZFcxdUlIUnZJRVpCVTFSQklHNXZkR0YwYVc5dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ1ptRnpkR0ZIWVhCVGVXMWliMndnVDNCMGFXOXVZV3dnWjJGd0lITjViV0p2YkNCbWIzSWdSa0ZUVkVGY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNBZ1EyOXVkbVZ5ZEdWa0lHTnZiSFZ0Ymx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCamIyNTJaWEowVTJWd1lYSmhkRzl5Vkc5R1lYTjBZU2htWVhOMFlVZGhjRk41YldKdmJEb2djM1J5YVc1bklId2diblZzYkNBOUlHNTFiR3dwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUdsbUlDaG1ZWE4wWVVkaGNGTjViV0p2YkNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUdaaGMzUmhSMkZ3VTNsdFltOXNJRDBnZEdocGN5NWZaR1ZtWVhWc2RFZGhjRk41YldKdmJITkVhV04wTGtaQlUxUkJPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzZFcxdUlEMGdkR2hwY3k1blpYUk9aWGREYjJ4MWJXNG9UazlVUVZSSlQwNHVSa0ZUVkVFcE8xeHVJQ0FnSUM4dklHRnpjMmxuYmlCMGFHVWdkbUZzZFdWeklIUnZJSFJvWlNCbGJYQjBlU0JqYjJ4MWJXNWNiaUFnSUNCdVpYZERiMngxYlc0dWFXNXBkQ2dvYVdSNE9pQnVkVzFpWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElITmxjR0Z5WVhSdmNsQnZiSGx0WlhJZ1BTQjBhR2x6TG5OdmRYSmpaVU52YkhWdGJpNW5aWFFvYVdSNEtUdGNiaUFnSUNBZ0lDOHZJR2wwWlcxeklHTmhiaUJpWlNCdGIyNXZiV1Z5Y3lCdmNpQnpaWEJoY21GMGIzSnpYRzRnSUNBZ0lDQmpiMjV6ZENCelpYQmhjbUYwYjNKSmRHVnRjMEZ5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2loelpYQmhjbUYwYjNKUWIyeDViV1Z5S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR1poYzNSaFRXOXViMjFsY25OQmNuSmhlVG9nYzNSeWFXNW5XMTBnUFNCYlhUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djMlZ3WVhKaGRHOXlTWFJsYlhOQmNuSmhlUzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCcGRHVnRJRDBnYzJWd1lYSmhkRzl5U1hSbGJYTkJjbkpoZVZ0cFhUdGNiaUFnSUNBZ0lDQWdhV1lnS0dsMFpXMHViR1Z1WjNSb0lEMDlQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb1ptRnpkR0ZIWVhCVGVXMWliMndoS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBkR1Z0TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCMGFHVWdZMkZ6WlNCdlppQmhJRzExYkhScExXTm9ZWEpoWTNSbGNpQnRiMjV2YldWeVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXOXViMjFsY2lBOUlDZGJKeUFySUdsMFpXMGdLeUFuWFNjN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb2JXOXViMjFsY2lrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb2FYUmxiU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJtWVhOMFlVMXZibTl0WlhKelFYSnlZWGt1YW05cGJpZ25KeWs3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkME52YkhWdGJqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUFnUTI5dWRtVnlkQ0JJUlV4TklHTnZiSFZ0YmlCMGJ5QkdRVk5VUVM5VFJWQkJVa0ZVVDFKY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUm5kRTV2ZEdGMGFXOXVJQ0FnSUZSaGNtZGxkQ0J1YjNSaGRHbHZiam9nUmtGVFZFRWdiM0lnVTBWUVFWSkJWRTlTWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBaM1JUWlhCaGNtRjBiM0lnSUNCUGNIUnBiMjVoYkNCMFlYSm5aWFFnYzJWd1lYSmhkRzl5SUNobWIzSWdTRVZNVFNBdFBseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJHeDlJSFJuZEVkaGNGTjViV0p2YkNBZ0lFOXdkR2x2Ym1Gc0lIUmhjbWRsZENCbllYQWdjM2x0WW05c1hHNGdJQ0FxSUZORlVFRlNRVlJQVWlsY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJJWld4dEtGeHVJQ0FnSUhSbmRFNXZkR0YwYVc5dU9pQnpkSEpwYm1jc1hHNGdJQ0FnZEdkMFUyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ1BTQW5KeXhjYmlBZ0lDQjBaM1JIWVhCVGVXMWliMnc2SUhOMGNtbHVaeUI4SUc1MWJHd2dQU0J1ZFd4c1hHNGdJQ2s2SUVSSExrTnZiSFZ0YmlCN1hHNGdJQ0FnYVdZZ0tIUm5kRWRoY0ZONWJXSnZiQ0E5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdkMFIyRndVM2x0WW05c0lEMGdLSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpQmhjeUJPVDFSQlZFbFBUaWtwSUQ5Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExrWkJVMVJCSURwY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExsTkZVRUZTUVZSUFVqdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1MGIxTmxjR0Z5WVhSdmNpaDBaM1JPYjNSaGRHbHZiaUJoY3lCT1QxUkJWRWxQVGlrZ0ppWWdkR2QwVTJWd1lYSmhkRzl5SUQwOVBTQW5KeWxjYmlBZ0lDQWdJSFJuZEZObGNHRnlZWFJ2Y2lBOUlIUm9hWE11YzJWd1lYSmhkRzl5TzF4dVhHNGdJQ0FnWTI5dWMzUWdibVYzUTI5c2RXMXVJRDBnZEdocGN5NW5aWFJPWlhkRGIyeDFiVzRvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQmxiWEIwZVNCamIyeDFiVzVjYmlBZ0lDQnVaWGREYjJ4MWJXNHVhVzVwZENnb2FXUjRPaUJ1ZFcxaVpYSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2hsYkcxUWIyeDViV1Z5SUQwZ2RHaHBjeTV6YjNWeVkyVkRiMngxYlc0dVoyVjBLR2xrZUNrN1hHNGdJQ0FnSUNBdkx5QnBkR1Z0Y3lCallXNGdZbVVnYlc5dWIyMWxjbk1nYjNJZ2FHVnNiWE5jYmlBZ0lDQWdJR052Ym5OMElHaGxiRzFKZEdWdGMwRnljbUY1SUQwZ2RHaHBjeTV6Y0d4cGRIUmxjaWhvWld4dFVHOXNlVzFsY2lrN1hHNGdJQ0FnSUNCamIyNXpkQ0IwWjNSTmIyNXZiV1Z5YzBGeWNtRjVPaUJ6ZEhKcGJtZGJYU0E5SUZ0ZE8xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQm9aV3h0U1hSbGJYTkJjbkpoZVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkR1Z0SUQwZ2FHVnNiVWwwWlcxelFYSnlZWGxiYVYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdElEMDlQU0IwYUdsekxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1U0VWTVRTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSbmRFMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaDBaM1JIWVhCVGVXMWliMndoS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5SdlJtRnpkR0VvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBJQ1ltSUdsMFpXMHViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJvWlNCallYTmxJRzltSUdFZ2JYVnNkR2t0WTJoaGNtRmpkR1Z5SUcxdmJtOXRaWElnWTI5dWRtVnlkR1ZrSUhSdklFWkJVMVJCWEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYlc5dWIyMWxjaUE5SUNkYkp5QXJJR2wwWlcwZ0t5QW5YU2M3WEc0Z0lDQWdJQ0FnSUNBZ2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1d2RYTm9LRzF2Ym05dFpYSXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhSbmRFMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaHBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSbmRFMXZibTl0WlhKelFYSnlZWGt1YW05cGJpaDBaM1JUWlhCaGNtRjBiM0lwTzF4dUlDQWdJSDBwTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGREYjJ4MWJXNDdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUklaV3h0Vkc5VFpYQmhjbUYwYjNJb0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQXZMeUJVVDBSUE9pQnBiWEJzWlcxbGJuUmhkR2x2Y21WMGRYSnVJSFJvYVhNdVoyVjBUbVYzUTI5c2RXMXVLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVpazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1JHbHpjR0YwWTJobGNpQnRaWFJvYjJRZ1ptOXlJRzV2ZEdGMGFXOXVJR052Ym5abGNuTnBiMjVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0T1QxUkJWRWxQVG4wZ2RHRnlaMlYwVG05MFlYUnBiMjRnSUNCT2IzUmhkR2x2YmlCM1pTQjNZVzUwSUhSdklHTnZiblpsY25RZ2RHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0IwWjNSVFpYQmhjbUYwYjNJZ0lDQlFiM056YVdKc1pTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkQ2gwWjNST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0c0lIUm5kRk5sY0dGeVlYUnZjam9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJSEJ2YzNOcFlteGxJR1Y0WTJWd2RHbHZibk5jYmlBZ0lDQnBaaUFvZEdocGN5NXpiM1Z5WTJWT2IzUmhkR2x2YmlBOVBUMGdkR2QwVG05MFlYUnBiMjRwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KM1JuZENCdWIzUmhkR2x2YmlCcGN5QnBiblpoYkdsa0p5azdYRzRnSUNBZ2FXWWdLSFJvYVhNdWRHOVRaWEJoY21GMGIzSW9kR2QwVG05MFlYUnBiMjRwSUNZbUlIUm5kRk5sY0dGeVlYUnZjaUE5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25kR2QwSUhObGNHRnlZWFJ2Y2lCcGN5QnViM1FnYzNCbFkybG1hV1ZrSnlrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1cGMwWmhjM1JoS0NrZ0ppWWdkR2hwY3k1MGIxTmxjR0Z5WVhSdmNpaDBaM1JPYjNSaGRHbHZiaWtnSmlZZ2RHZDBVMlZ3WVhKaGRHOXlJQ0U5UFNCdWRXeHNLVnh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRVpoYzNSaFZHOVRaWEJoY21GMGIzSW9kR2QwVTJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0JsYkhObElHbG1JQ2dvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1NBbUppQjBhR2x6TG5SdlNHVnNiU2gwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFZHOUlaV3h0S0NrN1hHNGdJQ0FnWld4elpTQnBaaUFvZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwSUNZbUlIUm9hWE11ZEc5R1lYTjBZU2gwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFUyVndZWEpoZEc5eVZHOUdZWE4wWVNncE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa2dKaVlnZEdocGN5NTBiMFpoYzNSaEtIUm5kRTV2ZEdGMGFXOXVLU2tnTHk4Z2RHaGxJR05oYzJVZ2IyWWdTRVZNVFZ4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVobGJHMG9kR2QwVG05MFlYUnBiMjRwTzF4dUlDQWdJR1ZzYzJVZ0x5OGdkR2hwY3k1cGMwaGxiRzBvS1NBbUppQjBhR2x6TG5SdlUyVndZWEpoZEc5eUtIUm5kRTV2ZEdGMGFXOXVLVnh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRWhsYkcwb2RHZDBUbTkwWVhScGIyNHNJSFJuZEZObGNHRnlZWFJ2Y2lFcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLR052YkRvZ1JFY3VRMjlzZFcxdUtTQjdYRzRnSUNBZ2RHaHBjeTVmYzI5MWNtTmxRMjlzZFcxdUlEMGdZMjlzTzF4dUlDQWdJR052Ym5OMElIVnVhWFJ6SUQwZ2RHaHBjeTVmYzI5MWNtTmxRMjlzZFcxdUxuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMDdYRzRnSUNBZ2FXWWdLSFZ1YVhSeklDRTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ2RHaHBjeTVmYzI5MWNtTmxWVzVwZEhNZ1BTQjFibWwwY3p0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFWdWFYUnpJR0Z5WlNCdWIzUWdjM0JsWTJsbWFXVmtJR2x1SUdOdmJIVnRiaWNwTzF4dUlDQWdJSFJvYVhNdVgzTnZkWEpqWlU1dmRHRjBhVzl1SUQwZ2RHaHBjeTVuWlhSVGIzVnlZMlZPYjNSaGRHbHZiaWdwTzF4dUlDQWdJSFJvYVhNdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ3Z1BTQW9kR2hwY3k1cGMwWmhjM1JoS0NrcElEOGdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkhORWFXTjBMa1pCVTFSQklEcGNiaUFnSUNBZ0lDaDBhR2x6TG1selNHVnNiU2dwS1NBL0lIUm9hWE11WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUlSVXhOSURwY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExsTkZVRUZTUVZSUFVqdGNiaUFnZlZ4dWZWeHVJbDE5IiwiLy8gRGF0YSBzdHJ1Y3R1cmVzIGZvciBWLURvbWFpbiByZWdpb25zIG9mIGFudGlib2RpZXNcbmV4cG9ydCB2YXIgVmRSZWdpb25UeXBlO1xuKGZ1bmN0aW9uIChWZFJlZ2lvblR5cGUpIHtcbiAgICBWZFJlZ2lvblR5cGVbXCJVbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiRlJcIl0gPSBcImZyYW1ld29ya1wiO1xuICAgIFZkUmVnaW9uVHlwZVtcIkNEUlwiXSA9IFwiY2RyXCI7XG59KShWZFJlZ2lvblR5cGUgfHwgKFZkUmVnaW9uVHlwZSA9IHt9KSk7XG4vKiogRGVzY3JpYmVzIFYtRE9NQUlOIChJRyBhbmQgVFIpIHJlZ2lvbiAob2YgbXVsdGlwbGUgYWxpZ25tZW50KVxuICogaHR0cHM6Ly93d3cuaW1ndC5vcmcvSU1HVFNjaWVudGlmaWNDaGFydC9OdW1iZXJpbmcvSU1HVElHVkxzdXBlcmZhbWlseS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBWZFJlZ2lvbiB7XG4gICAgLyoqXG4gICAgICogc3RhcnQgYW5kIHBvc2l0aW9uIGFyZSBzdHJpbmdzIGJlY2F1c2UgdGhleSBjb3JyZXNwb25kIHRvIHBvc2l0aW9uIG5hbWVzIGFzIGNvbHVtbiBuYW1lcyBpbiBBTkFSQ0kgb3V0cHV0XG4gICAgICogQHBhcmFtIHtWZFJlZ2lvblR5cGV9IHR5cGUgIFR5cGUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBOYW1lIG9mIHRoZSByZWdpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhaW5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JkZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zaXRpb25TdGFydE5hbWUgIFJlZ2lvbiBzdGFydCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvbkVuZE5hbWUgIFJlZ2lvbiBlbmQgcG9zaXRpb24gKGluY2x1c2l2ZSlcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCBjaGFpbiwgb3JkZXIsIHBvc2l0aW9uU3RhcnROYW1lLCBwb3NpdGlvbkVuZE5hbWUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jaGFpbiA9IGNoYWluO1xuICAgICAgICB0aGlzLm9yZGVyID0gb3JkZXI7XG4gICAgICAgIHRoaXMucG9zaXRpb25TdGFydE5hbWUgPSBwb3NpdGlvblN0YXJ0TmFtZTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVuZE5hbWUgPSBwb3NpdGlvbkVuZE5hbWU7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1RdGNtVm5hVzl1Y3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblprTFhKbFoybHZibk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNjVVJCUVhGRU8wRkJSWEpFTEUxQlFVMHNRMEZCVGl4SlFVRlpMRmxCU1ZnN1FVRktSQ3hYUVVGWkxGbEJRVms3U1VGRGRFSXNiVU5CUVcxQ0xFTkJRVUU3U1VGRGJrSXNaME5CUVdkQ0xFTkJRVUU3U1VGRGFFSXNNa0pCUVZjc1EwRkJRVHRCUVVOaUxFTkJRVU1zUlVGS1Z5eFpRVUZaTEV0QlFWb3NXVUZCV1N4UlFVbDJRanRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4UFFVRlBMRkZCUVZFN1NVRlJia0k3T3pzN096czdPMDlCVVVjN1NVRkRTQ3haUVVGWkxFbEJRV3RDTEVWQlFVVXNTVUZCV1N4RlFVRkZMRXRCUVdFc1JVRkJSU3hMUVVGaExFVkJRM2hGTEdsQ1FVRjVRaXhGUVVGRkxHVkJRWFZDTzFGQlEyeEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF6dFJRVU16UXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExHVkJRV1VzUTBGQlF6dEpRVU42UXl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZMeUJFWVhSaElITjBjblZqZEhWeVpYTWdabTl5SUZZdFJHOXRZV2x1SUhKbFoybHZibk1nYjJZZ1lXNTBhV0p2WkdsbGMxeHVYRzVsZUhCdmNuUWdaVzUxYlNCV1pGSmxaMmx2YmxSNWNHVWdlMXh1SUNCVmJtdHViM2R1SUQwZ0ozVnVhMjV2ZDI0bkxGeHVJQ0JHVWlBOUlDZG1jbUZ0WlhkdmNtc25MRnh1SUNCRFJGSWdQU0FuWTJSeUp5eGNibjFjYmx4dUx5b3FJRVJsYzJOeWFXSmxjeUJXTFVSUFRVRkpUaUFvU1VjZ1lXNWtJRlJTS1NCeVpXZHBiMjRnS0c5bUlHMTFiSFJwY0d4bElHRnNhV2R1YldWdWRDbGNiaUFxSUdoMGRIQnpPaTh2ZDNkM0xtbHRaM1F1YjNKbkwwbE5SMVJUWTJsbGJuUnBabWxqUTJoaGNuUXZUblZ0WW1WeWFXNW5MMGxOUjFSSlIxWk1jM1Z3WlhKbVlXMXBiSGt1YUhSdGJGeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVJTWldkcGIyNGdlMXh1SUNCMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVN1hHNGdJRzVoYldVNklITjBjbWx1Wnp0Y2JpQWdZMmhoYVc0NklITjBjbWx1Wnp0Y2JpQWdiM0prWlhJNklHNTFiV0psY2p0Y2JpQWdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVTZJSE4wY21sdVp6dGNiaUFnY0c5emFYUnBiMjVGYm1ST1lXMWxPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlITjBZWEowSUdGdVpDQndiM05wZEdsdmJpQmhjbVVnYzNSeWFXNW5jeUJpWldOaGRYTmxJSFJvWlhrZ1kyOXljbVZ6Y0c5dVpDQjBieUJ3YjNOcGRHbHZiaUJ1WVcxbGN5QmhjeUJqYjJ4MWJXNGdibUZ0WlhNZ2FXNGdRVTVCVWtOSklHOTFkSEIxZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMVprVW1WbmFXOXVWSGx3WlgwZ2RIbHdaU0FnVkhsd1pTQnZaaUIwYUdVZ2NtVm5hVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVZVzFsSUNCT1lXMWxJRzltSUhSb1pTQnlaV2RwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR05vWVdsdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2Y21SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVUZEdGeWRFNWhiV1VnSUZKbFoybHZiaUJ6ZEdGeWRDQndiM05wZEdsdmJpQW9hVzVqYkhWemFYWmxLVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NHOXphWFJwYjI1RmJtUk9ZVzFsSUNCU1pXZHBiMjRnWlc1a0lIQnZjMmwwYVc5dUlDaHBibU5zZFhOcGRtVXBYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVc0lHNWhiV1U2SUhOMGNtbHVaeXdnWTJoaGFXNDZJSE4wY21sdVp5d2diM0prWlhJNklHNTFiV0psY2l4Y2JpQWdJQ0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVG9nYzNSeWFXNW5MQ0J3YjNOcGRHbHZia1Z1WkU1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11ZEhsd1pTQTlJSFI1Y0dVN1hHNGdJQ0FnZEdocGN5NXVZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TG1Ob1lXbHVJRDBnWTJoaGFXNDdYRzRnSUNBZ2RHaHBjeTV2Y21SbGNpQTlJRzl5WkdWeU8xeHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdQU0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVHRjYmlBZ0lDQjBhR2x6TG5CdmMybDBhVzl1Ulc1a1RtRnRaU0E5SUhCdmMybDBhVzl1Ulc1a1RtRnRaVHRjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQgeyBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tICcuLi91bmtub3duJztcbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBuZXcgREcuUG9pbnQoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCwgZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wKTtcbn07XG5ERy5SZWN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdCA8PSB4ICYmIHggPD0gdGhpcy5yaWdodCAmJiB0aGlzLnRvcCA8PSB5ICYmIHkgPD0gdGhpcy5ib3R0b207XG59O1xuZXhwb3J0IGNsYXNzIFBvc2l0aW9uTW9ub21lckluZm8ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBuZXcgREcuUmVjdCgwLCAwLCAwLCAwKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9zaXRpb25JbmZvIHtcbiAgICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHBvc2l0aW9uICgnMTExQScsICcxMTEuMScsIGV0YylcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgICAgICB0aGlzLnJvd0NvdW50ID0gMDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgV2ViTG9nbyBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IC0xO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lID0gQ29sb3JTY2hlbWVzW051Y2xlb3RpZGVzV2ViTG9nby5yZXNpZHVlc1NldF07XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICB0aGlzLmF4aXNIZWlnaHQgPSAxMjtcbiAgICAgICAgdGhpcy5zZXFDb2wgPSBudWxsO1xuICAgICAgICB0aGlzLnNwbGl0dGVyID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSBtYXhMZW5ndGg6IG51bWJlciA9IDEwMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gMDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLnZpZXdTdWJzID0gW107XG4gICAgICAgIHRoaXMudmlld2VySWQgPSBXZWJMb2dvLnZpZXdlckNvdW50O1xuICAgICAgICBXZWJMb2dvLnZpZXdlckNvdW50ICs9IDE7XG4gICAgICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggPSB0aGlzLmZsb2F0KCdwb3NpdGlvbldpZHRoJywgMTYgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogNCwgbWF4OiA2NCwgcG9zdGZpeDogJ3B4J30qLyk7XG4gICAgICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWluSGVpZ2h0JywgNTAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogMjUwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLmZsb2F0KCdtYXhIZWlnaHQnLCAxMDAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogNTAwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMgPSB0aGlzLmJvb2woJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcycsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnN0cmluZygnc2VxdWVuY2VDb2x1bW5OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnc3RhcnRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnZW5kUG9zaXRpb25OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuZml4V2lkdGggPSB0aGlzLmJvb2woJ2ZpeFdpZHRoJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy5zdHJpbmcoJ3ZlcnRpY2FsQWxpZ25tZW50JywgJ21pZGRsZScsIHsgY2hvaWNlczogWyd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbSddIH0pO1xuICAgICAgICB0aGlzLmhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygnaG9yaXpvbnRhbEFsaWdubWVudCcsICdjZW50ZXInLCB7IGNob2ljZXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5maXRBcmVhID0gdGhpcy5ib29sKCdmaXRBcmVhJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2hyaW5rRW1wdHlUYWlsID0gdGhpcy5ib29sKCdzaHJpbmtFbXB0eVRhaWwnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5za2lwRW1wdHlQb3NpdGlvbnMgPSB0aGlzLmJvb2woJ3NraXBFbXB0eVBvc2l0aW9ucycsIGZhbHNlKTtcbiAgICB9XG4gICAgLyoqIEZvciBzdGFydFBvc2l0aW9uIGVxdWFscyB0byBlbmRQb3NpdGlvbiBMZW5ndGggaXMgMSAqL1xuICAgIGdldCBMZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2ViTG9nbyBzZWNvbmQgaW5pdGlhbGl6YXRpb24hJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmhlbHBVcmwgPSAnL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvd2ViLWxvZ28ubWQnO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdWkuZGl2KCdObyBtZXNzYWdlJyk7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdWkuY2FudmFzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVpLmRpdihbdGhpcy5tc2dIb3N0LCB0aGlzLmNhbnZhc10pO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIgPSB1aS5yYW5nZVNsaWRlcigwLCAyMCwgMiwgNSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTJweCc7XG4gICAgICAgICAgICBjb25zdCBnZXRNb25vbWVyID0gKHApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqUG9zID0gTWF0aC5mbG9vcihwLnggLyB0aGlzLl9wb3NpdGlvbldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAgICAgICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gdGhpcy5zdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZW92ZXInKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudCh0aGlzLmNhbnZhcywgJ21vdXNlbW92ZScpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgdGhpcy5zcGxpdHRlciAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IHRoaXMuc3BsaXR0ZXIoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9LCBhcmdzLnggKyAxNiwgYXJncy55ICsgMTYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCBlLmJ1dHRvbiAhPSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG4gICAgICAgICAgICAgICAgLy8gcHJldmVudHMgZGVzZWxlY3QgYWxsIHJvd3MgaWYgd2UgbWlzcyBtb25vbWVyIGJvdW5kc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiB0aGlzLnNwbGl0dGVyICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmluaXQoKGlSb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcU0gPSBzZXEgPyB0aGlzLnNwbGl0dGVyKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5zbGlkZXIucm9vdCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Sb290U2l6ZUNoYW5nZWQoKSBgICtcbiAgICAgICAgLy8gICBgcm9vdC53aWR0aD0ke3RoaXMucm9vdC5jbGllbnRXaWR0aH0sIHJvb3QuaGVpZ2h0PSR7dGhpcy5yb290LmNsaWVudEhlaWdodH0sIGAgK1xuICAgICAgICAvLyAgIGBjYW52YXMud2lkdGg9JHt0aGlzLmNhbnZhcy53aWR0aH0sIGNhbnZhcy5oZWlnaHQ9JHt0aGlzLmNhbnZhcy5oZWlnaHR9IC5gKTtcbiAgICB9XG4gICAgLyoqIEFzc2lnbnMge0BsaW5rIHNlcUNvbH0gYW5kIHtAbGluayBjcH0gYmFzZWQgb24ge0BsaW5rIHNlcXVlbmNlQ29sdW1uTmFtZX0gYW5kIGNhbGxzIHtAbGluayByZW5kZXJ9KCkuXG4gICAgICovXG4gICAgdXBkYXRlU2VxQ29sKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPyB0aGlzLmRhdGFGcmFtZS5jb2wodGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSBXZWJMb2dvLnBpY2tVcFNlcUNvbDIodGhpcy5kYXRhRnJhbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID0gdGhpcy5zZXFDb2wgPyB0aGlzLnNlcUNvbC5uYW1lIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5zZXFDb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKHRoaXMuc2VxQ29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICB1cGRhdGVQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXFDb2wpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBjYXRlZ29yaWVzO1xuICAgICAgICBpZiAodGhpcy5zaHJpbmtFbXB0eVRhaWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KEFycmF5LmZyb20oQXJyYXkoaW5kaWNlcy5sZW5ndGgpLmtleXMoKSkubWFwKChpKSA9PiB0aGlzLnNlcUNvbC5nZXQoaW5kaWNlc1tpXSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gdGhpcy5zZXFDb2wuY2F0ZWdvcmllcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi5jYXRlZ29yaWVzLm1hcCgocykgPT4gcyAhPT0gbnVsbCA/IHRoaXMuc3BsaXR0ZXIocykubGVuZ3RoIDogMCkpIDogMDtcbiAgICAgICAgLy8gR2V0IHBvc2l0aW9uIG5hbWVzIGZyb20gZGF0YSBjb2x1bW4gdGFnICdwb3NpdGlvbk5hbWVzJ1xuICAgICAgICBjb25zdCBwb3NpdGlvbk5hbWVzVHh0ID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdwb3NpdGlvbk5hbWVzJyk7XG4gICAgICAgIC8vIEZhbGxiYWNrIGlmICdwb3NpdGlvbk5hbWVzJyB0YWcgaXMgbm90IHByb3ZpZGVkXG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IHBvc2l0aW9uTmFtZXNUeHQgPyBwb3NpdGlvbk5hbWVzVHh0LnNwbGl0KCcsICcpLm1hcCgobikgPT4gbi50cmltKCkpIDpcbiAgICAgICAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5zdGFydFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpIDogMDtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9ICh0aGlzLmVuZFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLmVuZFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuZW5kUG9zaXRpb25OYW1lKSA6IChtYXhMZW5ndGggLSAxKTtcbiAgICB9XG4gICAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblByb3BlcnR5Q2hhbmdlZCggJHtwcm9wZXJ0eS5uYW1lfSA9ICcnIH0pYCk7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KTtcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjb25zaWRlck51bGxTZXF1ZW5jZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWluSGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heEhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhXaWR0aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbEFsaWdubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpdEFyZWEnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hyaW5rRW1wdHlUYWlsJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBvblRhYmxlQXR0YWNoZWQ6IHsgZ2V0OiAoKSA9PiBzdXBlci5vblRhYmxlQXR0YWNoZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IHRoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICAgICAgICAgIF9zdXBlci5vblRhYmxlQXR0YWNoZWQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnJlbmRlcigpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRldGFjaCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBkZXRhY2g6IHsgZ2V0OiAoKSA9PiBzdXBlci5kZXRhY2ggfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IGAke3RoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnfWA7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLmRldGFjaC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX251bGxTZXF1ZW5jZShmaWxsZXJSZXNpZHVlID0gJ1gnKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcylcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkodGhpcy5MZW5ndGgpLmZpbGwoZmlsbGVyUmVzaWR1ZSkuam9pbignJyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgX2NhbGN1bGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0IHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5MZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc05hbWUgPSB0aGlzLnBvc2l0aW9uTmFtZXNbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXSA9IG5ldyBQb3NpdGlvbkluZm8ocG9zTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMjAyMi0wNS0wNSBhc2thbGtpbiBpbnN0cnVjdGVkIHRvIHNob3cgV2ViTG9nbyBiYXNlZCBvbiBmaWx0ZXIgKG5vdCBzZWxlY3Rpb24pXG4gICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIC8vIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEluZGV4ZXMoKSA6XG4gICAgICAgIC8vICAgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSBpbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG4gICAgICAgICAgICBsZXQgcyA9ICh0aGlzLnNlcUNvbC5nZXQoaSkpO1xuICAgICAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICAgICAgcyA9IHRoaXMuX251bGxTZXF1ZW5jZSgpO1xuICAgICAgICAgICAgICAgICsrdGhpcy5yb3dzTnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlcU0gPSB0aGlzLnNwbGl0dGVyKHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG1JbmZvID0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcTtcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gc2VxTVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSB8fCAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCEobSBpbiBwbUluZm8pKVxuICAgICAgICAgICAgICAgICAgICBwbUluZm9bbV0gPSBuZXcgUG9zaXRpb25Nb25vbWVySW5mbygpO1xuICAgICAgICAgICAgICAgIHBtSW5mb1ttXS5jb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vI3JlZ2lvbiBQb2xpc2ggZnJlcSBjb3VudHNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAvLyBkZWxldGUgdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVsnLSddO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIGluIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgKz0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVttXS5jb3VudDtcbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICAgICAgY29uc3QgciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLSB0aGlzLmF4aXNIZWlnaHQgKiByO1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Ll9jYWxjdWxhdGUoKSBtYXhIZWlnaHQ9JHttYXhIZWlnaHR9LmApO1xuICAgICAgICAvLyNyZWdpb24gQ2FsY3VsYXRlIHNjcmVlblxuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZyZXEgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudDtcbiAgICAgICAgICAgIGxldCB5ID0gdGhpcy5heGlzSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGZyZXEpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYVswXSAhPT0gJy0nICYmIGJbMF0gIT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbMV0uY291bnQgLSBhWzFdLmNvdW50O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJyAmJiBiWzBdID09PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGVsc2UgLyogKGJbMF0gPT09ICctJykgKi9cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBtOiBzdHJpbmcgPSBlbnRyeVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoID0gbWF4SGVpZ2h0ICogcG1JbmZvLmNvdW50IC8gcm93Q291bnQ7XG4gICAgICAgICAgICAgICAgcG1JbmZvLmJvdW5kcyA9IG5ldyBERy5SZWN0KGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoLCB5LCB0aGlzLl9wb3NpdGlvbldpZHRoLCBoKTtcbiAgICAgICAgICAgICAgICB5ICs9IGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfVxuICAgIC8vIHJlZmxlY3QgY2hhbmdlcyBtYWRlIHRvIGZpbHRlci9zZWxlY3Rpb25cbiAgICByZW5kZXIocmVjYWxjID0gdHJ1ZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0aGlzLm1zZ0hvc3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCAmJiAhdGhpcy5jcCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5pbm5lclRleHQgPSBgVW5rbm93biBwYWxldHRlIChjb2x1bW4gc2VtVHlwZTogJyR7dGhpcy5zZXFDb2wuc2VtVHlwZX0nKS5gO1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUgfHwgIXRoaXMuY3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoIWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChyZWNhbGMpXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGUoKTtcbiAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgICAgIGcudGV4dEJhc2VsaW5lID0gdGhpcy50ZXh0QmFzZWxpbmU7XG4gICAgICAgIC8vIFByZXZlbnRzIGRpdmlzaW9uIGJ5IHplcm8gb24gTGVuZ3RoID0gMFxuICAgICAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uID09PSAtMSB8fCB0aGlzLmVuZFBvc2l0aW9uID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8jcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ2JsYWNrJztcbiAgICAgICAgZy50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgZy5mb250ID0gJzEwcHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICBjb25zdCBwb3NOYW1lTWF4V2lkdGggPSBNYXRoLm1heCguLi50aGlzLnBvc2l0aW9ucy5tYXAoKHBvcykgPT4gZy5tZWFzdXJlVGV4dChwb3MubmFtZSkud2lkdGgpKTtcbiAgICAgICAgY29uc3QgaFNjYWxlID0gcG9zTmFtZU1heFdpZHRoIDwgKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSA/IDEgOiAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpIC8gcG9zTmFtZU1heFdpZHRoO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oaFNjYWxlLCAwLCAwLCAxLCBqUG9zICogdGhpcy5fcG9zaXRpb25XaWR0aCArIHRoaXMuX3Bvc2l0aW9uV2lkdGggLyAyLCAwKTtcbiAgICAgICAgICAgIGcuZmlsbFRleHQocG9zLm5hbWUsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttb25vbWVyLCBwbUluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIgIT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyVHh0ID0gV2ViTG9nby5tb25vbWVyVG9UZXh0KG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gcG1JbmZvLmJvdW5kcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9udFN0eWxlID0gJzE2cHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICAgICAgICAgICAgICAvLyBIYWNrcyB0byBzY2FsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyB0byB0YXJnZXQgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckFzY2VudCA9IDAuMjU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckhlaWdodCA9IDEyLjI7XG4gICAgICAgICAgICAgICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdsaWdodGdyYXknO1xuICAgICAgICAgICAgICAgICAgICBnLmxpbmVXaWR0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGcucmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gKF9hID0gdGhpcy5jcC5nZXQobW9ub21lcikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuY3AuZ2V0KCdvdGhlcicpO1xuICAgICAgICAgICAgICAgICAgICBnLnRleHRBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgICAgICAgICAgICAgZy5mb250ID0gZm9udFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICAvL2cuZmlsbFJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtVG0gPSBnLm1lYXN1cmVUZXh0KG1vbm9tZXJUeHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiAobU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQgIT0gMClcbiAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKGBtOiAke219LCBtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDogJHttTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudH1gKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oYi53aWR0aCAvIG1UbS53aWR0aCwgMCwgMCwgYi5oZWlnaHQgLyB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQsIGIubGVmdCwgYi50b3ApO1xuICAgICAgICAgICAgICAgICAgICBnLmZpbGxUZXh0KG1vbm9tZXJUeHQsIDAsIC11cHBlcmNhc2VMZXR0ZXJBc2NlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYWxjU2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLkxlbmd0aCAqIHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgdGhpcy5yb290LmNsaWVudEhlaWdodCkpO1xuICAgICAgICBpZiAodGhpcy5maXRBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCB4U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeVNjYWxlID0gdGhpcy5yb290LmNsaWVudFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KDEsIE1hdGgubWluKHhTY2FsZSwgeVNjYWxlKSk7XG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggKiBzY2FsZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGggKiByO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgLy8gY29uc3QgY2FudmFzSGVpZ2h0OiBudW1iZXIgPSB3aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCA/IGhlaWdodCAtIDggOiBoZWlnaHQ7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtjYW52YXNIZWlnaHR9cHhgKTtcbiAgICAgICAgLy8gQWRqdXN0IGhvc3QgYW5kIHJvb3Qgd2lkdGhcbiAgICAgICAgaWYgKHRoaXMuZml4V2lkdGgpIHtcbiAgICAgICAgICAgIC8vIGZ1bGwgd2lkdGggZm9yIGNhbnZhcyBob3N0IGFuZCByb290XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gYWxsb3cgc2Nyb2xsIGNhbnZhcyBpbiByb290XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8haW1wb3J0YW50JztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgndGV4dC1hbGlnbicsIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCk7XG4gICAgICAgICAgICAvLyB2ZXJ0aWNhbCBhbGlnbm1lbnRcbiAgICAgICAgICAgIGxldCBob3N0VG9wTWFyZ2luID0gMDtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy52ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpIC8gMik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgJHtob3N0VG9wTWFyZ2lufXB4YCwgJ2ltcG9ydGFudCcpO1xuICAgICAgICAgICAgaWYgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgLy8gICBgdGhpcy5yb290LnN0eWxlLmhlaWdodCA9ICR7dGhpcy5yb290LnN0eWxlLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5yb290LmNsaWVudEhlaWdodCA9ICR7dGhpcy5yb290LmNsaWVudEhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5ob3N0LnN0eWxlLmhlaWdodCA9ICR7dGhpcy5ob3N0LnN0eWxlLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5ob3N0LmNsaWVudEhlaWdodCA9ICR7dGhpcy5ob3N0LmNsaWVudEhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICAnXFxuJyArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLmhlaWdodCAgICAgICA9ICR7dGhpcy5jYW52YXMuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSAke3RoaXMuY2FudmFzLnN0eWxlLmhlaWdodH1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbCBDb2x1bW4gdG8gbG9vayBmb3IgYSBwYWxldHRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gICAgICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAgICAgKi9cbiAgICBzdGF0aWMgcGlja1VwUGFsZXR0ZShzZXFDb2wsIG1pbkxlbmd0aCA9IDUpIHtcbiAgICAgICAgbGV0IHJlcyA9IG51bGw7XG4gICAgICAgIHN3aXRjaCAoc2VxQ29sLnNlbVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgcmVzID0gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoTnVjbGVvdGlkZXMuTmFtZXMpKSwgTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW1dLFxuICAgICAgICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpLCBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3Vwc10sXG4gICAgICAgIF07XG4gICAgICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW0gPSBhbHBoYWJldENhbmRpZGF0ZXNcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMF0pKTtcbiAgICAgICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICAgICAgaWYgKG1heENvcyA+IDAuNTUpXG4gICAgICAgICAgICByZXMgPSBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMV07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlcyA9IFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIFN0YXRzIG9mIHNlcXVlbmNlcyB3aXRoIHNwZWNpZmllZCBzcGxpdHRlciBmdW5jLCByZXR1cm5zIHsgZnJlcSwgc2FtZUxlbmd0aCB9LlxuICAgICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluTGVuZ3RoXG4gICAgICogQHBhcmFtIHtTcGxpdHRlckZ1bmN9IHNwbGl0dGVyXG4gICAgICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gICAgICovXG4gICAgc3RhdGljIGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlcikge1xuICAgICAgICBjb25zdCBmcmVxID0ge307XG4gICAgICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICAgICAgbGV0IGZpcnN0TGVuZ3RoID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBzZXEgb2Ygc2VxQ29sLmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuICAgICAgICAgICAgaWYgKGZpcnN0TGVuZ3RoID09IG51bGwpXG4gICAgICAgICAgICAgICAgZmlyc3RMZW5ndGggPSBtU2VxLmxlbmd0aDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgICAgICAgICBzYW1lTGVuZ3RoID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobVNlcS5sZW5ndGggPiBtaW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgZnJlcVttXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZyZXFbbV0gKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aCB9O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXEsIGFscGhhYmV0LCBnYXBTeW1ib2wgPSAnLScpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoWy4uLm5ldyBTZXQoT2JqZWN0LmtleXMoZnJlcSkpLCAuLi5hbHBoYWJldF0pO1xuICAgICAgICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuICAgICAgICBjb25zdCBmcmVxQSA9IFtdO1xuICAgICAgICBjb25zdCBhbHBoYWJldEEgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgICAgICAgIGZyZXFBLnB1c2gobSBpbiBmcmVxID8gZnJlcVttXSA6IDApO1xuICAgICAgICAgICAgYWxwaGFiZXRBLnB1c2goYWxwaGFiZXQuaGFzKG0pID8gMSA6IDApO1xuICAgICAgICB9XG4gICAgICAgIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICAgICAgICBjb25zdCBmcmVxViA9IG5ldyBWZWN0b3IoZnJlcUEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldFYgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgICAgIGNvbnN0IGNvcyA9IHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbiAgICAgICAgcmV0dXJuIGNvcztcbiAgICB9XG4gICAgLy8gLyoqIEZpcnN0IHRyeSB0byBmaW5kIGNvbHVtbiB3aXRoIHNlbVR5cGUgJ2FsaWduZWRTZXF1ZW5jZScuXG4gICAgLy8gICogTmV4dCBsb29rIGZvciBjb2x1bW4gd2l0aCBkYXRhIGFscGhhYmV0IGNvcnJlc3BvbmRpbmcgdG8gYW55IG9mIHRoZSBrbm93biBwYWxldHRlcy5cbiAgICAvLyAgKiBAcGFyYW0ge0RHLkRhdGFGcmFtZX0gZGF0YUZyYW1lXG4gICAgLy8gICogQHJldHVybiB7REcuQ29sdW1ufSBUaGUgY29sdW1uIHdlIHdlcmUgbG9va2luZyBmb3Igb3IgbnVsbFxuICAgIC8vICAqL1xuICAgIC8vIHByaXZhdGUgcGlja1VwU2VxQ29sKGRhdGFGcmFtZTogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gICAgLy8gICBsZXQgcmVzOiBERy5Db2x1bW4gfCBudWxsID0gZGF0YUZyYW1lLmNvbHVtbnMuYnlTZW1UeXBlKCdhbGlnbmVkU2VxdWVuY2UnKTtcbiAgICAvLyAgIGlmIChyZXMgPT0gbnVsbCkge1xuICAgIC8vICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkYXRhRnJhbWUuY29sdW1ucykge1xuICAgIC8vICAgICAgIGNvbnN0IGNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKGNvbCBhcyBERy5Db2x1bW4sIDUpO1xuICAgIC8vICAgICAgIGlmIChjcCAhPT0gbnVsbCAmJiAhKGNwIGluc3RhbmNlb2YgVW5rbm93blNlcVBhbGV0dGUpKSB7XG4gICAgLy8gICAgICAgICByZXMgPSBjb2w7XG4gICAgLy8gICAgICAgICBicmVhaztcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyAgIHJldHVybiByZXM7XG4gICAgLy8gfVxuICAgIHN0YXRpYyBwaWNrVXBTZXFDb2wyKGRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VtVHlwZUNvbExpc3QgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZUFsbChERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpO1xuICAgICAgICBsZXQgcmVzQ29sID0gKF9hID0gc2VtVHlwZUNvbExpc3QuZmluZCgoY29sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgICAgICAgfSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgICAgICAgcmV0dXJuIHJlc0NvbDtcbiAgICB9XG4gICAgLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAgICAgKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICovXG4gICAgc3RhdGljIHNwbGl0dGVyQXNGYXN0YShzZXEpIHtcbiAgICAgICAgY29uc3QgcmVzID0gd3Uoc2VxLnRvU3RyaW5nKCkubWF0Y2hBbGwoV2ViTG9nby5tb25vbWVyUmUpKVxuICAgICAgICAgICAgLm1hcCgobWEpID0+IHtcbiAgICAgICAgICAgIGxldCBtUmVzO1xuICAgICAgICAgICAgY29uc3QgbSA9IG1hWzBdO1xuICAgICAgICAgICAgaWYgKG0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChtIGluIFdlYkxvZ28uYWFTeW5vbnltcykge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gV2ViTG9nby5hYVN5bm9ueW1zW21dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbVJlcyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb25nIG1vbm9tZXIgJyR7bX0nIGhhcyBub3QgYSBzaG9ydCBzeW5vbnltLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1SZXM7XG4gICAgICAgIH0pLnRvQXJyYXkoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc3RhdGljIHNwbGl0dGVyQXNIZWxtKHNlcSkge1xuICAgICAgICBXZWJMb2dvLmhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBlYSA9IFdlYkxvZ28uaGVsbVJlLmV4ZWMoc2VxLnRvU3RyaW5nKCkpO1xuICAgICAgICBjb25zdCBpblNlcSA9IGVhID8gZWFbMl0ucmVwbGFjZShXZWJMb2dvLmhlbG1XcmFwcGVyc1JlLCAnJykgOiBudWxsO1xuICAgICAgICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tKSA9PiB7XG4gICAgICAgICAgICBXZWJMb2dvLmhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgY29uc3QgcHAxTSA9IFdlYkxvZ28uaGVsbVBwMVJlLmV4ZWMobW0pO1xuICAgICAgICAgICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtbUxpc3QgPSBpblNlcSA/IGluU2VxLnNwbGl0KCcuJykgOiBbXTtcbiAgICAgICAgY29uc3QgbW1MaXN0UmVzID0gbW1MaXN0Lm1hcChtbVBvc3RQcm9jZXNzKTtcbiAgICAgICAgcmV0dXJuIG1tTGlzdFJlcztcbiAgICB9XG4gICAgLyoqIEdldHMgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlIGJ5IHNlcGFyYXRvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gICAgICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIChzZXEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXRzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhO1xuICAgICAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcik7XG4gICAgICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnaGVsbScpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG4gICAgICAgIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG4gICAgfVxuICAgIHN0YXRpYyBnZXRTcGxpdHRlckZvckNvbHVtbihjb2wpIHtcbiAgICAgICAgaWYgKGNvbC5zZW1UeXBlICE9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gY29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgIHJldHVybiBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xuICAgIH1cbiAgICAvKiBTaG9ydGVucyBtb25vbWVyIHJlcHJlc2VudGF0aW9uIHRleHQgZm9yIG1vbm9tZXJzIHdpdGggbG9uZyBuYW1lcy5cbiAgICAqKi9cbiAgICBzdGF0aWMgbW9ub21lclRvVGV4dChzcmMpIHtcbiAgICAgICAgY29uc3Qgc3JjVHh0ID0gc3JjLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChzcmNUeHQubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmNUeHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHd1KHNyYy50b1N0cmluZygpLm1hdGNoQWxsKFdlYkxvZ28ubG9uZ01vbm9tZXJQYXJ0UmUpKVxuICAgICAgICAgICAgICAgIC5tYXAoKG1hKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbVJlcyA9IG1hWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBtUmVzO1xuICAgICAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQwID0gcGFydHNbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzVHh0ID0gcGFydDAubGVuZ3RoIDwgNiA/IGAke3BhcnQwfeKApmAgOiBgJHtwYXJ0MC5zdWJzdHJpbmcoMCwgNSl94oCmYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzVHh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG5XZWJMb2dvLnZpZXdlckNvdW50ID0gLTE7XG5XZWJMb2dvLm1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5XZWJMb2dvLmhlbG1SZSA9IC8oUEVQVElERTF8RE5BMXxSTkExKVxceyhbXn1dKyl9L2c7XG5XZWJMb2dvLmhlbG1XcmFwcGVyc1JlID0gLyhSXFwofERcXCh8XFwpUCkvZztcbldlYkxvZ28uaGVsbVBwMVJlID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcbi8qKiBPbmx5IHNvbWUgb2YgdGhlIHN5bm9ueW1zLiBUaGVzZSB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIGNsdXN0ZXJlZCBvbGlnb3BlcHRpZGUgZGF0YXNldC4gKi9cbldlYkxvZ28uYWFTeW5vbnltcyA9IHtcbiAgICAnW01lTmxlXSc6ICdMJyxcbiAgICAnW01lQV0nOiAnQScsXG4gICAgJ1tNZUddJzogJ0cnLFxuICAgICdbTWVGXSc6ICdGJyxcbn07XG5XZWJMb2dvLmxvbmdNb25vbWVyUGFydFJlID0gLyhcXHcrKS9nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJWaUxXeHZaMjh1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjNaV0l0Ykc5bmJ5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZEUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1RVRkJUU3hEUVVGRE8wRkJSVGRDTEU5QlFVOHNSVUZCUXl4TlFVRk5MRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjJSU3hQUVVGUExFVkJRVU1zV1VGQldTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkRMMFlzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRhRVVzVDBGQlR5eEZRVUZ2UWl4clFrRkJhMElzUlVGQlF5eE5RVUZOTEZsQlFWa3NRMEZCUXp0QlFXOUNha1VzYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExHbENRVUZwUWl4SFFVRkhMRlZCUVZNc1MwRkJhVUk3U1VGRGVFVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpORkxFTkJRVU1zUTBGQlF6dEJRVVZHTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZUTEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRhRVlzUTBGQlF5eERRVUZETzBGQlJVWXNUVUZCVFN4UFFVRlBMRzFDUVVGdFFqdEpRVk01UWp0UlFVTkZMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZsQlFWazdTVUZMZGtJN08wOUJSVWM3U1VGRFNDeFpRVUZaTEVsQlFWazdVVUZEZEVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEVWQlFVVXNRMEZCUXl4UlFVRlJPMGxCZFVSMFF6dFJRVU5GTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCY0VSR0xHRkJRVkVzUjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhuUWtGQlZ5eEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnlReXcwUmtGQk5FWTdVVUZEYkVZc1QwRkJSU3hIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZSTDBJc1pVRkJWU3hIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4WFFVRk5MRWRCUVRaQ0xFbEJRVWtzUTBGQlF6dFJRVU40UXl4aFFVRlJMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dFJRVU0zUXl4dFEwRkJiVU03VVVGRE0wSXNZMEZCVXl4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGRkwwSXNaVUZCVlN4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeGhRVUZSTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCYTBKeVFpeHJRa0ZCWVN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVVM1FpeHJRa0ZCWVN4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVE5DTEdkQ1FVRlhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGUGVrSXNZVUZCVVN4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGTGNFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkRMRTlCUVU4c1EwRkJReXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYcENMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlJURkNMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVRTdPRVJCUTI1Q0xFTkJRVU1zUTBGQlF6dFJRVU40UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVVc1EwRkJRVHRuUlVGRFlTeERRVUZETEVOQlFVTTdVVUZETVVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFTkJRVUU3WjBWQlExa3NRMEZCUXl4RFFVRkRPMUZCUlRGRUxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3hGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVMVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxGRkJRVkVzUlVGRGFFVXNSVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeFJRVUZSTEVWQlEzQkZMRVZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRia1VzUTBGQlF6dEpRWEpEUkN3d1JFRkJNRVE3U1VGRE1VUXNTVUZCV1N4TlFVRk5PMUZCUTJoQ0xFOUJRVThzU1VGQlNTeERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWNzUTBGQlF6dEpRVzlEWVN4SlFVRkpPenRaUVVOb1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJRM0JDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owTkJRV2RETEVOQlFVTXNRMEZCUXp0blFrRkRhRVFzVDBGQlR6dGhRVU5TTzFsQlJVUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXh4UTBGQmNVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGNFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVVndReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlJXcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZhRVFzTmtOQlFUWkRPMWxCUXpkRExIbERRVUY1UXp0WlFVTjZReXd3UTBGQk1FTTdXVUZGTVVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZYTEVWQlFYVkVMRVZCUVVVN1owSkJRM1JHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSWFJETEVsQlFVa3NVVUZCVVN4TFFVRkxMRXRCUVVzc1EwRkJRenR2UWtGRGNrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlRWQ0xFMUJRVTBzVDBGQlR5eEhRVUYxUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTTdjVUpCUXpORUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1QwRkJUeXhMUVVGTExGTkJRVk03YjBKQlEzWkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVVMVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRha1FzUTBGQlF5eERRVUZETzFsQlIwWXNjVWRCUVhGSE8xbEJRM0pITEU5QlFVODdXVUZGVUN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRmhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJZU3hGUVVGRkxFVkJRVVU3WjBKQlEyeEhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZEWkN4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE4wUXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEZWtVc1QwRkJUeXhKUVVGSkxFdEJRVXNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWS0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzI5Q1FVTXZRaXhQUVVGUE8yZENRVVZVTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVdVc1EwRkJRenRuUWtGRE4wSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVY0UlN4MVJFRkJkVVE3WjBKQlEzWkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzVDBGQlR5eEZRVUZGTzI5Q1FVTTNSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdDNRa0ZEY2tNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03ZDBKQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdkMEpCUTNwRkxFOUJRVThzU1VGQlNTeExRVUZMTEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUzUml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzTWtOQlFUSkRPMWxCUlRORExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRUlzUTBGQlF6dExRVUZCTzBsQlJVOHNhVUpCUVdsQ0xFTkJRVU1zU1VGQlV6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeENMR2xFUVVGcFJEdFJRVU5xUkN4eFJrRkJjVVk3VVVGRGNrWXNhVVpCUVdsR08wbEJRMjVHTEVOQlFVTTdTVUZGUkR0UFFVTkhPMGxCUTBzc1dVRkJXVHRSUVVOc1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1dVRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRNMFlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRuUWtGRGNFUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WVVGRGFrVTdXVUZEUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEyWXNUVUZCVFN4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtRc1RVRkJUU3hUUVVGVExFZEJRVmNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlJYUkVMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEzaENMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1JDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVlBMR1ZCUVdVN1VVRkRja0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUTJRc1QwRkJUenRSUVVWVUxFbEJRVWtzVlVGQk9FSXNRMEZCUXp0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZEZUVJc1RVRkJUU3hQUVVGUExFZEJRV1VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0WlFVTjJSU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkROMElzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12Ump0aFFVRk5PMWxCUTB3c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNKRE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVU5zUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWNlJDd3dSRUZCTUVRN1VVRkRNVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVNM1JDeHJSRUZCYTBRN1VVRkRiRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42Uml4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUVkVMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRTdXVUZEYUVVc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFN1dVRkROVVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGWlN4cFFrRkJhVUlzUTBGQlF5eFJRVUZ4UWp0UlFVTnlSQ3gzUlVGQmQwVTdVVUZEZUVVc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJSV3hETEZGQlFWRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOMlFpeExRVUZMTEhWQ1FVRjFRanRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVJc1RVRkJUVHRaUVVOU0xFdEJRVXNzYjBKQlFXOUNPMmRDUVVOMlFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1owSkJRM0JDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzJkQ1FVTndRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eHBRa0ZCYVVJN1owSkJRM0JDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1pVRkJaVHRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4WFFVRlhPMmRDUVVOa0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRmRCUVZjN1owSkJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1ZVRkJWVHRuUWtGRFlpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh0UWtGQmJVSTdaMEpCUTNSQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMSEZDUVVGeFFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NVMEZCVXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4cFFrRkJhVUk3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFRRVU5RTzBsQlEwZ3NRMEZCUXp0SlFVVnhRaXhsUVVGbE96czdPenRaUVVOdVF5eE5RVUZOTEZsQlFWa3NSMEZCVnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVNNVJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4clEwRkJhME1zV1VGQldTeFZRVUZWTEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhQUVVGTkxHVkJRV1VzV1VGQlJ6dFpRVVY0UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03V1VGRmNFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN2IwSkJRemRFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenR2UWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5vUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMHc3V1VGRlJDeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOc1FpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWeFFpeE5RVUZOT3pzN096dFpRVU14UWl4TlFVRk5MRmxCUVZrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZETTBRc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzYTBOQlFXdERMRmxCUVZrc1ZVRkJWU3hEUVVGRExFTkJRVU03V1VGRGNrY3NUMEZCVFN4TlFVRk5MRmxCUVVjN1dVRkZaaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEVsQlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVWMFFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVONlFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWVExHRkJRV0VzUTBGQlF5eGhRVUZoTEVkQlFVY3NSMEZCUnp0UlFVTjZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJN1dVRkROVUlzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVUzUkN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlV5eFZRVUZWTzFGQlEyeENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVenRaUVVNdlJDeFBRVUZQTzFGQlJWUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJSV2hDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzVDBGQlR5eEhRVUZYTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlEyeEVPMUZCUlVRc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZETTBRc01rZEJRVEpITzFGQlF6TkhMR2RFUVVGblJEdFJRVVZvUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0aFFVTnFRanRaUVVWRUxFMUJRVTBzU1VGQlNTeEhRVUZoTEVsQlFVa3NRMEZCUXl4UlFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlF6ZERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU42UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU03WjBKQlEzcEVMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTTdiMEpCUTJoQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdaMEpCUTNoRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRoUVVOdVFqdFRRVU5HTzFGQlJVUXNORUpCUVRSQ08xRkJRelZDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEhsRFFVRjVRenRaUVVWNlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYkVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWs3WjBKQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU4yUlR0UlFVTkVMRmxCUVZrN1VVRkZXaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE0wUXNiVVpCUVcxR08xRkJSVzVHTERCQ1FVRXdRanRSUVVNeFFpeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRaUVVNM1F5eE5RVUZOTEVsQlFVa3NSMEZCZVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkROMFVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hEUVVGRExFZEJRVmNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVm9ReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSE8yOUNRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dHhRa0ZETlVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVReXhQUVVGUExFTkJRVU1zUTBGQlF6dHhRa0ZEVGl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTlFMRzlDUVVGdlFqdHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1MwRkJTeXhOUVVGTkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVWQlFVVTdaMEpCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUYzUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRGhDUVVFNFFqdG5Ra0ZET1VJc1RVRkJUU3hEUVVGRExFZEJRVmNzVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8yZENRVVYwUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtZc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5TTzFOQlEwWTdVVUZEUkN4WlFVRlpPMGxCUTJRc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTXpReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMUZCUTJ4Q0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExGTkJRVk1zUjBGQlJ5eHhRMEZCY1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0blFrRkRlRVlzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU5zUXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzJGQlEzUkRPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRE4wUXNUMEZCVHp0UlFVVlVMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUenRSUVVWbUxFbEJRVWtzVFVGQlRUdFpRVU5TTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia0lzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1EwRkJReXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUlc1RExEQkRRVUV3UXp0UlFVTXhReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEZEVRc1QwRkJUenRSUVVWVUxEUkNRVUUwUWp0UlFVTTFRaXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRhRWNzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETzFGQlJUZEhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1IwRkJSeXhIUVVGcFFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJReTlETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNXVUZCV1N4RFFVTmFMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZEWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UkN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZDTzFGQlEwUXNLMEpCUVN0Q08xRkJSUzlDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM3BGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGRGJrSXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRiRVFzVFVGQlRTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenR2UWtGRmVFSXNUVUZCVFN4VFFVRlRMRWRCUVVjc2RVTkJRWFZETEVOQlFVTTdiMEpCUXpGRUxEQkVRVUV3UkR0dlFrRkRNVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU03YjBKQlEyNURMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMjlDUVVWdVF5eERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN2IwSkJRMjVDTEVOQlFVTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRE8yOUNRVU0xUWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYUVJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03YjBKQlEzcERMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlFTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zYlVOQlFVa3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdiMEpCUXpORUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRPMjlDUVVOeVFpeERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenR2UWtGRGJrSXNLME5CUVN0RE8yOUNRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJaMElzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenR2UWtGRmJrUXNkVU5CUVhWRE8yOUNRVU4yUXl4NVJrRkJlVVk3YjBKQlJYcEdMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRMW9zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXh4UWtGQmNVSXNSVUZETTBRc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRMnBDTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03YVVKQlEyNUVPMkZCUTBZN1UwRkRSanRKUVVOSUxFTkJRVU03U1VGRlR5eFJRVUZSTzFGQlEyUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1R0WlFVTTFRaXhQUVVGUE8xRkJSVlFzU1VGQlNTeExRVUZMTEVkQlFWY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzSkVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhoR0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhOUVVGTkxFMUJRVTBzUjBGQlZ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU03V1VGRGRrUXNUVUZCVFN4TlFVRk5MRWRCUVZjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNKRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNFUXNTMEZCU3l4SFFVRkhMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGRFSXNUVUZCVFN4SFFVRkhMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTnNSRHRSUVVWRUxFMUJRVTBzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFdEJRVXNzU1VGQlNTeERRVUZETzFGQlJYWkRMRzlHUVVGdlJqdFJRVU53Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU55UkN4TlFVRk5MRmxCUVZrc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVTndSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1JETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4WlFVRlpMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSVGRFTERaQ1FVRTJRanRSUVVNM1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1dVRkRha0lzYzBOQlFYTkRPMWxCUTNSRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1IwRkJSeXhMUVVGTExFbEJRVWtzUTBGQlF6dFpRVU0zUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJRenRaUVVOMlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVlVGQlZTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOb1JUdGhRVUZOTzFsQlEwd3NPRUpCUVRoQ08xbEJRemxDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzWkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dFpRVU0zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVGxETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdXVUZGY0VVc2NVSkJRWEZDTzFsQlEzSkNMRWxCUVVrc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4UlFVRlJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0blFrRkRhRU1zUzBGQlN5eExRVUZMTzI5Q1FVTlNMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEyeENMRTFCUVUwN1owSkJRMUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU51UlN4TlFVRk5PMmRDUVVOU0xFdEJRVXNzVVVGQlVUdHZRa0ZEV0N4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUXpkRUxFMUJRVTA3WVVGRFVEdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4aFFVRmhMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFpRVVUzUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNSVUZCUlR0blFrRkRia01zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5xUkR0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zV1VGQldTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRoUVVOc1JUdFRRVU5HTzFGQlJVUXNhVUpCUVdsQ08xRkJRMnBDTERaRVFVRTJSRHRSUVVNM1JDdzJSRUZCTmtRN1VVRkROMFFzTmtSQlFUWkVPMUZCUXpkRUxEWkVRVUUyUkR0UlFVTTNSQ3hYUVVGWE8xRkJRMWdzTWtSQlFUSkVPMUZCUXpORUxDdEVRVUVyUkR0SlFVTnFSU3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCYVVJc1JVRkJSU3haUVVGdlFpeERRVUZETzFGQlEyeEZMRWxCUVVrc1IwRkJSeXhIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZEYkVNc1VVRkJVU3hOUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1ZVRkJWU3hEUVVGRExIZENRVUYzUWp0blFrRkRkRU1zUjBGQlJ5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEY0VNc1RVRkJUVHRaUVVOU0xFdEJRVXNzVjBGQlZ5eERRVUZETEhkQ1FVRjNRanRuUWtGRGRrTXNSMEZCUnl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0blFrRkRka01zVFVGQlRUdFRRVU5RTzFGQlEwUXNUVUZCVFN4TFFVRkxMRWRCUVdkQ0xFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdVVUZGZUVZc1RVRkJUU3hyUWtGQmEwSXNSMEZCWjBNN1dVRkRkRVFzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0WlFVTXpSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFOQlEzaEZMRU5CUVVNN1VVRkRSaXhuUkVGQlowUTdVVUZEYUVRc1RVRkJUU3h4UWtGQmNVSXNSMEZCWVN4clFrRkJhMEk3WVVGRGRrUXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWs3V1VGRFppeEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSVzVGTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZGYWtNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRV2xDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVGelFqdFJRVU14UlN4TlFVRk5MRWxCUVVrc1IwRkJORUlzUlVGQlJTeERRVUZETzFGQlEzcERMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU4wUWl4SlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmRrSXNTMEZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTzFsQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxGZEJRVmNzU1VGQlNTeEpRVUZKTzJkQ1FVTnlRaXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0cFFrRkRka0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjN1owSkJRMnhETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkZja0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1JVRkJSVHRuUWtGRE0wSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3YjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdkMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yRkJRMFk3VTBGRFJqdFJRVU5FTEU5QlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFZRVUZWTEVWQlFVTXNRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVTBzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFbEJRV3RDTEVWQlFVVXNVVUZCY1VJc1JVRkJSU3haUVVGdlFpeEhRVUZITzFGQlEzQkhMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGZGtJc1RVRkJUU3hMUVVGTExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF6TkNMRTFCUVUwc1UwRkJVeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU12UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdFpRVU53UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzcERPMUZCUTBRc01FWkJRVEJHTzFGQlF6RkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFbEJRVWtzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzVTBGQlV5eEhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEUxQlFVMHNSMEZCUnl4SFFVRlhMR2RDUVVGblFpeERRVUZETEV0QlFVc3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42Unl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlJDd3JSRUZCSzBRN1NVRkRMMFFzZVVaQlFYbEdPMGxCUTNwR0xIRkRRVUZ4UXp0SlFVTnlReXhuUlVGQlowVTdTVUZEYUVVc1RVRkJUVHRKUVVOT0xHOUZRVUZ2UlR0SlFVTndSU3huUmtGQlowWTdTVUZEYUVZc2RVSkJRWFZDTzBsQlEzWkNMRFpEUVVFMlF6dEpRVU0zUXl3clJFRkJLMFE3U1VGREwwUXNhVVZCUVdsRk8wbEJRMnBGTEhGQ1FVRnhRanRKUVVOeVFpeHBRa0ZCYVVJN1NVRkRha0lzVlVGQlZUdEpRVU5XTEZGQlFWRTdTVUZEVWl4TlFVRk5PMGxCUTA0c1owSkJRV2RDTzBsQlEyaENMRWxCUVVrN1NVRkZSeXhOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFXZENPenRSUVVNeFF5eE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRM3BGTEVsQlFVa3NUVUZCVFN4SFFVRnhRaXhOUVVGQkxHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVONlJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRlRU1zVDBGQlR5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU55UkN4RFFVRkRMRU5CUVVNc2JVTkJRVWtzU1VGQlNTeERRVUZETzFGQlExZ3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hqUVVGakxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTTdXVUZEZEVNc1RVRkJUU3hIUVVGSExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCU1VRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhIUVVGUk8xRkJRM0JETEUxQlFVMHNSMEZCUnl4SFFVRmhMRVZCUVVVc1EwRkJiVUlzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdZVUZEYmtZc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQmIwSXNSVUZCUlN4RlFVRkZPMWxCUXpWQ0xFbEJRVWtzU1VGQldTeERRVUZETzFsQlEycENMRTFCUVUwc1EwRkJReXhIUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjRRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVOb1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJWU3hGUVVGRk8yOUNRVU16UWl4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRPVUk3Y1VKQlFVMDdiMEpCUTB3c1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dHZRa0ZEVml4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdhVUpCUXk5RU8yRkJRMFk3YVVKQlFVMDdaMEpCUTB3c1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU5XTzFsQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1VVRkRaQ3hEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0UlFVVm1MRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVTFOTEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1IwRkJVVHRSUVVOdVF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE4wSXNUVUZCVFN4RlFVRkZMRWRCUVRKQ0xFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzWkZMRTFCUVUwc1MwRkJTeXhIUVVGclFpeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUlc1R0xFMUJRVTBzWVVGQllTeEhRVUZITEVOQlFVTXNSVUZCVlN4RlFVRlZMRVZCUVVVN1dVRkRNME1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMmhETEUxQlFVMHNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTNoRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRk8yZENRVU0xUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU5vUWp0cFFrRkJUVHRuUWtGRFRDeFBRVUZQTEVWQlFVVXNRMEZCUXp0aFFVTllPMUZCUTBnc1EwRkJReXhEUVVGRE8xRkJSVVlzVFVGQlRTeE5RVUZOTEVkQlFXRXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGRrUXNUVUZCVFN4VFFVRlRMRWRCUVdFc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hQUVVGUExGTkJRVk1zUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZOQlFXbENPMUZCUTNSRUxFOUJRVThzUTBGQlF5eEhRVUZYTEVWQlFVVXNSVUZCUlR0WlFVTnlRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVPenM3TzA5QlNVYzdTVUZEU1N4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hKUVVGSkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRM3BETEU5QlFVOHNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJRenRoUVVNMVFpeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyeEVMRTlCUVU4c1QwRkJUeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8yRkJRMmhFTEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZETjBNc1QwRkJUeXhQUVVGUExFTkJRVU1zWTBGQll5eERRVUZET3p0WlFVVTVRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEc5Q1FVRnZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXcEVMREJDUVVFd1FqdEpRVU0xUWl4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWRCUVdNN1VVRkRMME1zU1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllUdFpRVU14UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEWkNRVUUyUWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGYkVZc1RVRkJUU3hMUVVGTExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzaERMRTFCUVUwc1UwRkJVeXhIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zVDBGQlR5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU12UXl4RFFVRkRPMGxCV1VRN1QwRkRSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCVVR0UlFVTnNReXhOUVVGTkxFMUJRVTBzUjBGQlZ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0VFFVTm1PMkZCUVUwN1dVRkRUQ3hOUVVGTkxFdEJRVXNzUjBGQllTeEZRVUZGTEVOQlFXMUNMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdhVUpCUXpkR0xFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFXOUNMRVZCUVVVc1JVRkJSVHRuUWtGRE5VSXNUVUZCVFN4SlFVRkpMRWRCUVZjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTXpRaXhQUVVGUExFbEJRVWtzUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJSV1lzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGNrSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1lVRkRXanRwUWtGQlRUdG5Ra0ZEVEN4TlFVRk5MRXRCUVVzc1IwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFMUJRVTBzVFVGQlRTeEhRVUZYTEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03WjBKQlEzQkdMRTlCUVU4c1RVRkJUU3hEUVVGRE8yRkJRMlk3VTBGRFJqdEpRVU5JTEVOQlFVTTdPMEZCTDNkQ1lTeHRRa0ZCVnl4SFFVRkhMR0ZCUVdFc1EwRkJRenRCUVVNelFpeHRRa0ZCVnl4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJkWEJDZWtJc2FVSkJRVk1zUjBGQlJ5eHhRa0ZCY1VJc1EwRkJRenRCUVRKQ2JFTXNZMEZCVFN4SFFVRkhMR2xEUVVGcFF5eERRVUZETzBGQlF6TkRMSE5DUVVGakxFZEJRVWNzWjBKQlFXZENMRU5CUVVNN1FVRkRiRU1zYVVKQlFWTXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dEJRVEpFTlVNc09FWkJRVGhHTzBGQlF5OUZMR3RDUVVGVkxFZEJRU3RDTzBsQlEzUkVMRk5CUVZNc1JVRkJSU3hIUVVGSE8wbEJRMlFzVDBGQlR5eEZRVUZGTEVkQlFVYzdTVUZEV2l4UFFVRlBMRVZCUVVVc1IwRkJSenRKUVVOYUxFOUJRVThzUlVGQlJTeEhRVUZITzBOQlEySXNRMEZCUXp0QlFVVmhMSGxDUVVGcFFpeEhRVUZITEZGQlFWRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtbHRjRzl5ZENCM2RTQm1jbTl0SUNkM2RTYzdYRzVwYlhCdmNuUWdLaUJoY3lCeWVHcHpJR1p5YjIwZ0ozSjRhbk1uTzF4dVhHNXBiWEJ2Y25RZ2UxWmxZM1J2Y24wZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdDJaV04wYjNKTVpXNW5kR2dzSUhabFkzUnZja1J2ZEZCeWIyUjFZM1I5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1FXMXBibTloWTJsa2N5d2dRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTloYldsdWIyRmphV1J6Snp0Y2JtbHRjRzl5ZENCN1RuVmpiR1Z2ZEdsa1pYTXNJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE45SUdaeWIyMGdKeTR1TDI1MVkyeGxiM1JwWkdWekp6dGNibWx0Y0c5eWRDQjdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVXNJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjMzBnWm5KdmJTQW5MaTR2ZFc1cmJtOTNiaWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdWOUlHWnliMjBnSnk0dUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1cGJYQnZjblFnZTFOMVluTmpjbWx3ZEdsdmJuMGdabkp2YlNBbmNuaHFjeWM3WEc1Y2JtUmxZMnhoY21VZ2JXOWtkV3hsSUNka1lYUmhaM0p2YXkxaGNHa3ZjM0pqTDJkeWFXUW5JSHRjYmlBZ2FXNTBaWEptWVdObElGSmxZM1FnZTF4dUlDQWdJR052Ym5SaGFXNXpLSGc2SUc1MWJXSmxjaXdnZVRvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmp0Y2JpQWdmVnh1ZlZ4dVhHNWtaV05zWVhKbElHZHNiMkpoYkNCN1hHNGdJR2x1ZEdWeVptRmpaU0JJVkUxTVEyRnVkbUZ6Uld4bGJXVnVkQ0I3WEc0Z0lDQWdaMlYwUTNWeWMyOXlVRzl6YVhScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBPaUJFUnk1UWIybHVkRHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQk5iMjV2YldWeVJuSmxjWE1nUFNCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSWdmVHRjYm1WNGNHOXlkQ0IwZVhCbElGTmxjVU52YkZOMFlYUnpJRDBnZXlCbWNtVnhPaUJOYjI1dmJXVnlSbkpsY1hNc0lITmhiV1ZNWlc1bmRHZzZJR0p2YjJ4bFlXNGdmVnh1Wlhod2IzSjBJSFI1Y0dVZ1UzQnNhWFIwWlhKR2RXNWpJRDBnS0hObGNUb2djM1J5YVc1bktTQTlQaUJ6ZEhKcGJtZGJYVHRjYmx4dVNGUk5URU5oYm5aaGMwVnNaVzFsYm5RdWNISnZkRzkwZVhCbExtZGxkRU4xY25OdmNsQnZjMmwwYVc5dUlEMGdablZ1WTNScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBPaUJFUnk1UWIybHVkQ0I3WEc0Z0lHTnZibk4wSUhKbFkzUWdQU0IwYUdsekxtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwTzF4dUlDQnlaWFIxY200Z2JtVjNJRVJITGxCdmFXNTBLR1YyWlc1MExtTnNhV1Z1ZEZnZ0xTQnlaV04wTG14bFpuUXNJR1YyWlc1MExtTnNhV1Z1ZEZrZ0xTQnlaV04wTG5SdmNDazdYRzU5TzF4dVhHNUVSeTVTWldOMExuQnliM1J2ZEhsd1pTNWpiMjUwWVdsdWN5QTlJR1oxYm1OMGFXOXVLSGc2SUc1MWJXSmxjaXdnZVRvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmlCN1hHNGdJSEpsZEhWeWJpQjBhR2x6TG14bFpuUWdQRDBnZUNBbUppQjRJRHc5SUhSb2FYTXVjbWxuYUhRZ0ppWWdkR2hwY3k1MGIzQWdQRDBnZVNBbUppQjVJRHc5SUhSb2FYTXVZbTkwZEc5dE8xeHVmVHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRkJ2YzJsMGFXOXVUVzl1YjIxbGNrbHVabThnZTF4dUlDQXZLaW9nVTJWeGRXVnVZMlZ6SUdOdmRXNTBJSGRwZEdnZ2JXOXViMjFsY2lCcGJpQndiM05wZEdsdmJseHVJQ0FnS2k5Y2JpQWdZMjkxYm5RNklHNTFiV0psY2p0Y2JseHVJQ0F2S2lvZ1VtVnRaVzFpWlhJZ2MyTnlaV1Z1SUdOdmIzSmtjeUJ5WldOMFhHNGdJQ0FxTDF4dUlDQmliM1Z1WkhNNklFUkhMbEpsWTNRN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2RHaHBjeTVqYjNWdWRDQTlJREE3WEc0Z0lDQWdkR2hwY3k1aWIzVnVaSE1nUFNCdVpYY2dSRWN1VW1WamRDZ3dMQ0F3TENBd0xDQXdLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdVRzl6YVhScGIyNUpibVp2SUh0Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1puSmxjVG9nZXlCYmJUb2djM1J5YVc1blhUb2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI5TzF4dUlDQnliM2REYjNWdWREb2diblZ0WW1WeU8xeHVYRzRnSUM4cUtpQm1jbVZ4SUQwZ2UzMHNJSEp2ZDBOdmRXNTBJRDBnTUZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlNCT1lXMWxJRzltSUhCdmMybDBhVzl1SUNnbk1URXhRU2NzSUNjeE1URXVNU2NzSUdWMFl5bGNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11Ym1GdFpTQTlJRzVoYldVN1hHNGdJQ0FnZEdocGN5NW1jbVZ4SUQwZ2UzMDdYRzRnSUNBZ2RHaHBjeTV5YjNkRGIzVnVkQ0E5SURBN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZkbFlreHZaMjhnWlhoMFpXNWtjeUJFUnk1S2MxWnBaWGRsY2lCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVnphV1IxWlhOVFpYUWdQU0FuYm5WamJHVnZkR2xrWlhNbk8xeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QjJhV1YzWlhKRGIzVnVkRG9nYm5WdFltVnlJRDBnTFRFN1hHNWNiaUFnY0hKcGRtRjBaU0IyYVdWM1pYSkpaRG9nYm5WdFltVnlJRDBnTFRFN1hHNGdJSEJ5YVhaaGRHVWdhVzVwZEdsaGJHbDZaV1E2SUdKdmIyeGxZVzRnUFNCbVlXeHpaVHRjYmx4dUlDQXZMeUJ3Y21sMllYUmxJSEpsWVdSdmJteDVJR052Ykc5eVUyTm9aVzFsT2lCRGIyeHZjbE5qYUdWdFpTQTlJRU52Ykc5eVUyTm9aVzFsYzF0T2RXTnNaVzkwYVdSbGMxZGxZa3h2WjI4dWNtVnphV1IxWlhOVFpYUmRPMXh1SUNCd2NtOTBaV04wWldRZ1kzQTZJRk5sY1ZCaGJHVjBkR1VnZkNCdWRXeHNJRDBnYm5Wc2JEdGNibHh1SUNCd2NtbDJZWFJsSUdodmMzUS9PaUJJVkUxTVJHbDJSV3hsYldWdWREdGNiaUFnY0hKcGRtRjBaU0J0YzJkSWIzTjBQem9nU0ZSTlRFVnNaVzFsYm5RN1hHNGdJSEJ5YVhaaGRHVWdZMkZ1ZG1GelB6b2dTRlJOVEVOaGJuWmhjMFZzWlcxbGJuUTdYRzRnSUhCeWFYWmhkR1VnYzJ4cFpHVnlQem9nUkVjdVVtRnVaMlZUYkdsa1pYSTdYRzRnSUhCeWFYWmhkR1VnZEdWNGRFSmhjMlZzYVc1bE9pQkRZVzUyWVhOVVpYaDBRbUZ6Wld4cGJtVTdYRzVjYmlBZ2NISnBkbUYwWlNCaGVHbHpTR1ZwWjJoME9pQnVkVzFpWlhJZ1BTQXhNanRjYmx4dUlDQndjbWwyWVhSbElITmxjVU52YkRvZ1JFY3VRMjlzZFcxdVBITjBjbWx1Wno0Z2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmlBZ2NISnBkbUYwWlNCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQzh2SUhCeWFYWmhkR1VnYldGNFRHVnVaM1JvT2lCdWRXMWlaWElnUFNBeE1EQTdYRzRnSUhCeWFYWmhkR1VnY0c5emFYUnBiMjV6T2lCUWIzTnBkR2x2YmtsdVptOWJYU0E5SUZ0ZE8xeHVYRzRnSUhCeWFYWmhkR1VnY205M2MwMWhjMnRsWkRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnY0hKcGRtRjBaU0J5YjNkelRuVnNiRG9nYm5WdFltVnlJRDBnTUR0Y2JseHVJQ0F2THlCV2FXVjNaWEluY3lCd2NtOXdaWEowYVdWeklDaHNhV3RsYkhrZ2RHaGxlU0J6YUc5MWJHUWdZbVVnY0hWaWJHbGpJSE52SUhSb1lYUWdkR2hsZVNCallXNGdZbVVnYzJWMElHOTFkSE5wWkdVcFhHNGdJSEJ5YVhaaGRHVWdYM0J2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklIQnZjMmwwYVc5dVYybGtkR2c2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUcxcGJraGxhV2RvZERvZ2JuVnRZbVZ5TzF4dUlDQndkV0pzYVdNZ2JXRjRTR1ZwWjJoME9pQnVkVzFpWlhJN1hHNGdJSEIxWW14cFl5QmpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE02SUdKdmIyeGxZVzQ3WEc0Z0lIQjFZbXhwWXlCelpYRjFaVzVqWlVOdmJIVnRiazVoYldVNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCemRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdWdVpGQnZjMmwwYVc5dVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJR1pwZUZkcFpIUm9PaUJpYjI5c1pXRnVPMXh1SUNCd2RXSnNhV01nZG1WeWRHbGpZV3hCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUI4SUc1MWJHdzdYRzRnSUhCMVlteHBZeUJvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwT2lCemRISnBibWNnZkNCdWRXeHNPMXh1SUNCd2RXSnNhV01nWm1sMFFYSmxZVG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOb2NtbHVhMFZ0Y0hSNVZHRnBiRG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOcmFYQkZiWEIwZVZCdmMybDBhVzl1Y3pvZ1ltOXZiR1ZoYmp0Y2JseHVJQ0J3Y21sMllYUmxJSEJ2YzJsMGFXOXVUbUZ0WlhNNklITjBjbWx1WjF0ZElEMGdXMTA3WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0Z5ZEZCdmMybDBhVzl1T2lCdWRXMWlaWElnUFNBdE1UdGNibHh1SUNCd2NtbDJZWFJsSUdWdVpGQnZjMmwwYVc5dU9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQXZLaW9nUm05eUlITjBZWEowVUc5emFYUnBiMjRnWlhGMVlXeHpJSFJ2SUdWdVpGQnZjMmwwYVc5dUlFeGxibWQwYUNCcGN5QXhJQ292WEc0Z0lIQnlhWFpoZEdVZ1oyVjBJRXhsYm1kMGFDZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z1BEMGdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQS9JSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdMU0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lBeElEb2dNRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnZG1sbGQxTjFZbk02SUZOMVluTmpjbWx3ZEdsdmJsdGRJRDBnVzEwN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkbWxsZDJWeVNXUWdQU0JYWldKTWIyZHZMblpwWlhkbGNrTnZkVzUwTzF4dUlDQWdJRmRsWWt4dloyOHVkbWxsZDJWeVEyOTFiblFnS3owZ01UdGNibHh1SUNBZ0lIUm9hWE11ZEdWNGRFSmhjMlZzYVc1bElEMGdKM1J2Y0NjN1hHNWNiaUFnSUNCMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lEMGdkR2hwY3k1d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NW1iRzloZENnbmNHOXphWFJwYjI1WGFXUjBhQ2NzSURFMkx5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBMExDQnRZWGc2SURZMExDQndiM04wWm1sNE9pQW5jSGduZlNvdktUdGNiaUFnSUNCMGFHbHpMbTFwYmtobGFXZG9kQ0E5SUhSb2FYTXVabXh2WVhRb0oyMXBia2hsYVdkb2RDY3NJRFV3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUF5TlRBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVJQ0FnSUhSb2FYTXViV0Y0U0dWcFoyaDBJRDBnZEdocGN5NW1iRzloZENnbmJXRjRTR1ZwWjJoMEp5d2dNVEF3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUExTURBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVYRzRnSUNBZ2RHaHBjeTVqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNZ1BTQjBhR2x6TG1KdmIyd29KMk52Ym5OcFpHVnlUblZzYkZObGNYVmxibU5sY3ljc0lHWmhiSE5sS1R0Y2JpQWdJQ0IwYUdsekxuTmxjWFZsYm1ObFEyOXNkVzF1VG1GdFpTQTlJSFJvYVhNdWMzUnlhVzVuS0NkelpYRjFaVzVqWlVOdmJIVnRiazVoYldVbkxDQnVkV3hzS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2Yms1aGJXVWdQU0IwYUdsekxuTjBjbWx1WnlnbmMzUmhjblJRYjNOcGRHbHZiazVoYldVbkxDQnVkV3hzS1R0Y2JpQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2RsYm1SUWIzTnBkR2x2Yms1aGJXVW5MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lIUm9hWE11Wm1sNFYybGtkR2dnUFNCMGFHbHpMbUp2YjJ3b0oyWnBlRmRwWkhSb0p5d2dabUZzYzJVcE8xeHVYRzRnSUNBZ2RHaHBjeTUyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ0E5SUhSb2FYTXVjM1J5YVc1bktDZDJaWEowYVdOaGJFRnNhV2R1YldWdWRDY3NJQ2R0YVdSa2JHVW5MRnh1SUNBZ0lDQWdlMk5vYjJsalpYTTZJRnNuZEc5d0p5d2dKMjFwWkdSc1pTY3NJQ2RpYjNSMGIyMG5YWDBwTzF4dUlDQWdJSFJvYVhNdWFHOXlhWHB2Ym5SaGJFRnNhV2R1YldWdWRDQTlJSFJvYVhNdWMzUnlhVzVuS0Nkb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEp5d2dKMk5sYm5SbGNpY3NYRzRnSUNBZ0lDQjdZMmh2YVdObGN6b2dXeWRzWldaMEp5d2dKMk5sYm5SbGNpY3NJQ2R5YVdkb2RDZGRmU2s3WEc0Z0lDQWdkR2hwY3k1bWFYUkJjbVZoSUQwZ2RHaHBjeTVpYjI5c0tDZG1hWFJCY21WaEp5d2dkSEoxWlNrN1hHNGdJQ0FnZEdocGN5NXphSEpwYm10RmJYQjBlVlJoYVd3Z1BTQjBhR2x6TG1KdmIyd29KM05vY21sdWEwVnRjSFI1VkdGcGJDY3NJSFJ5ZFdVcE8xeHVJQ0FnSUhSb2FYTXVjMnRwY0VWdGNIUjVVRzl6YVhScGIyNXpJRDBnZEdocGN5NWliMjlzS0NkemEybHdSVzF3ZEhsUWIzTnBkR2x2Ym5NbkxDQm1ZV3h6WlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUdsdWFYUW9LVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWFXNXBkR2xoYkdsNlpXUXBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb0oxZGxZa3h2WjI4Z2MyVmpiMjVrSUdsdWFYUnBZV3hwZW1GMGFXOXVJU2NwTzF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WldRZ1BTQjBjblZsTzF4dUlDQWdJSFJvYVhNdWFHVnNjRlZ5YkNBOUlDY3ZhR1ZzY0M5MmFYTjFZV3hwZW1VdmRtbGxkMlZ5Y3k5M1pXSXRiRzluYnk1dFpDYzdYRzVjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1FnUFNCMWFTNWthWFlvSjA1dklHMWxjM05oWjJVbktUdGNiaUFnSUNCMGFHbHpMbTF6WjBodmMzUXVjM1I1YkdVdVpHbHpjR3hoZVNBOUlDZHViMjVsSnp0Y2JseHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GeklEMGdkV2t1WTJGdWRtRnpLQ2s3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YzNSNWJHVXVkMmxrZEdnZ1BTQW5NVEF3SlNjN1hHNWNiaUFnSUNCMGFHbHpMbWh2YzNRZ1BTQjFhUzVrYVhZb1czUm9hWE11YlhOblNHOXpkQ3dnZEdocGN5NWpZVzUyWVhOZEtUdGNibHh1SUNBZ0lDOHZJSFJvYVhNdWMyeHBaR1Z5SUQwZ2RXa3VjbUZ1WjJWVGJHbGtaWElvTUN3Z01qQXNJRElzSURVcE8xeHVJQ0FnSUM4dklIUm9hWE11YzJ4cFpHVnlMbkp2YjNRdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzRnSUNBZ0x5OGdkR2hwY3k1emJHbGtaWEl1Y205dmRDNXpkSGxzWlM1b1pXbG5hSFFnUFNBbk1USndlQ2M3WEc1Y2JpQWdJQ0JqYjI1emRDQm5aWFJOYjI1dmJXVnlJRDBnS0hBNklFUkhMbEJ2YVc1MEtUb2dXMjUxYldKbGNpd2djM1J5YVc1bklId2diblZzYkN3Z1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjhJRzUxYkd4ZElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHcFFiM01nUFNCTllYUm9MbVpzYjI5eUtIQXVlQ0F2SUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdncE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY0c5emFYUnBiMjRnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhUdGNibHh1SUNBZ0lDQWdhV1lnS0hCdmMybDBhVzl1SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYmFsQnZjeXdnYm5Wc2JDd2diblZzYkYwN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUcxdmJtOXRaWEk2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNBOUlFOWlhbVZqZEM1clpYbHpLSEJ2YzJsMGFXOXVMbVp5WlhFcFhHNGdJQ0FnSUNBZ0lDNW1hVzVrS0NodEtTQTlQaUJ3YjNOcGRHbHZiaTVtY21WeFcyMWRMbUp2ZFc1a2N5NWpiMjUwWVdsdWN5aHdMbmdzSUhBdWVTa3BPMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWElnUFQwOUlIVnVaR1ZtYVc1bFpDbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdWRXeHNMQ0J1ZFd4c1hUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdGIyNXZiV1Z5TENCd2IzTnBkR2x2Ymk1bWNtVnhXMjF2Ym05dFpYSmRYVHRjYmlBZ0lDQjlPMXh1WEc1Y2JpQWdJQ0F2THlCMGFHbHpMbk4xWW5NdWNIVnphQ2h5ZUdwekxtWnliMjFGZG1WdWREeE5iM1Z6WlVWMlpXNTBQaWgwYUdsekxtTmhiblpoY3l3Z0oyMXZkWE5sYjNabGNpY3BMbk4xWW5OamNtbGlaU2dvWlRvZ1RXOTFjMlZGZG1WdWRDa2dQVDRnZTF4dUlDQWdJQzh2SUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaHllR3B6TG1aeWIyMUZkbVZ1ZER4TmIzVnpaVVYyWlc1MFBpaDBhR2x6TG1OaGJuWmhjeXdnSjIxdmRYTmxiVzkyWlNjcExuTjFZbk5qY21saVpTZ29aVG9nVFc5MWMyVkZkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5bGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCaGNtZHpJRDBnWlNCaGN5Qk5iM1Z6WlVWMlpXNTBPMXh1SUNBZ0lDQWdZMjl1YzNRZ1cycFFiM01zSUcxdmJtOXRaWEpkSUQwZ1oyVjBUVzl1YjIxbGNpaDBhR2x6TG1OaGJuWmhjeTVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaWhoY21kektTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FtSmlCMGFHbHpMbk5sY1VOdmJDQW1KaUIwYUdsekxuTndiR2wwZEdWeUlDWW1JRzF2Ym05dFpYSXBJSHRjYmlBZ0lDQWdJQ0FnZFdrdWRHOXZiSFJwY0M1emFHOTNVbTkzUjNKdmRYQW9kR2hwY3k1a1lYUmhSbkpoYldVc0lDaHBVbTkzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4SUQwZ2RHaHBjeTV6WlhGRGIyd2hMbWRsZENocFVtOTNLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6WlhGTklEMGdjMlZ4SUQ4Z2RHaHBjeTV6Y0d4cGRIUmxjaUVvYzJWeEtWdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxjVTBnUFQwOUlHMXZibTl0WlhJZ0ppWWdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ2ZTd2dZWEpuY3k1NElDc2dNVFlzSUdGeVozTXVlU0FySURFMktUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIVnBMblJ2YjJ4MGFYQXVhR2xrWlNncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaHllR3B6TG1aeWIyMUZkbVZ1ZER4TmIzVnpaVVYyWlc1MFBpaDBhR2x6TG1OaGJuWmhjeXdnSjIxdmRYTmxaRzkzYmljcExuTjFZbk5qY21saVpTZ29aVG9nVFc5MWMyVkZkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5QjhmQ0JsTG1KMWRIUnZiaUFoUFNBd0tWeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNWNiaUFnSUNBZ0lHTnZibk4wSUdGeVozTWdQU0JsSUdGeklFMXZkWE5sUlhabGJuUTdYRzRnSUNBZ0lDQmpiMjV6ZENCYmFsQnZjeXdnYlc5dWIyMWxjbDBnUFNCblpYUk5iMjV2YldWeUtIUm9hWE11WTJGdWRtRnpMbWRsZEVOMWNuTnZjbEJ2YzJsMGFXOXVLR0Z5WjNNcEtUdGNibHh1SUNBZ0lDQWdMeThnY0hKbGRtVnVkSE1nWkdWelpXeGxZM1FnWVd4c0lISnZkM01nYVdZZ2QyVWdiV2x6Y3lCdGIyNXZiV1Z5SUdKdmRXNWtjMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaR0YwWVVaeVlXMWxJQ1ltSUhSb2FYTXVjMlZ4UTI5c0lDWW1JSFJvYVhNdWMzQnNhWFIwWlhJZ0ppWWdiVzl1YjIxbGNpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVhVzVwZENnb2FWSnZkeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4VFNBOUlITmxjU0EvSUhSb2FYTXVjM0JzYVhSMFpYSWhLSE5sY1NsYmRHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlDc2dhbEJ2YzEwZ09pQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpYRk5JRDA5UFNCdGIyNXZiV1Z5SUNZbUlIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTVuWlhRb2FWSnZkeWs3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaDFhUzV2YmxOcGVtVkRhR0Z1WjJWa0tIUm9hWE11Y205dmRDa3VjM1ZpYzJOeWFXSmxLSFJvYVhNdWNtOXZkRTl1VTJsNlpVTm9ZVzVuWldRdVltbHVaQ2gwYUdsektTa3BPMXh1WEc0Z0lDQWdkR2hwY3k1eWIyOTBMbUZ3Y0dWdVpDaDBhR2x6TG1odmMzUXBPMXh1SUNBZ0lDOHZJSFJvYVhNdWNtOXZkQzVoY0hCbGJtUkRhR2xzWkNoMGFHbHpMbk5zYVdSbGNpNXliMjkwS1R0Y2JseHVJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCeWIyOTBUMjVUYVhwbFEyaGhibWRsWkNoaGNtZHpPaUJoYm5rcElIdGNiaUFnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JseHVJQ0FnSUM4dklHTnZibk52YkdVdVpHVmlkV2NvWUZkbFlreHZaMjh1YjI1U2IyOTBVMmw2WlVOb1lXNW5aV1FvS1NCZ0lDdGNiaUFnSUNBdkx5QWdJR0J5YjI5MExuZHBaSFJvUFNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEZkcFpIUm9mU3dnY205dmRDNW9aV2xuYUhROUpIdDBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwZlN3Z1lDQXJYRzRnSUNBZ0x5OGdJQ0JnWTJGdWRtRnpMbmRwWkhSb1BTUjdkR2hwY3k1allXNTJZWE11ZDJsa2RHaDlMQ0JqWVc1MllYTXVhR1ZwWjJoMFBTUjdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBmU0F1WUNrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUVhOemFXZHVjeUI3UUd4cGJtc2djMlZ4UTI5c2ZTQmhibVFnZTBCc2FXNXJJR053ZlNCaVlYTmxaQ0J2YmlCN1FHeHBibXNnYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsZlNCaGJtUWdZMkZzYkhNZ2UwQnNhVzVySUhKbGJtUmxjbjBvS1M1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2RYQmtZWFJsVTJWeFEyOXNLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZHY21GdFpTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU0EvSUhSb2FYTXVaR0YwWVVaeVlXMWxMbU52YkNoMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU2tnT2lCdWRXeHNPMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlZ4UTI5c0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCWFpXSk1iMmR2TG5CcFkydFZjRk5sY1VOdmJESW9kR2hwY3k1a1lYUmhSbkpoYldVcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGNYVmxibU5sUTI5c2RXMXVUbUZ0WlNBOUlIUm9hWE11YzJWeFEyOXNJRDhnZEdocGN5NXpaWEZEYjJ3dWJtRnRaU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXpaWEZEYjJ3cElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE02SUhOMGNtbHVaeUE5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeWs3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5JRDBnZEdocGN5NXpaWEZEYjJ3aExtZGxkRlJoWnlnbmMyVndZWEpoZEc5eUp5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWMzQnNhWFIwWlhJZ1BTQlhaV0pNYjJkdkxtZGxkRk53YkdsMGRHVnlLSFZ1YVhSekxDQnpaWEJoY21GMGIzSXBPMXh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFVHOXphWFJwYjI1ektDazdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkzQWdQU0JYWldKTWIyZHZMbkJwWTJ0VmNGQmhiR1YwZEdVb2RHaHBjeTV6WlhGRGIyd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1emNHeHBkSFJsY2lBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBOUlGdGRPMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnUFNBdE1UdGNiaUFnSUNBZ0lDQWdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQTlJQzB4TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbU53SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9LVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXpaWEZEYjJ3cFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0JzWlhRZ1kyRjBaV2R2Y21sbGN6b2dLSE4wY21sdVp5QjhJRzUxYkd3cElGdGRPMXh1SUNBZ0lHbG1JQ2gwYUdsekxuTm9jbWx1YTBWdGNIUjVWR0ZwYkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVc1a2FXTmxjem9nU1c1ME16SkJjbkpoZVNBOUlIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTVuWlhSVFpXeGxZM1JsWkVsdVpHVjRaWE1vS1R0Y2JpQWdJQ0FnSUdOaGRHVm5iM0pwWlhNZ1BTQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9YRzRnSUNBZ0lDQWdJRUZ5Y21GNUxtWnliMjBvUVhKeVlYa29hVzVrYVdObGN5NXNaVzVuZEdncExtdGxlWE1vS1NrdWJXRndLQ2hwT2lCdWRXMWlaWElwSUQwK0lIUm9hWE11YzJWeFEyOXNJUzVuWlhRb2FXNWthV05sYzF0cFhTa3BLU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHTmhkR1ZuYjNKcFpYTWdQU0IwYUdsekxuTmxjVU52YkM1allYUmxaMjl5YVdWek8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQnRZWGhNWlc1bmRHZ2dQU0JqWVhSbFoyOXlhV1Z6TG14bGJtZDBhQ0ErSURBZ1B5Qk5ZWFJvTG0xaGVDZ3VMaTVqWVhSbFoyOXlhV1Z6TG0xaGNDaGNiaUFnSUNBZ0lDaHpLU0E5UGlCeklDRTlQU0J1ZFd4c0lEOGdkR2hwY3k1emNHeHBkSFJsY2lFb2N5a3ViR1Z1WjNSb0lEb2dNQ2twSURvZ01EdGNibHh1SUNBZ0lDOHZJRWRsZENCd2IzTnBkR2x2YmlCdVlXMWxjeUJtY205dElHUmhkR0VnWTI5c2RXMXVJSFJoWnlBbmNHOXphWFJwYjI1T1lXMWxjeWRjYmlBZ0lDQmpiMjV6ZENCd2IzTnBkR2x2Yms1aGJXVnpWSGgwSUQwZ2RHaHBjeTV6WlhGRGIyd3VaMlYwVkdGbktDZHdiM05wZEdsdmJrNWhiV1Z6SnlrN1hHNGdJQ0FnTHk4Z1JtRnNiR0poWTJzZ2FXWWdKM0J2YzJsMGFXOXVUbUZ0WlhNbklIUmhaeUJwY3lCdWIzUWdjSEp2ZG1sa1pXUmNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNZ1BTQndiM05wZEdsdmJrNWhiV1Z6VkhoMElEOGdjRzl6YVhScGIyNU9ZVzFsYzFSNGRDNXpjR3hwZENnbkxDQW5LUzV0WVhBb0tHNHBJRDArSUc0dWRISnBiU2dwS1NBNlhHNGdJQ0FnSUNCYkxpNHVRWEp5WVhrb2JXRjRUR1Z1WjNSb0tTNXJaWGx6S0NsZExtMWhjQ2dvYWxCdmN5a2dQVDRnWUNSN2FsQnZjeUFySURGOVlDazdYRzVjYmlBZ0lDQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQU0FvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpTQW1KaUIwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE1nSmlaY2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtTnNkV1JsY3loMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxLU2tnUDF4dUlDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJrNWhiV1Z6TG1sdVpHVjRUMllvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpTa2dPaUF3TzF4dUlDQWdJSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdQU0FvZEdocGN5NWxibVJRYjNOcGRHbHZiazVoYldVZ0ppWWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJQ1ltWEc0Z0lDQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE11YVc1amJIVmtaWE1vZEdocGN5NWxibVJRYjNOcGRHbHZiazVoYldVcEtTQS9YRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTXVhVzVrWlhoUFppaDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU2tnT2lBb2JXRjRUR1Z1WjNSb0lDMGdNU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnYjI1UWNtOXdaWEowZVVOb1lXNW5aV1FvY0hKdmNHVnlkSGs2SUVSSExsQnliM0JsY25SNUtUb2dkbTlwWkNCN1hHNGdJQ0FnTHk4Z1kyOXVjMjlzWlM1a1pXSjFaeWhnVjJWaVRHOW5ieTV2YmxCeWIzQmxjblI1UTJoaGJtZGxaQ2dnSkh0d2NtOXdaWEowZVM1dVlXMWxmU0E5SUNjbklIMHBZQ2s3WEc0Z0lDQWdjM1Z3WlhJdWIyNVFjbTl3WlhKMGVVTm9ZVzVuWldRb2NISnZjR1Z5ZEhrcE8xeHVYRzRnSUNBZ2MzZHBkR05vSUNod2NtOXdaWEowZVM1dVlXMWxLU0I3WEc0Z0lDQWdZMkZ6WlNBblkyOXVjMmxrWlhKT2RXeHNVMlZ4ZFdWdVkyVnpKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5jMlZ4ZFdWdVkyVkRiMngxYlc1T1lXMWxKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVTJWeFEyOXNLQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R6ZEdGeWRGQnZjMmwwYVc5dVRtRnRaU2M2WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlZObGNVTnZiQ2dwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuWlc1a1VHOXphWFJwYjI1T1lXMWxKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVTJWeFEyOXNLQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R3YjNOcGRHbHZibGRwWkhSb0p6cGNiaUFnSUNBZ0lIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ2dQU0IwYUdsekxuQnZjMmwwYVc5dVYybGtkR2c3WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMjFwYmtobGFXZG9kQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMjFoZUVobGFXZG9kQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMlpwZUZkcFpIUm9KenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5kbVZ5ZEdsallXeEJiR2xuYm0xbGJuUW5PbHh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZG9iM0pwZW05dWRHRnNRV3hwWjI1dFpXNTBKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5abWwwUVhKbFlTYzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozTm9jbWx1YTBWdGNIUjVWR0ZwYkNjNlhHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWQnZjMmwwYVc5dWN5Z3BPMXh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWVhONWJtTWdiMjVVWVdKc1pVRjBkR0ZqYUdWa0tDa2dlMXh1SUNBZ0lHTnZibk4wSUdSaGRHRkdjbUZ0WlZSNGREb2djM1J5YVc1bklEMGdkR2hwY3k1a1lYUmhSbkpoYldVZ1B5QW5aR0YwWVNjZ09pQW5iblZzYkNjN1hHNGdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdZbWx2T2lCWFpXSk1iMmR2UENSN2RHaHBjeTUyYVdWM1pYSkpaSDArTG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dnWkdGMFlVWnlZVzFsSUQwZ0pIdGtZWFJoUm5KaGJXVlVlSFI5SUNrZ2MzUmhjblJnS1R0Y2JpQWdJQ0J6ZFhCbGNpNXZibFJoWW14bFFYUjBZV05vWldRb0tUdGNibHh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVWdJVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXpkV0p6TG5CMWMyZ29kR2hwY3k1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxtOXVRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LRjhwSUQwK0lIUm9hWE11Y21WdVpHVnlLQ2twS1R0Y2JpQWdJQ0FnSUhSb2FYTXVjM1ZpY3k1d2RYTm9LSFJvYVhNdVpHRjBZVVp5WVcxbExtWnBiSFJsY2k1dmJrTm9ZVzVuWldRdWMzVmljMk55YVdKbEtDaGZLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtDazdYRzRnSUNBZ0lDQjlLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVwYm1sMEtDazdYRzRnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnWW1sdk9pQlhaV0pNYjJkdlBDUjdkR2hwY3k1MmFXVjNaWEpKWkgwK0xtOXVWR0ZpYkdWQmRIUmhZMmhsWkNncElHVnVaR0FwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUc5MlpYSnlhV1JsSUdGemVXNWpJR1JsZEdGamFDZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCa1lYUmhSbkpoYldWVWVIUWdQU0JnSkh0MGFHbHpMbVJoZEdGR2NtRnRaU0EvSUNka1lYUmhKeUE2SUNkdWRXeHNKMzFnTzF4dUlDQWdJR052Ym5OdmJHVXVaR1ZpZFdjb1lHSnBiem9nVjJWaVRHOW5iendrZTNSb2FYTXVkbWxsZDJWeVNXUjlQaTV2YmxSaFlteGxRWFIwWVdOb1pXUW9JR1JoZEdGR2NtRnRaU0E5SUNSN1pHRjBZVVp5WVcxbFZIaDBmU0FwSUhOMFlYSjBZQ2s3WEc0Z0lDQWdjM1Z3WlhJdVpHVjBZV05vS0NrN1hHNWNiaUFnSUNCMGFHbHpMblpwWlhkVGRXSnpMbVp2Y2tWaFkyZ29LSE4xWWlrZ1BUNGdjM1ZpTG5WdWMzVmljMk55YVdKbEtDa3BPMXh1SUNBZ0lIUm9hWE11YUc5emRDRXVjbVZ0YjNabEtDazdYRzRnSUNBZ2RHaHBjeTVqWVc1MllYTWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdkR2hwY3k1dGMyZEliM04wSUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhSb2FYTXVhRzl6ZENBOUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WldRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQmlhVzg2SUZkbFlreHZaMjg4Skh0MGFHbHpMblpwWlhkbGNrbGtmVDR1YjI1VVlXSnNaVUYwZEdGamFHVmtLQ2tnWlc1a1lDazdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWDI1MWJHeFRaWEYxWlc1alpTaG1hV3hzWlhKU1pYTnBaSFZsSUQwZ0oxZ25LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1wWEc0Z0lDQWdJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLSFJvYVhNdVRHVnVaM1JvS1M1bWFXeHNLR1pwYkd4bGNsSmxjMmxrZFdVcExtcHZhVzRvSnljcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJRjlqWVd4amRXeGhkR1VvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTVvYjNOMElIeDhJQ0YwYUdsekxuTmxjVU52YkNCOGZDQWhkR2hwY3k1a1lYUmhSbkpoYldVcFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0IwYUdsekxtTmhiR05UYVhwbEtDazdYRzVjYmlBZ0lDQjBhR2x6TG5CdmMybDBhVzl1Y3lBOUlHNWxkeUJCY25KaGVTaDBhR2x6TGt4bGJtZDBhQ2s3WEc0Z0lDQWdabTl5SUNoc1pYUWdhbEJ2Y3lBOUlEQTdJR3BRYjNNZ1BDQjBhR2x6TGt4bGJtZDBhRHNnYWxCdmN5c3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQndiM05PWVcxbE9pQnpkSEpwYm1jZ1BTQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTmJkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJQ3NnYWxCdmMxMDdYRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYU0E5SUc1bGR5QlFiM05wZEdsdmJrbHVabThvY0c5elRtRnRaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnTWpBeU1pMHdOUzB3TlNCaGMydGhiR3RwYmlCcGJuTjBjblZqZEdWa0lIUnZJSE5vYjNjZ1YyVmlURzluYnlCaVlYTmxaQ0J2YmlCbWFXeDBaWElnS0c1dmRDQnpaV3hsWTNScGIyNHBYRzRnSUNBZ1kyOXVjM1FnYVc1a2FXTmxjeUE5SUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNW5aWFJUWld4bFkzUmxaRWx1WkdWNFpYTW9LVHRjYmlBZ0lDQXZMeUJqYjI1emRDQnBibVJwWTJWeklEMGdkR2hwY3k1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxuUnlkV1ZEYjNWdWRDQStJREFnUHlCMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1WjJWMFUyVnNaV04wWldSSmJtUmxlR1Z6S0NrZ09seHVJQ0FnSUM4dklDQWdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVYRzRnSUNBZ2RHaHBjeTV5YjNkelRXRnphMlZrSUQwZ2FXNWthV05sY3k1c1pXNW5kR2c3WEc0Z0lDQWdkR2hwY3k1eWIzZHpUblZzYkNBOUlEQTdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR2tnYjJZZ2FXNWthV05sY3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJSE02SUhOMGNtbHVaeUE5SUR4emRISnBibWMrS0hSb2FYTXVjMlZ4UTI5c0xtZGxkQ2hwS1NrN1hHNWNiaUFnSUNBZ0lHbG1JQ2doY3lrZ2UxeHVJQ0FnSUNBZ0lDQnpJRDBnZEdocGN5NWZiblZzYkZObGNYVmxibU5sS0NrN1hHNGdJQ0FnSUNBZ0lDc3JkR2hwY3k1eWIzZHpUblZzYkR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1kyOXVjM1FnYzJWeFRUb2djM1J5YVc1blcxMGdQU0IwYUdsekxuTndiR2wwZEdWeUlTaHpLVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3YlVsdVptOGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J6WlhGTlczUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQXJJR3BRYjNOZElIeDhJQ2N0Snp0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0VvYlNCcGJpQndiVWx1Wm04cEtWeHVJQ0FnSUNBZ0lDQWdJSEJ0U1c1bWIxdHRYU0E5SUc1bGR5QlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZLQ2s3WEc0Z0lDQWdJQ0FnSUhCdFNXNW1iMXR0WFM1amIzVnVkQ3NyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2STNKbFoybHZiaUJRYjJ4cGMyZ2dabkpsY1NCamIzVnVkSE5jYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJQzh2SUdSbGJHVjBaU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhXeWN0SjEwN1hHNWNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbkp2ZDBOdmRXNTBJRDBnTUR0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2JTQnBiaUIwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1eWIzZERiM1Z1ZENBclBTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeFcyMWRMbU52ZFc1ME8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlObGJtUnlaV2RwYjI1Y2JseHVJQ0FnSUdOdmJuTjBJSElnUFNCM2FXNWtiM2N1WkdWMmFXTmxVR2w0Wld4U1lYUnBienRjYmlBZ0lDQmpiMjV6ZENCdFlYaElaV2xuYUhRZ1BTQjBhR2x6TG1OaGJuWmhjeTVvWldsbmFIUWdMU0IwYUdsekxtRjRhWE5JWldsbmFIUWdLaUJ5TzF4dUlDQWdJQzh2SUdOdmJuTnZiR1V1WkdWaWRXY29ZRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHVYMk5oYkdOMWJHRjBaU2dwSUcxaGVFaGxhV2RvZEQwa2UyMWhlRWhsYVdkb2RIMHVZQ2s3WEc1Y2JpQWdJQ0F2THlOeVpXZHBiMjRnUTJGc1kzVnNZWFJsSUhOamNtVmxibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1puSmxjVG9nZXlCYll6b2djM1J5YVc1blhUb2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI5SUQwZ2RHaHBjeTV3YjNOcGRHbHZibk5iYWxCdmMxMHVabkpsY1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDBOdmRXNTBJRDBnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdWNtOTNRMjkxYm5RN1hHNWNiaUFnSUNBZ0lHeGxkQ0I1T2lCdWRXMWlaWElnUFNCMGFHbHpMbUY0YVhOSVpXbG5hSFE3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR1Z1ZEhKcFpYTWdQU0JQWW1wbFkzUXVaVzUwY21sbGN5aG1jbVZ4S1M1emIzSjBLQ2hoTENCaUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhXekJkSUNFOVBTQW5MU2NnSmlZZ1lsc3dYU0FoUFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJpV3pGZExtTnZkVzUwSUMwZ1lWc3hYUzVqYjNWdWREdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZVnN3WFNBOVBUMGdKeTBuSUNZbUlHSmJNRjBnUFQwOUlDY3RKeWxjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTUR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1lWc3dYU0E5UFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0F2S2lBb1lsc3dYU0E5UFQwZ0p5MG5LU0FxTDF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBck1UdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JsYm5SeWVTQnZaaUJsYm5SeWFXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ0U1c1bWJ6b2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUE5SUdWdWRISjVXekZkTzF4dUlDQWdJQ0FnSUNBdkx5QmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQmxiblJ5ZVZzd1hUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FEb2diblZ0WW1WeUlEMGdiV0Y0U0dWcFoyaDBJQ29nY0cxSmJtWnZMbU52ZFc1MElDOGdjbTkzUTI5MWJuUTdYRzVjYmlBZ0lDQWdJQ0FnY0cxSmJtWnZMbUp2ZFc1a2N5QTlJRzVsZHlCRVJ5NVNaV04wS0dwUWIzTWdLaUIwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvTENCNUxDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9MQ0JvS1R0Y2JpQWdJQ0FnSUNBZ2VTQXJQU0JvTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQXZMeU5sYm1SeVpXZHBiMjVjYmlBZ2ZWeHVYRzRnSUM4dklISmxabXhsWTNRZ1kyaGhibWRsY3lCdFlXUmxJSFJ2SUdacGJIUmxjaTl6Wld4bFkzUnBiMjVjYmlBZ2NtVnVaR1Z5S0hKbFkyRnNZeUE5SUhSeWRXVXBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXRjMmRJYjNOMEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXpaWEZEYjJ3Z0ppWWdJWFJvYVhNdVkzQXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRjMmRJYjNOMElTNXBibTVsY2xSbGVIUWdQU0JnVlc1cmJtOTNiaUJ3WVd4bGRIUmxJQ2hqYjJ4MWJXNGdjMlZ0Vkhsd1pUb2dKeVI3ZEdocGN5NXpaWEZEYjJ3dWMyVnRWSGx3WlgwbktTNWdPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXpaMGh2YzNRaExuTjBlV3hsTG1ScGMzQnNZWGtnUFNBbkp6dGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YlhOblNHOXpkQ0V1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2R1YjI1bEp6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElDRjBhR2x6TG5ObGNVTnZiQ0I4ZkNBaGRHaHBjeTVrWVhSaFJuSmhiV1VnZkh3Z0lYUm9hWE11WTNBcFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0JqYjI1emRDQm5JRDBnZEdocGN5NWpZVzUyWVhNdVoyVjBRMjl1ZEdWNGRDZ25NbVFuS1R0Y2JpQWdJQ0JwWmlBb0lXY3BJSEpsZEhWeWJqdGNibHh1SUNBZ0lHbG1JQ2h5WldOaGJHTXBYRzRnSUNBZ0lDQjBhR2x6TGw5allXeGpkV3hoZEdVb0tUdGNibHh1SUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNCbkxtWnBiR3hUZEhsc1pTQTlJQ2QzYUdsMFpTYzdYRzRnSUNBZ1p5NW1hV3hzVW1WamRDZ3dMQ0F3TENCMGFHbHpMbU5oYm5aaGN5NTNhV1IwYUN3Z2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMEtUdGNiaUFnSUNCbkxuUmxlSFJDWVhObGJHbHVaU0E5SUhSb2FYTXVkR1Y0ZEVKaGMyVnNhVzVsTzF4dVhHNGdJQ0FnTHk4Z1VISmxkbVZ1ZEhNZ1pHbDJhWE5wYjI0Z1lua2dlbVZ5YnlCdmJpQk1aVzVuZEdnZ1BTQXdYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE5UFQwZ0xURWdmSHdnZEdocGN5NWxibVJRYjNOcGRHbHZiaUE5UFQwZ0xURXBYRzRnSUNBZ0lDQnlaWFIxY200N1hHNWNiaUFnSUNBdkx5TnlaV2RwYjI0Z1VHeHZkQ0J3YjNOcGRHbHZiazVoYldWelhHNGdJQ0FnWnk1eVpYTmxkRlJ5WVc1elptOXliU2dwTzF4dUlDQWdJR2N1Wm1sc2JGTjBlV3hsSUQwZ0oySnNZV05ySnp0Y2JpQWdJQ0JuTG5SbGVIUkJiR2xuYmlBOUlDZGpaVzUwWlhJbk8xeHVJQ0FnSUdjdVptOXVkQ0E5SUNjeE1IQjRJRkp2WW05MGJ5d2dVbTlpYjNSdklFeHZZMkZzTENCellXNXpMWE5sY21sbUp6dGNiaUFnSUNCamIyNXpkQ0J3YjNOT1lXMWxUV0Y0VjJsa2RHZ2dQU0JOWVhSb0xtMWhlQ2d1TGk1MGFHbHpMbkJ2YzJsMGFXOXVjeTV0WVhBb0tIQnZjeWtnUFQ0Z1p5NXRaV0Z6ZFhKbFZHVjRkQ2h3YjNNdWJtRnRaU2t1ZDJsa2RHZ3BLVHRjYmlBZ0lDQmpiMjV6ZENCb1UyTmhiR1VnUFNCd2IzTk9ZVzFsVFdGNFYybGtkR2dnUENBb2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXRJRElwSUQ4Z01TQTZJQ2gwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUMwZ01pa2dMeUJ3YjNOT1lXMWxUV0Y0VjJsa2RHZzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElIQnZjem9nVUc5emFYUnBiMjVKYm1adklEMGdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTA3WEc0Z0lDQWdJQ0JuTG5KbGMyVjBWSEpoYm5ObWIzSnRLQ2s3WEc0Z0lDQWdJQ0JuTG5ObGRGUnlZVzV6Wm05eWJTaGNiaUFnSUNBZ0lDQWdhRk5qWVd4bExDQXdMQ0F3TENBeExGeHVJQ0FnSUNBZ0lDQnFVRzl6SUNvZ2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXJJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dnTHlBeUxDQXdLVHRjYmlBZ0lDQWdJR2N1Wm1sc2JGUmxlSFFvY0c5ekxtNWhiV1VzSURBc0lEQXBPMXh1SUNBZ0lIMWNiaUFnSUNBdkx5TmxibVJ5WldkcGIyNGdVR3h2ZENCd2IzTnBkR2x2Yms1aGJXVnpYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnVzIxdmJtOXRaWElzSUhCdFNXNW1iMTBnYjJZZ1QySnFaV04wTG1WdWRISnBaWE1vZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdVpuSmxjU2twSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzF2Ym05dFpYSWdJVDA5SUNjdEp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzF2Ym05dFpYSlVlSFFnUFNCWFpXSk1iMmR2TG0xdmJtOXRaWEpVYjFSbGVIUW9iVzl1YjIxbGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZaUE5SUhCdFNXNW1ieTVpYjNWdVpITTdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JtYjI1MFUzUjViR1VnUFNBbk1UWndlQ0JTYjJKdmRHOHNJRkp2WW05MGJ5Qk1iMk5oYkN3Z2MyRnVjeTF6WlhKcFppYzdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1NHRmphM01nZEc4Z2MyTmhiR1VnZFhCd1pYSmpZWE5sSUdOb1lYSmhZM1JsY25NZ2RHOGdkR0Z5WjJWMElISmxZM1JoYm1kc1pWeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIVndjR1Z5WTJGelpVeGxkSFJsY2tGelkyVnVkQ0E5SURBdU1qVTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwSUQwZ01USXVNanRjYmx4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNBZ0lDQWdJQ0JuTG5OMGNtOXJaVk4wZVd4bElEMGdKMnhwWjJoMFozSmhlU2M3WEc0Z0lDQWdJQ0FnSUNBZ1p5NXNhVzVsVjJsa2RHZ2dQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZqZENoaUxteGxablFzSUdJdWRHOXdMQ0JpTG5kcFpIUm9MQ0JpTG1obGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1p5NW1hV3hzVTNSNWJHVWdQU0IwYUdsekxtTndMbWRsZENodGIyNXZiV1Z5S1NBL1B5QjBhR2x6TG1Od0xtZGxkQ2duYjNSb1pYSW5LVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuUmxlSFJCYkdsbmJpQTlJQ2RzWldaMEp6dGNiaUFnSUNBZ0lDQWdJQ0JuTG1admJuUWdQU0JtYjI1MFUzUjViR1U3WEc0Z0lDQWdJQ0FnSUNBZ0x5OW5MbVpwYkd4U1pXTjBLR0l1YkdWbWRDd2dZaTUwYjNBc0lHSXVkMmxrZEdnc0lHSXVhR1ZwWjJoMEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRWRzA2SUZSbGVIUk5aWFJ5YVdOeklEMGdaeTV0WldGemRYSmxWR1Y0ZENodGIyNXZiV1Z5VkhoMEtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHbG1JQ2h0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkQ0FoUFNBd0tWeHVJQ0FnSUNBZ0lDQWdJQzh2SUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnYlRvZ0pIdHRmU3dnYlUwdVlXTjBkV0ZzUW05MWJtUnBibWRDYjNoQmMyTmxiblE2SUNSN2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5SOVlDazdYRzVjYmlBZ0lDQWdJQ0FnSUNCbkxuTmxkRlJ5WVc1elptOXliU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lHSXVkMmxrZEdnZ0x5QnRWRzB1ZDJsa2RHZ3NJREFzSURBc0lHSXVhR1ZwWjJoMElDOGdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZaTVzWldaMExDQmlMblJ2Y0NrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2h0YjI1dmJXVnlWSGgwTENBd0xDQXRkWEJ3WlhKallYTmxUR1YwZEdWeVFYTmpaVzUwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1kyRnNZMU5wZW1Vb0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lCOGZDQWhkR2hwY3k1b2IzTjBLVnh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ2JHVjBJSGRwWkhSb09pQnVkVzFpWlhJZ1BTQjBhR2x6TGt4bGJtZDBhQ0FxSUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0JzWlhRZ2FHVnBaMmgwSUQwZ1RXRjBhQzV0YVc0b2RHaHBjeTV0WVhoSVpXbG5hSFFzSUUxaGRHZ3ViV0Y0S0hSb2FYTXViV2x1U0dWcFoyaDBMQ0IwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMEtTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW1hWFJCY21WaEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCNFUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUWdMeUJvWldsbmFIUTdYRzRnSUNBZ0lDQmpiMjV6ZENCNVUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQXZJSGRwWkhSb08xeHVJQ0FnSUNBZ1kyOXVjM1FnYzJOaGJHVWdQU0JOWVhSb0xtMWhlQ2d4TENCTllYUm9MbTFwYmloNFUyTmhiR1VzSUhsVFkyRnNaU2twTzF4dUlDQWdJQ0FnZDJsa2RHZ2dQU0IzYVdSMGFDQXFJSE5qWVd4bE8xeHVJQ0FnSUNBZ2FHVnBaMmgwSUQwZ2FHVnBaMmgwSUNvZ2MyTmhiR1U3WEc0Z0lDQWdJQ0IwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb0lDb2djMk5oYkdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjaUE5SUhkcGJtUnZkeTVrWlhacFkyVlFhWGhsYkZKaGRHbHZPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0lEMGdkMmxrZEdnZ0tpQnlPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1WEc0Z0lDQWdMeThnWTI5dWMzUWdZMkZ1ZG1GelNHVnBaMmgwT2lCdWRXMWlaWElnUFNCM2FXUjBhQ0ErSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQS9JR2hsYVdkb2RDQXRJRGdnT2lCb1pXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0b1pXbG5hSFI5Y0hoZ0tUdGNiaUFnSUNCamIyNXpkQ0JqWVc1MllYTklaV2xuYUhRNklHNTFiV0psY2lBOUlIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJRDBnWTJGdWRtRnpTR1ZwWjJoMElDb2djanRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYUdWcFoyaDBKeXdnWUNSN1kyRnVkbUZ6U0dWcFoyaDBmWEI0WUNrN1hHNWNiaUFnSUNBdkx5QkJaR3AxYzNRZ2FHOXpkQ0JoYm1RZ2NtOXZkQ0IzYVdSMGFGeHVJQ0FnSUdsbUlDaDBhR2x6TG1acGVGZHBaSFJvS1NCN1hHNGdJQ0FnSUNBdkx5Qm1kV3hzSUhkcFpIUm9JR1p2Y2lCallXNTJZWE1nYUc5emRDQmhibVFnY205dmRGeHVJQ0FnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG5kcFpIUm9JRDBnZEdocGN5NW9iM04wTG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJR0FrZTJobGFXZG9kSDF3ZUdBN1hHNGdJQ0FnSUNCMGFHbHpMbWh2YzNRdWMzUjViR1V1YzJWMFVISnZjR1Z5ZEhrb0oyOTJaWEptYkc5M0p5d2dKMmhwWkdSbGJpY3NJQ2RwYlhCdmNuUmhiblFuS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnWVd4c2IzY2djMk55YjJ4c0lHTmhiblpoY3lCcGJpQnliMjkwWEc0Z0lDQWdJQ0IwYUdsekxuSnZiM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQjBhR2x6TG1odmMzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXViM1psY21ac2IzZFlJRDBnSjJGMWRHOGhhVzF3YjNKMFlXNTBKenRjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2NuTENCdWRXeHNLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkMFpYaDBMV0ZzYVdkdUp5d2dkR2hwY3k1b2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEtUdGNibHh1SUNBZ0lDQWdMeThnZG1WeWRHbGpZV3dnWVd4cFoyNXRaVzUwWEc0Z0lDQWdJQ0JzWlhRZ2FHOXpkRlJ2Y0UxaGNtZHBiaUE5SURBN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVkbVZ5ZEdsallXeEJiR2xuYm0xbGJuUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0ozUnZjQ2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0F3TzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyMXBaR1JzWlNjNlhHNGdJQ0FnSUNBZ0lHaHZjM1JVYjNCTllYSm5hVzRnUFNCTllYUm9MbTFoZUNnd0xDQW9kR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBdElHaGxhV2RvZENrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkaWIzUjBiMjBuT2x4dUlDQWdJQ0FnSUNCb2IzTjBWRzl3VFdGeVoybHVJRDBnVFdGMGFDNXRZWGdvTUN3Z2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R0WVhKbmFXNHRkRzl3Snl3Z1lDUjdhRzl6ZEZSdmNFMWhjbWRwYm4xd2VHQXNJQ2RwYlhCdmNuUmhiblFuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ1BDQm9aV2xuYUhRcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0MGFHbHpMbkp2YjNRdVkyeHBaVzUwU0dWcFoyaDBmWEI0WUNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY3RlU2NzSUc1MWJHd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R2ZG1WeVpteHZkeTE1Snl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktGeHVJQ0FnSUM4dklDQWdZSFJvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQWtlM1JvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0E5SUNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kSDFjWEc1Z0lDdGNiaUFnSUNBdkx5QWdJR0IwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFFnUFNBa2UzUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0FuWEZ4dUp5QXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUNBZ0lDQWdJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTVqWVc1MllYTXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNW9aV2xuYUhSOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdiV2x1VEdWdVozUm9JRzFwYm1sdGRXMGdiR1Z1WjNSb0lHOW1JSE5sY1hWbGJtTmxJSFJ2SUdSbGRHVmpkQ0J3WVd4bGRIUmxJQ2hsYlhCMGVTQnpkSEpwYm1keklHRnlaU0JoYkd4dmQyVmtLVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRaWEZRWVd4bGRIUmxmU0JRWVd4bGRIUmxJR052Y25KbGMzQnZibVJwYm1jZ2RHOGdkR2hsSUdGc2NHaGhZbVYwSUc5bUlIUm9aU0J6WlhGMVpXNWpaWE1nYVc0Z2RHaGxJR052YkhWdGJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd2FXTnJWWEJRWVd4bGRIUmxLSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0J0YVc1TVpXNW5kR2c2SUc1MWJXSmxjaUE5SURVcE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnNaWFFnY21Wek9pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTa2dlMXh1SUNBZ0lHTmhjMlVnUVcxcGJtOWhZMmxrY3k1VFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2WEc0Z0lDQWdJQ0J5WlhNZ1BTQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdUblZqYkdWdmRHbGtaWE11VTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPbHh1SUNBZ0lDQWdjbVZ6SUQwZ1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGN5NURhSEp2YldGMGIyZHlZVzA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdjM1JoZEhNNklGTmxjVU52YkZOMFlYUnpJRDBnVjJWaVRHOW5ieTVuWlhSVGRHRjBjeWh6WlhGRGIyd3NJRzFwYmt4bGJtZDBhQ3dnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWek9pQmJVMlYwUEhOMGNtbHVaejRzSUZObGNWQmhiR1YwZEdWZFcxMGdQU0JiWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loT2RXTnNaVzkwYVdSbGN5NU9ZVzFsY3lrcExDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpMa05vY205dFlYUnZaM0poYlYwc1hHNGdJQ0FnSUNCYmJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aEJiV2x1YjJGamFXUnpMazVoYldWektTa3NJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6WFN4Y2JpQWdJQ0JkTzF4dUlDQWdJQzh2SUVOaGJHTjFiR0YwWlNCc2FXdGxiR2xvYjI5a2N5Qm1iM0lnWVd4d2FHRmlaWFJmWTJGdVpHbGtZWFJsYzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiVG9nYm5WdFltVnlXMTBnUFNCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOY2JpQWdJQ0FnSUM1dFlYQW9LR01wSUQwK0lGZGxZa3h2WjI4dVoyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLSE4wWVhSekxtWnlaWEVzSUdOYk1GMHBLVHRjYmlBZ0lDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQWdJR2xtSUNodFlYaERiM01nUGlBd0xqVTFLVnh1SUNBZ0lDQWdjbVZ6SUQwZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelcyRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiUzVwYm1SbGVFOW1LRzFoZUVOdmN5bGRXekZkTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhKbGN5QTlJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjeTVEYjJ4dmNqdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRWN1UTI5c2RXMXVmU0J6WlhGRGIyeGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUcxcGJreGxibWQwYUZ4dUlDQWdLaUJBY0dGeVlXMGdlMU53YkdsMGRHVnlSblZ1WTMwZ2MzQnNhWFIwWlhKY2JpQWdJQ29nUUhKbGRIVnliaUI3SUZObGNVTnZiRk4wWVhSeklIMHNJSE5oYldWTVpXNW5kR2c2SUdKdmIyeGxZVzRnZlNCemRHRjBjeUJ2WmlCamIyeDFiVzRnYzJWeGRXVnVZMlZ6WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMFUzUmhkSE1vYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUcxcGJreGxibWQwYURvZ2JuVnRZbVZ5TENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpLVG9nVTJWeFEyOXNVM1JoZEhNZ2UxeHVJQ0FnSUdOdmJuTjBJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUc1MWJXSmxjaUI5SUQwZ2UzMDdYRzRnSUNBZ2JHVjBJSE5oYldWTVpXNW5kR2dnUFNCMGNuVmxPMXh1SUNBZ0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhObGNTQnZaaUJ6WlhGRGIyd3VZMkYwWldkdmNtbGxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITndiR2wwZEdWeUtITmxjU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaG1hWEp6ZEV4bGJtZDBhQ0E5UFNCdWRXeHNLVnh1SUNBZ0lDQWdJQ0JtYVhKemRFeGxibWQwYUNBOUlHMVRaWEV1YkdWdVozUm9PMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9iVk5sY1M1c1pXNW5kR2dnSVQwOUlHWnBjbk4wVEdWdVozUm9LVnh1SUNBZ0lDQWdJQ0J6WVcxbFRHVnVaM1JvSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0ErSUcxcGJreGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzBnYjJZZ2JWTmxjU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doS0cwZ2FXNGdabkpsY1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JtY21WeFcyMWRJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElDczlJREU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIdG1jbVZ4T2lCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvT2lCellXMWxUR1Z1WjNSb2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnWVd4d2FHRmlaWFE2SUZObGREeHpkSEpwYm1jK0xDQm5ZWEJUZVcxaWIydzZJSE4wY21sdVp5QTlJQ2N0SnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnWTI5dWMzUWdhMlY1Y3lBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGloYkxpNHVibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhtY21WeEtTa3NJQzR1TG1Gc2NHaGhZbVYwWFNrN1hHNGdJQ0FnYTJWNWN5NWtaV3hsZEdVb1oyRndVM2x0WW05c0tUdGNibHh1SUNBZ0lHTnZibk4wSUdaeVpYRkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFltVjBRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYTJWNWN5a2dlMXh1SUNBZ0lDQWdabkpsY1VFdWNIVnphQ2h0SUdsdUlHWnlaWEVnUHlCbWNtVnhXMjFkSURvZ01DazdYRzRnSUNBZ0lDQmhiSEJvWVdKbGRFRXVjSFZ6YUNoaGJIQm9ZV0psZEM1b1lYTW9iU2tnUHlBeElEb2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFJRlJvWlhKbElIZGxjbVVnWVNCbVpYY2dhV1JsWVhNNklHTm9hUzF6Y1hWaGNtVmtMQ0J3WldGeWMyOXVJR052Y25KbGJHRjBhVzl1SUNoMllYSnBZVzVqWlQ4cExDQnpZMkZzWVhJZ2NISnZaSFZqZENBcUwxeHVJQ0FnSUdOdmJuTjBJR1p5WlhGV09pQldaV04wYjNJZ1BTQnVaWGNnVm1WamRHOXlLR1p5WlhGQktUdGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1lXeHdhR0ZpWlhSQktUdGNiaUFnSUNCamIyNXpkQ0JqYjNNNklHNTFiV0psY2lBOUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb1puSmxjVllzSUdGc2NHaGhZbVYwVmlrZ0x5QW9kbVZqZEc5eVRHVnVaM1JvS0daeVpYRldLU0FxSUhabFkzUnZja3hsYm1kMGFDaGhiSEJvWVdKbGRGWXBLVHRjYmlBZ0lDQnlaWFIxY200Z1kyOXpPMXh1SUNCOVhHNWNiaUFnTHk4Z0x5b3FJRVpwY25OMElIUnllU0IwYnlCbWFXNWtJR052YkhWdGJpQjNhWFJvSUhObGJWUjVjR1VnSjJGc2FXZHVaV1JUWlhGMVpXNWpaU2N1WEc0Z0lDOHZJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQzh2SUNBcUlFQndZWEpoYlNCN1JFY3VSR0YwWVVaeVlXMWxmU0JrWVhSaFJuSmhiV1ZjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCVWFHVWdZMjlzZFcxdUlIZGxJSGRsY21VZ2JHOXZhMmx1WnlCbWIzSWdiM0lnYm5Wc2JGeHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z2NISnBkbUYwWlNCd2FXTnJWWEJUWlhGRGIyd29aR0YwWVVaeVlXMWxPaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnTHk4Z0lDQnNaWFFnY21Wek9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lEMGdaR0YwWVVaeVlXMWxMbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxLQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5LVHRjYmlBZ0x5OGdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0x5OGdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdSaGRHRkdjbUZ0WlM1amIyeDFiVzV6S1NCN1hHNGdJQzh2SUNBZ0lDQWdJR052Ym5OMElHTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtHTnZiQ0JoY3lCRVJ5NURiMngxYlc0c0lEVXBPMXh1SUNBdkx5QWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0F2THlBZ0lDQWdJQ0FnSUhKbGN5QTlJR052YkR0Y2JpQWdMeThnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnTHk4Z0lDQWdJQ0FnZlZ4dUlDQXZMeUFnSUNBZ2ZWeHVJQ0F2THlBZ0lIMWNiaUFnTHk4Z0lDQnlaWFIxY200Z2NtVnpPMXh1SUNBdkx5QjlYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlRaWEZEYjJ3eUtHUm1PaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0J6WlcxVWVYQmxRMjlzVEdsemRDQTlJR1JtTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsUVd4c0tFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNrN1hHNGdJQ0FnYkdWMElISmxjME52YkRvZ1JFY3VRMjlzZFcxdUlId2diblZzYkNBOUlITmxiVlI1Y0dWRGIyeE1hWE4wTG1acGJtUW9LR052YkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1YVhSeklEOGdkVzVwZEhNdWFXNWtaWGhQWmlnblRWTkJKeWtnSVQwOUlDMHhJRG9nWm1Gc2MyVTdYRzRnSUNBZ2ZTa2dQejhnYm5Wc2JEdGNiaUFnSUNCcFppQW9JWEpsYzBOdmJDQW1KaUJ6WlcxVWVYQmxRMjlzVEdsemRDNXNaVzVuZEdnZ1BpQXdLVnh1SUNBZ0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUNBZ2NtVjBkWEp1SUhKbGMwTnZiRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRzF2Ym05dFpYSlNaU0E5SUM5Y1hGc29YRngzS3lsY1hGMThLRnhjZHlsOEtDMHBMMmM3WEc1Y2JpQWdMeW9xSUZOd2JHbDBJSE5sY1hWbGJtTmxJR1p2Y2lCemFXNW5iR1VnWTJoaGNtRmpkR1Z5SUcxdmJtOXRaWEp6TENCemNYVmhjbVVnWW5KaFkydGxkSE1nYlhWc2RHbGphR0Z5SUcxdmJtOXRaWElnYm1GdFpYTWdiM0lnWjJGd0lITjViV0p2YkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlITmxjU0J2WW1wbFkzUWdkMmwwYUNCelpYRjFaVzVqWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjVG9nWVc1NUtUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloelpYRXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbTF2Ym05dFpYSlNaU2twWEc0Z0lDQWdJQ0F1YldGd0tDaHRZVG9nVW1WblJYaHdUV0YwWTJoQmNuSmhlU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnNaWFFnYlZKbGN6b2djM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQnRZVnN3WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzB1YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodElHbHVJRmRsWWt4dloyOHVZV0ZUZVc1dmJubHRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlGZGxZa3h2WjI4dVlXRlRlVzV2Ym5sdGMxdHRYVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnVEc5dVp5QnRiMjV2YldWeUlDY2tlMjE5SnlCb1lYTWdibTkwSUdFZ2MyaHZjblFnYzNsdWIyNTViUzVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxU1pYTTdYRzRnSUNBZ0lDQjlLUzUwYjBGeWNtRjVLQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYUdWc2JWSmxJRDBnTHloUVJWQlVTVVJGTVh4RVRrRXhmRkpPUVRFcFhGeDdLRnRlZlYwcktYMHZaenRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYUdWc2JWZHlZWEJ3WlhKelVtVWdQU0F2S0ZKY1hDaDhSRnhjS0h4Y1hDbFFLUzluTzF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCb1pXeHRVSEF4VW1VZ1BTQXZYRnhiS0Z0ZVhGeGJYRnhkWFNzcFhTOW5PMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYzNCc2FYUjBaWEpCYzBobGJHMG9jMlZ4T2lCaGJua3BJSHRjYmlBZ0lDQlhaV0pNYjJkdkxtaGxiRzFTWlM1c1lYTjBTVzVrWlhnZ1BTQXdPMXh1SUNBZ0lHTnZibk4wSUdWaE9pQlNaV2RGZUhCRmVHVmpRWEp5WVhrZ2ZDQnVkV3hzSUQwZ1YyVmlURzluYnk1b1pXeHRVbVV1WlhobFl5aHpaWEV1ZEc5VGRISnBibWNvS1NrN1hHNGdJQ0FnWTI5dWMzUWdhVzVUWlhFNklITjBjbWx1WnlCOElHNTFiR3dnUFNCbFlTQS9JR1ZoV3pKZExuSmxjR3hoWTJVb1YyVmlURzluYnk1b1pXeHRWM0poY0hCbGNuTlNaU3dnSnljcElEb2diblZzYkR0Y2JseHVJQ0FnSUdOdmJuTjBJRzF0VUc5emRGQnliMk5sYzNNZ1BTQW9iVzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUE5UGlCN1hHNGdJQ0FnSUNCWFpXSk1iMmR2TG1obGJHMVFjREZTWlM1c1lYTjBTVzVrWlhnZ1BTQXdPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NIQXhUU0E5SUZkbFlreHZaMjh1YUdWc2JWQndNVkpsTG1WNFpXTW9iVzBwTzF4dUlDQWdJQ0FnYVdZZ0tIQndNVTBnSmlZZ2NIQXhUUzVzWlc1bmRHZ2dQajBnTWlrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NIQXhUVnN4WFR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0YlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dVhHNGdJQ0FnWTI5dWMzUWdiVzFNYVhOME9pQnpkSEpwYm1kYlhTQTlJR2x1VTJWeElEOGdhVzVUWlhFdWMzQnNhWFFvSnk0bktTQTZJRnRkTzF4dUlDQWdJR052Ym5OMElHMXRUR2x6ZEZKbGN6b2djM1J5YVc1blcxMGdQU0J0YlV4cGMzUXViV0Z3S0cxdFVHOXpkRkJ5YjJObGMzTXBPMXh1SUNBZ0lISmxkSFZ5YmlCdGJVeHBjM1JTWlhNN1hHNGdJSDFjYmx4dUlDQXZLaW9nUjJWMGN5QnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJVZ1lua2djMlZ3WVhKaGRHOXlYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYQmhjbUYwYjNKY2JpQWdJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUlRjR3hwZEhSbGNsZHBkR2hUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5T2lCemRISnBibWNwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lISmxkSFZ5YmlBb2MyVnhPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ6WlhFdWMzQnNhWFFvYzJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRWRsZENCemNHeHBkSFJsY2lCdFpYUm9iMlFnZEc4Z2MzQnNhWFFnYzJWeGRXVnVZMlZ6SUhSdklHMXZibTl0WlhKelhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IxYm1sMGMxeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYzJWd1lYSmhkRzl5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMU53YkdsMGRHVnlSblZ1WTMxY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFUzQnNhWFIwWlhJb2RXNXBkSE02SUhOMGNtbHVaeXdnYzJWd1lYSmhkRzl5T2lCemRISnBibWNwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lHbG1JQ2gxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb0oyWmhjM1JoSnlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LQ2R6WlhCaGNtRjBiM0luS1NsY2JpQWdJQ0FnSUhKbGRIVnliaUJYWldKTWIyZHZMbWRsZEZOd2JHbDBkR1Z5VjJsMGFGTmxjR0Z5WVhSdmNpaHpaWEJoY21GMGIzSXBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2duYUdWc2JTY3BLVnh1SUNBZ0lDQWdjbVYwZFhKdUlGZGxZa3h2WjI4dWMzQnNhWFIwWlhKQmMwaGxiRzA3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JWYm1WNGNHVmpkR1ZrSUhWdWFYUnpJQ1I3ZFc1cGRITjlJQzVnS1R0Y2JseHVJQ0FnSUM4dklGUlBSRTg2SUZOd2JHbDBkR1Z5SUdadmNpQklSVXhOWEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEZOd2JHbDBkR1Z5Um05eVEyOXNkVzF1S0dOdmJEb2dSRWN1UTI5c2RXMXVLVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCcFppQW9ZMjlzTG5ObGJWUjVjR1VnSVQwOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnUjJWMElITndiR2wwZEdWeUlHWnZjaUJ6WlcxVWVYQmxJRndpSkh0RVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVY5WENJZ2IyNXNlUzVnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSFZ1YVhSeklEMGdZMjlzTG1kbGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVEtUdGNiaUFnSUNCamIyNXpkQ0J6WlhCaGNtRjBiM0lnUFNCamIyd3VaMlYwVkdGbktDZHpaWEJoY21GMGIzSW5LVHRjYmlBZ0lDQnlaWFIxY200Z1YyVmlURzluYnk1blpYUlRjR3hwZEhSbGNpaDFibWwwY3l3Z2MyVndZWEpoZEc5eUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCUGJteDVJSE52YldVZ2IyWWdkR2hsSUhONWJtOXVlVzF6TGlCVWFHVnpaU0IzWlhKbElHOWlkR0ZwYm1Wa0lHWnliMjBnZEdobElHTnNkWE4wWlhKbFpDQnZiR2xuYjNCbGNIUnBaR1VnWkdGMFlYTmxkQzRnS2k5Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1lXRlRlVzV2Ym5sdGN6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2djM1J5YVc1bklIMGdQU0I3WEc0Z0lDQWdKMXROWlU1c1pWMG5PaUFuVENjc0lDOHZJRTVzWlNBdElHNXZjbXhsZFdOcGJtVmNiaUFnSUNBblcwMWxRVjBuT2lBblFTY3NYRzRnSUNBZ0oxdE5aVWRkSnpvZ0owY25MRnh1SUNBZ0lDZGJUV1ZHWFNjNklDZEdKeXhjYmlBZ2ZUdGNibHh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJzYjI1blRXOXViMjFsY2xCaGNuUlNaU0E5SUM4b1hGeDNLeWt2Wnp0Y2JseHVJQ0F2S2lCVGFHOXlkR1Z1Y3lCdGIyNXZiV1Z5SUhKbGNISmxjMlZ1ZEdGMGFXOXVJSFJsZUhRZ1ptOXlJRzF2Ym05dFpYSnpJSGRwZEdnZ2JHOXVaeUJ1WVcxbGN5NWNiaUFnS2lvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2JXOXViMjFsY2xSdlZHVjRkQ2h6Y21NNklHRnVlU2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdZMjl1YzNRZ2MzSmpWSGgwT2lCemRISnBibWNnUFNCemNtTXVkRzlUZEhKcGJtY29LVHRjYmlBZ0lDQnBaaUFvYzNKalZIaDBMbXhsYm1kMGFDQThQU0ExS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYzNKalZIaDBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0J3WVhKMGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloemNtTXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbXh2Ym1kTmIyNXZiV1Z5VUdGeWRGSmxLU2xjYmlBZ0lDQWdJQ0FnTG0xaGNDZ29iV0U2SUZKbFowVjRjRTFoZEdOb1FYSnlZWGtwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRVbVZ6T2lCemRISnBibWNnUFNCdFlWc3dYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZKbGN6dGNiaUFnSUNBZ0lDQWdmU2t1ZEc5QmNuSmhlU2dwTzF4dVhHNGdJQ0FnSUNCcFppQW9jR0Z5ZEhNdWJHVnVaM1JvSUQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NnSnp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJoY25Rd09pQnpkSEpwYm1jZ1BTQndZWEowYzFzd1hUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NtVnpWSGgwT2lCemRISnBibWNnUFNCd1lYSjBNQzVzWlc1bmRHZ2dQQ0EySUQ4Z1lDUjdjR0Z5ZERCOTRvQ21ZQ0E2SUdBa2UzQmhjblF3TG5OMVluTjBjbWx1Wnlnd0xDQTFLWDNpZ0taZ08xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpWSGgwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyIH0gZnJvbSAnLi93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yJztcbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24oZGF0YUNvbCwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzID0geWllbGQgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKHsgZGF0YTogZGF0YUNvbCwgbWV0cmljOiBzaW1pbGFyaXR5TWV0cmljIH0sIG1ldGhvZE5hbWUsIG9wdGlvbnMpO1xuICAgICAgICBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcgPSBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcubWFwKGl0ID0+IG5vcm1hbGl6ZShpdCkpO1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXM7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRjM0JoWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6WlhGMVpXNWpaUzF6Y0dGalpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZGUVN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhOVVVzVDBGQlR5eEZRVUZGTEdsRFFVRnBReXhGUVVFclFpeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJSMnhKTEUxQlFVMHNWVUZCWjBJc2IwTkJRVzlETEVOQlEzUkVMRTlCUVhGRExFVkJRM0pETEZWQlFXdENMRVZCUTJ4Q0xHZENRVUUyUkN4RlFVTTNSQ3hQUVVGaE96dFJRVVZpTEUxQlFVMHNkVUpCUVhWQ0xFZEJRM3BDTEUxQlFVMHNhVU5CUVdsRExFTkJRMjVETEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVdkQ0xFVkJRM3BFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1FpeDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTVUZEYmtNc1EwRkJRenREUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdleUJOWVhSeWFYZ3NJRlpsWTNSdmNpQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzWmxZM1J2Y2kxdmNHVnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZXlCQ2FYUkJjbkpoZVUxbGRISnBZM01zSUZOMGNtbHVaMDFsZEhKcFkzTXNJRlpoYkdsa1ZIbHdaWE1zSUZabFkzUnZjazFsZEhKcFkzTWdmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIc2dZM0psWVhSbFJHbHRaVzV6YVc1aGJHbDBlVkpsWkhWamFXNW5WMjl5YTJWeUxDQkpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUWdmU0JtY205dElDY3VMM2R2Y210bGNuTXZaR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0luTzF4dVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeVpXUjFZMlZFYVcxbGJuTnBibUZzYVhSNVYybDBhRTV2Y20xaGJHbDZZWFJwYjI0b1hHNGdJQ0FnWkdGMFlVTnZiRG9nUW1sMFFYSnlZWGxiWFh4V1pXTjBiM0piWFh4emRISnBibWRiWFN3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJDYVhSQmNuSmhlVTFsZEhKcFkzTjhWbVZqZEc5eVRXVjBjbWxqYzN4VGRISnBibWROWlhSeWFXTnpMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCUWNtOXRhWE5sUEVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZEQ0Z2UxeHVYRzRnSUNBZ1kyOXVjM1FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTZJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0E5WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR055WldGMFpVUnBiV1Z1YzJsdVlXeHBkSGxTWldSMVkybHVaMWR2Y210bGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUhzZ1pHRjBZVG9nWkdGMFlVTnZiQ3dnYldWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpJSDBnWVhNZ1ZtRnNhV1JVZVhCbGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRTVoYldVc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuSUQwZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuTG0xaGNDaHBkQ0E5UGlCdWIzSnRZV3hwZW1Vb2FYUXBLVHRjYmlBZ0lDQnlaWFIxY200Z1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE03WEc1OUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZGlzdGFuY2VNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgJ1ZlY3Rvcic6IHtcbiAgICAgICAgJ0V1Y2xpZGVhbkRpc3RhbmNlJzogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG4gICAgfSxcbiAgICAnU3RyaW5nJzoge1xuICAgICAgICAnTGV2ZW5zaHRlaW4nOiBmbC5kaXN0YW5jZSxcbiAgICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH0sXG4gICAgJ0JpdEFycmF5Jzoge1xuICAgICAgICAnVGFuaW1vdG8nOiBkaXN0YW5jZU1ldHJpY3NbJ1Rhbmltb3RvJ10sXG4gICAgICAgICdEaWNlJzogZGlzdGFuY2VNZXRyaWNzWydEaWNlJ10sXG4gICAgICAgICdBc3ltbWV0cmljJzogZGlzdGFuY2VNZXRyaWNzWydBc3ltbWV0cmljJ10sXG4gICAgICAgICdCcmF1bi1CbGFucXVldCc6IGRpc3RhbmNlTWV0cmljc1snQnJhdW4tQmxhbnF1ZXQnXSxcbiAgICAgICAgJ0Nvc2luZSc6IGRpc3RhbmNlTWV0cmljc1snQ29zaW5lJ10sXG4gICAgICAgICdLdWxjenluc2tpJzogZGlzdGFuY2VNZXRyaWNzWydLdWxjenluc2tpJ10sXG4gICAgICAgICdNYy1Db25uYXVnaGV5JzogZGlzdGFuY2VNZXRyaWNzWydNYy1Db25uYXVnaGV5J10sXG4gICAgICAgICdSb2dvdC1Hb2xkYmVyZyc6IGRpc3RhbmNlTWV0cmljc1snUm9nb3QtR29sZGJlcmcnXSxcbiAgICAgICAgJ1J1c3NlbCc6IGRpc3RhbmNlTWV0cmljc1snUnVzc2VsJ10sXG4gICAgICAgICdTb2thbCc6IGRpc3RhbmNlTWV0cmljc1snU29rYWwnXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZSgpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIHJldHVybiBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVUZETEdWQlFXVXNSVUZCUXl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlEycEdMRTlCUVU4c1JVRkJReXd3UWtGQk1FSXNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlNUTkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMGxCUXpsQ0xGRkJRVkVzUlVGQlJUdFJRVU5TTEcxQ1FVRnRRaXhGUVVGRkxEQkNRVUV3UWp0TFFVTm9SRHRKUVVORUxGRkJRVkVzUlVGQlJUdFJRVU5TTEdGQlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVVHRSUVVNeFFpeGpRVUZqTEVWQlFVVXNWMEZCVnp0TFFVTTFRanRKUVVORUxGVkJRVlVzUlVGQlJUdFJRVU5XTEZWQlFWVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNSVUZCUlN4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJReTlDTEZsQlFWa3NSVUZCUlN4bFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRek5ETEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOdVJDeFJRVUZSTEVWQlFVVXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVOdVF5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNelF5eGxRVUZsTEVWQlFVVXNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOcVJDeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRia1FzVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRia01zVDBGQlR5eEZRVUZGTEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRiRU03UTBGRFJpeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFYRkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1MwRkROVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCY1VJc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdEpRVU55UXl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUjBGQmVVSXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRNVVVzUjBGQlJ5eERRVUZETEVkQlFYbENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRGRFTTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFWZFVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NWVUZCVlR0UlFVTm1MRTFCUVUwc1NVRkJTU3hIUVVGelJDeG5Ra0ZCWjBJc1EwRkJRenRSUVVOcVJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzAxQlJVVTdTVUZEUml4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0a2FYTjBZVzVqWlUxbGRISnBZM045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ2UyTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3Vm1WamRHOXlMQ0JUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpJRDBnZTF4dUlDQW5WbVZqZEc5eUp6b2dlMXh1SUNBZ0lDZEZkV05zYVdSbFlXNUVhWE4wWVc1alpTYzZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCOUxGeHVJQ0FuVTNSeWFXNW5Kem9nZTF4dUlDQWdJQ2RNWlhabGJuTm9kR1ZwYmljNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNBZ0lDZEtZWEp2TFZkcGJtdHNaWEluT2lCcVlYSnZWMmx1YTJ4bGNpeGNiaUFnZlN4Y2JpQWdKMEpwZEVGeWNtRjVKem9nZTF4dUlDQWdJQ2RVWVc1cGJXOTBieWM2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVkdGdWFXMXZkRzhuWFN4Y2JpQWdJQ0FuUkdsalpTYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25SR2xqWlNkZExGeHVJQ0FnSUNkQmMzbHRiV1YwY21sakp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZEJjM2x0YldWMGNtbGpKMTBzWEc0Z0lDQWdKMEp5WVhWdUxVSnNZVzV4ZFdWMEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZENjbUYxYmkxQ2JHRnVjWFZsZENkZExGeHVJQ0FnSUNkRGIzTnBibVVuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjBOdmMybHVaU2RkTEZ4dUlDQWdJQ2RMZFd4amVubHVjMnRwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkTGRXeGplbmx1YzJ0cEoxMHNYRzRnSUNBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjAxakxVTnZibTVoZFdkb1pYa25YU3hjYmlBZ0lDQW5VbTluYjNRdFIyOXNaR0psY21jbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkoxSnZaMjkwTFVkdmJHUmlaWEpuSjEwc1hHNGdJQ0FnSjFKMWMzTmxiQ2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVW5WemMyVnNKMTBzWEc0Z0lDQWdKMU52YTJGc0p6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZFRiMnRoYkNkZExGeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSYmRtRnNJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwZ1BTQnJaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc0lIdDlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEhKcGJtZE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFOMGNtbHVaeWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjBKcGRFRnljbUY1SjEwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSk5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFabFkzUnZjaWRkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQU0I3WkdGMFlUb2djM1J5YVc1blcxMHNJRzFsZEhKcFl6b2dVM1J5YVc1blRXVjBjbWxqYzMwZ2ZDQjdaR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjMzBnZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0a1lYUmhPaUJDYVhSQmNuSmhlVnRkTENCdFpYUnlhV002SUVKcGRFRnljbUY1VFdWMGNtbGpjMzA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dlMXRyWlhrNklITjBjbWx1WjEwNklIdGJhMlY1TWpvZ2MzUnlhVzVuWFRvZ1JHbHpkR0Z1WTJWTlpYUnlhV045ZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnY21WMGRYSnVJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5sZXQgem9vbSA9IGZhbHNlO1xuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcUNvbCwgYXhlc05hbWVzLCBzY2F0dGVyVGl0bGUsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIHNpbWlsYXJpdHlNZXRyaWMsIG1ldGhvZE5hbWUsIHNlbVR5cGUsIHVuaXRzLCBzZXFTcGFjZUZ1bmMsIHNpbUZ1bmMsIHRvb2x0aXBEcmF3RnVuYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBNSU5fU0lNSUxBUklUWSA9IDgwO1xuICAgICAgICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCB7IGRpc3RhbmNlLCBjb29yZGluYXRlcyB9ID0geWllbGQgc2VxU3BhY2VGdW5jKHtcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBjb25zdCBkZlNlcSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCAnc2VxJywgc2VxQ29sLnRvTGlzdCgpKV0pO1xuICAgICAgICBjb25zdCBkaW0gPSBzZXFDb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBzaW1BcnIgPSBBcnJheShkaW0gLSAxKTtcbiAgICAgICAgaWYgKCFkaXN0YW5jZSlcbiAgICAgICAgICAgIHlpZWxkIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG4gICAgICAgIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG4gICAgICAgIGNvbnN0IHNpbVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2FsaVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgbjEgPSBbXTtcbiAgICAgICAgY29uc3QgbjIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2ltID0gc2ltQXJyW2ldLmdldChqKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOCAvIChzYWxpTWF4IC0gc2FsaU1pbik7XG4gICAgICAgIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuICAgICAgICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gICAgICAgIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgICAgICAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgICAgICAgICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICAgICAgICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICAgICAgICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgICAgICAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgICAgICAgICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICAgICAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSB7fTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPVxuICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG4gICAgICAgIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB6b29tID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnQWN0aXZpdHkgY2xpZmZzJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICAgIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcbiAgICAgICAgbGV0IHRpbWVyO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLCBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgem9vbUxlZnQsIHpvb21SaWdodCwgem9vbVRvcCwgem9vbUJvdHRvbSB9ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKHNwLnZpZXdwb3J0LndpZHRoLCBzcC52aWV3cG9ydC5oZWlnaHQsIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzBdKSwgc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pLCBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzFdKSk7XG4gICAgICAgICAgICAgICAgICAgIHNwLnpvb20oem9vbUxlZnQsIHpvb21Ub3AsIHpvb21SaWdodCwgem9vbUJvdHRvbSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5hZGRQcm9wZXJ0eSgnc2ltaWxhcml0eUxpbWl0JywgJ2RvdWJsZScsIG9wdFNpbWlsYXJpdHlMaW1pdCk7XG4gICAgICAgIHJldHVybiBzcDtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFpvb21Db29yZGluYXRlcyhXMCwgSDAsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgY29uc3QgVzEgPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBIMSA9IE1hdGguYWJzKHkxIC0geTIpO1xuICAgIGNvbnN0IHNjYWxlVyA9IFcwIC8gVzE7XG4gICAgY29uc3Qgc2NhbGVIID0gSDAgLyBIMTtcbiAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHNjYWxlVywgc2NhbGVIKTtcbiAgICBjb25zdCBXMiA9IChXMCAvIHNjYWxlKSAqIDU7XG4gICAgY29uc3QgSDIgPSAoSDAgLyBzY2FsZSkgKiA1O1xuICAgIGNvbnN0IGxlZnQgPSB4MSA8IHgyID8geDEgOiB4MjtcbiAgICBjb25zdCB0b3AgPSB5MSA+IHkyID8geTEgOiB5MjtcbiAgICBjb25zdCB6b29tTGVmdCA9IChsZWZ0ICsgVzEgLyAyKSAtIFcyIC8gMjtcbiAgICBjb25zdCB6b29tUmlnaHQgPSB6b29tTGVmdCArIFcyO1xuICAgIGNvbnN0IHpvb21Ub3AgPSAodG9wIC0gSDEgLyAyKSArIEgyIC8gMjtcbiAgICBjb25zdCB6b29tQm90dG9tID0gem9vbVRvcCAtIEgyO1xuICAgIHJldHVybiB7IHpvb21MZWZ0OiB6b29tTGVmdCwgem9vbVJpZ2h0OiB6b29tUmlnaHQsIHpvb21Ub3A6IHpvb21Ub3AsIHpvb21Cb3R0b206IHpvb21Cb3R0b20gfTtcbn1cbmZ1bmN0aW9uIGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzKSB7XG4gICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCBkaXN0ID0gTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICAgICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgICAgICBpZiAoZGlzdCA8IDIpXG4gICAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcCwgeEF4aXMsIHlBeGlzLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbikge1xuICAgIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHhBeGlzKTtcbiAgICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICAgICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICAgICAgbGluZXNbaV0uYSA9IFtwb2ludEZyb20ueCwgcG9pbnRGcm9tLnldO1xuICAgICAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICAgICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgbGluZS5tb3ZlVG8obGluZXNbaV0uYVswXSwgbGluZXNbaV0uYVsxXSk7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSAqIHNhbGlPcGFjaXR5Q29lZjtcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZXNbaV0uaWQgPT09IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA/IDMgOiAxO1xuICAgICAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICAgICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gY3JlYXRlTGluZXMobjEsIG4yLCBzZXEsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cykge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBudW0xID0gbjFbaV07XG4gICAgICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICAgICAgbGluZXMucHVzaCh7IGlkOiBpLCBtb2xzOiBbbnVtMSwgbnVtMl0sIHNlbGVjdGVkOiBmYWxzZSwgYTogW10sIGI6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAgICAgLmluaXQoKGkpID0+IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pIC0gYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1sxXSkpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaSkgPT4gaSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaSkgPT4gc2FsaVZhbHNbaV0pO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgcmV0dXJuIHsgbGluZXMsIGxpbmVzRGYgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeChkaW0sIHNlcUNvbCwgZGZTZXEsIHNpbUFyciwgc2ltRnVuYykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICAgICAgICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgICAgICAgICAgc2ltQXJyW2ldID0gKHlpZWxkIHNpbUZ1bmMoZGZTZXEuY29sKCdzZXEnKSwgbW9sKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpbUFycjtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZXMsIHNpbUFycikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltIC0gMTsgKytpKSB7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICAgICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICAgICAgc2ltQXJyW2ldID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3NpbWlsYXJpdHknLCBGbG9hdDMyQXJyYXkuZnJvbShzaW1pbGFyaXR5QXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBzaW1BcnI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV04wYVhacGRIa3RZMnhwWm1aekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWVdOMGFYWnBkSGt0WTJ4cFptWnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenRCUVVGQkxFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRE1VTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVTjBReXhQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJSWFJETEU5QlFVOHNSVUZCUlN4NVFrRkJlVUlzUlVGQlJTeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJjME0zUml4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRmFrSXNkMFZCUVhkRk8wRkJRM2hGTEUxQlFVMHNWVUZCWjBJc2FVSkJRV2xDTEVOQlEyNURMRVZCUVdkQ0xFVkJRMmhDTEUxQlFXbENMRVZCUTJwQ0xGTkJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEZWQlFYRkNMRVZCUTNKQ0xGVkJRV3RDTEVWQlEyeENMR2RDUVVGM1FpeEZRVU40UWl4VlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVN4RlFVTmlMRmxCUVRaRkxFVkJRemRGTEU5QlFXMUZMRVZCUTI1RkxHVkJRWEZFTEVWQlEzSkVMRTlCUVdFN08xRkJRMllzVFVGQlRTeDNRa0ZCZDBJc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUVUZCVFN4alFVRmpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSVEZDTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVVMVJpeE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhIUVVGSExFMUJRVTBzV1VGQldTeERRVUZETzFsQlEycEVMRTFCUVUwc1JVRkJSU3hOUVVGTk8xbEJRMlFzVlVGQlZTeEZRVUZGTEZWQlFWVTdXVUZEZEVJc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xbEJRMnhETEdOQlFXTXNSVUZCUlN4VFFVRlRPMWxCUTNwQ0xFOUJRVThzUlVGQlJTeFBRVUZQTzFOQlEycENMRU5CUVVNc1EwRkJRenRSUVVWSUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWMEZCVnp0WlFVTXpRaXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWMFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hOUVVGTkxFZEJRV2RDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wTXNTVUZCU1N4RFFVRkRMRkZCUVZFN1dVRkRXQ3hOUVVGTkxHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3V1VGRmFFVXNhVU5CUVdsRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVelJDeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExITkNRVUZ6UWl4RFFVRkRPMUZCUld4RUxFMUJRVTBzVDBGQlR5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxGRkJRVkVzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hGUVVGRkxFZEJRV0VzUlVGQlJTeERRVUZETzFGQlEzaENMRTFCUVUwc1JVRkJSU3hIUVVGaExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZYTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlhKRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhGUVVGRk8yOUNRVU0zUWl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTllMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPM2RDUVVOV0xGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdPM2RDUVVWb1F5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8ybENRVU16UWp0aFFVTkdPMU5CUTBZN1VVRkZSQ3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGRrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1IwRkJSeXhIUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUjJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXZReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNURMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzWlVGQlpTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0xUWl4bFFVRmxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja01zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJReTlETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08yOUNRVVZvUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzFOQlEwWTdVVUZGUkN4TlFVRk5MRWxCUVVrc1IwRkJZeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlJXcEpMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhKQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTVReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNSQ3hYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEWml4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFbEJRVWs3V1VGRGRFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1owSkJRV2RDTEVWQlFVVXNTMEZCU3p0WlFVTjJRaXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxPMWxCUTNoQ0xHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyaENMR0ZCUVdFc1JVRkJSU3hGUVVGRk8xbEJRMnBDTEV0QlFVc3NSVUZCUlN4WlFVRlpPMU5CUTNCQ0xFTkJRVU1zUTBGQmVVSXNRMEZCUXp0UlFVVTFRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTI1R0xFMUJRVTBzVVVGQlVTeEhRVUZSTEVWQlFVVXNRMEZCUXp0UlFVVjZRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZEYmtRc1RVRkJUU3hoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhPMmRDUVVONFFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRWdzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdXVUZETTBRc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJRekZFTEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEYkVRc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRE0wTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8yZENRVU01UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0blFrRkRMMElzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPMjlDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dGhRVU01UWp0WlFVTkVMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFN2IwSkJRMW9zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEwZ3NWMEZCVnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hYUVVGWExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUZEZMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTnlReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEZOQlFWTXNSVUZCUlN4SFFVRkhMRVZCUVVVN1dVRkRNMFVzVFVGQlRTeFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhEUVVGRE8ybENRVU4yUkN4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dHBRa0ZEY2tJc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFZpeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRGVrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlZMRU5CUVVNN1VVRkRNME1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMnhETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU53UXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFdEJRWEZDTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRV2xDTzFsQlF6bEVMRmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEZUVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8zZENRVU4wUWl4TlFVRk5MR2xDUVVGcFFpeEhRVUZIT3pSQ1FVTjRRaXhSUVVGUkxFVkJRVVVzVVVGQlVUczBRa0ZEYkVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3TkVKQlExWXNSVUZCUlN4RlFVRkZMRVZCUVVVN05FSkJRMDRzVFVGQlRTeEZRVUZGTEUxQlFVMDdORUpCUTJRc1VVRkJVU3hGUVVGRkxGVkJRVlU3TkVKQlEzQkNMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6czBRa0ZEYUVJc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNsQ1FVTnFRaXhEUVVGQk8zZENRVU5FTEdWQlFXVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzNGQ1FVTndRenR2UWtGRFJDeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOc1JUdFpRVU5JTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOWUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlRMRXRCUVdsQ08xbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHR2UWtGRGFrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdiMEpCUXk5Q0xGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRmRrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8zZENRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0dlFrRkZOMElzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVUczBRa0ZEV2l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU5LTzNGQ1FVRk5PMjlDUVVOTUxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZET1VNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGVrTXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOb1F5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzNkQ1FVTnFSQ3hGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR4UWtGRGFrUTdhVUpCUTBZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXh6UWtGQmMwSXNRMEZCUXp0aFFVTXZRaXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTm1MRTFCUVUwc1MwRkJTeXhIUVVGSExGZEJRVmNzUTBGQlF5eEZRVUZGTEVWQlF6RkNMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROVVVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1RVRkJUU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03WjBKQlF6RkVMRlZCUVZVc1EwRkJReXhIUVVGRkxFVkJRVVU3YjBKQlEySXNUVUZCVFN4RlFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUXl4SFFVRkhMR3RDUVVGclFpeERRVU51UlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGRGFrSXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRMnhDTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEyNUVMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTI1RUxFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMjVFTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlEzQkVMRU5CUVVFN2IwSkJRMFFzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUTJRc1QwRkJUeXhGUVVOUUxGTkJRVk1zUlVGRFZDeFZRVUZWTEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOU0xFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdZVUZEWkR0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVXdzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeFJRVUZSTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVU5vUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03UTBGQlFUdEJRVVZFTEZOQlFWTXNhMEpCUVd0Q0xFTkJRVU1zUlVGQlZTeEZRVUZGTEVWQlFWVXNSVUZCUlN4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVGRkxFVkJRVlVzUlVGQlJTeEZRVUZWTzBsQlEyaEhMRTFCUVUwc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRemRDTEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRka0lzVFVGQlRTeE5RVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOMlFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VSXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpWQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXk5Q0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpGRExFMUJRVTBzVTBGQlV5eEhRVUZITEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFZRVUZWTEVkQlFVY3NUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOb1F5eFBRVUZQTEVWQlFVTXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bEdMRU5CUVVNN1FVRkZSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRXRCUVZVc1JVRkJSU3hOUVVGWExFVkJRVVVzUzBGQll6dEpRVU5vUlN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc1EwRkJRenRKUVVNMVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEY0VNc1RVRkJUU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wbEJRMjVETEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNTVUZCU1N4SFFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnFSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRE8xbEJRMVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWmp0SlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFTEZOQlFWTXNWMEZCVnl4RFFVRkRMRVZCUVhkQ0xFVkJRek5ETEV0QlFXRXNSVUZCUlN4TFFVRmhMRVZCUVVVc1VVRkJkMElzUlVGQlJTeFJRVUZyUWl4RlFVRkZMR1ZCUVhWQ0xFVkJRVVVzVDBGQlpUdEpRVU53U0N4TlFVRk5MRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFUaENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRGJrVXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFUWkNMRU5CUVVNN1NVRkRhRVVzVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXpsRExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4VFFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTTVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnlReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1R0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGRUxFMUJRVTBzVDBGQlR5eEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGRExHVkJRV1VzUTBGQlF6dFJRVU0zUml4SFFVRkhMRU5CUVVNc1YwRkJWeXhIUVVGSExGRkJRVkVzUzBGQlN5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRPMUZCUXpsRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRMnhDTzBsQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFhRVUZYTEVOQlEyeENMRVZCUVZrc1JVRkRXaXhGUVVGWkxFVkJRMW9zUjBGQll5eEZRVU5rTEZWQlFYRkNMRVZCUTNKQ0xGRkJRV3RDTEVWQlEyeENMRTlCUVdVc1JVRkRaaXhMUVVGaE8wbEJRMklzVFVGQlRTeExRVUZMTEVkQlFWa3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrSXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJUdEpRVU5FTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1lzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNKR0xFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJRenRUUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1JITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETDBRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnNSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJSU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJRM2hETEU5QlFVOHNSVUZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRExFTkJRVU03UVVGRE1VSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJaMElzYjBKQlFXOUNMRU5CUTNSRExFZEJRVmNzUlVGRFdDeE5RVUZwUWl4RlFVTnFRaXhMUVVGdFFpeEZRVU51UWl4TlFVRnRRaXhGUVVOdVFpeFBRVUZ0UlRzN1VVRkhja1VzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRha01zVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVVXNRMEZCUXp0VFFVTjBSRHRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1EwRkJRVHRCUVVWRUxFMUJRVTBzVlVGQlZTeHBRMEZCYVVNc1EwRkJReXhIUVVGWExFVkJRVVVzVTBGQmFVSXNSVUZCUlN4TlFVRnRRanRKUVVWdVJ5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVOb1F5eE5RVUZOTEdGQlFXRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRPMWxCUXpsQ0xHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF5eFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzaEdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnZXlCTllYUnlhWGdnZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZjMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpKenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlRHbHVaU0I3WEc0Z0lHbGtPaUJ1ZFcxaVpYSTdYRzRnSUcxdmJITTZJRzUxYldKbGNsdGRPMXh1SUNCelpXeGxZM1JsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdZVG9nYm5WdFltVnlXMTA3SUM4dklGdDRMQ0I1WFZ4dUlDQmlPaUJ1ZFcxaVpYSmJYVHNnTHk4Z1czZ3NJSGxkWEc1OVhHNWNibWx1ZEdWeVptRmpaU0JKVW1WdVpHVnlaV1JNYVc1bGN5QjdYRzRnSUd4cGJtVnpPaUJKVEdsdVpWdGRPMXh1SUNCc2FXNWxjMFJtT2lCRVJ5NUVZWFJoUm5KaGJXVTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTWdlMXh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxGeHVJQ0FnSUcxbGRHaHZaRTVoYldVNklITjBjbWx1Wnl4Y2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJ6ZEhKcGJtY3NYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUhOMGNtbHVaMXRkTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5sY2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKVTJWeGRXVnVZMlZUY0dGalpWSmxjM1ZzZENCN1hHNGdJQ0FnWkdsemRHRnVZMlU2SUUxaGRISnBlRHRjYmlBZ0lDQmpiMjl5WkdsdVlYUmxjem9nUkVjdVEyOXNkVzF1VEdsemREdGNiaUFnZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbEVjbUYzVkc5dmJIUnBjRkJoY21GdGN5QjdYRzRnSUhSdmIyeDBhWEJ6T2lCaGJua3NYRzRnSUd4cGJtVTZJRWxNYVc1bExGeHVJQ0JrWmpvZ1JFY3VSR0YwWVVaeVlXMWxMRnh1SUNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Yml4Y2JpQWdZV04wYVhacGRIazZJRVJITGtOdmJIVnRiaXhjYmlBZ2VEb2diblZ0WW1WeUxGeHVJQ0I1T2lCdWRXMWlaWEpjYm4xY2JseHViR1YwSUhwdmIyMGdQU0JtWVd4elpUdGNibHh1THk4Z1UyVmhjbU5vWlhNZ1ptOXlJR0ZqZEdsMmFYUjVJR05zYVdabWN5QnBiaUJoSUdOb1pXMXBZMkZzSUdSaGRHRnpaWFFnWW5rZ2MyVnNaV04wWldRZ1kzVjBiMlptWEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwUVdOMGFYWnBkSGxEYkdsbVpuTW9YRzRnSUNBZ1pHWTZJRVJITGtSaGRHRkdjbUZ0WlN3Z1hHNGdJQ0FnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUZ4dUlDQWdJR0Y0WlhOT1lXMWxjem9nYzNSeWFXNW5XMTBzWEc0Z0lDQWdjMk5oZEhSbGNsUnBkR3hsT2lCemRISnBibWNzWEc0Z0lDQWdZV04wYVhacGRHbGxjem9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1T2lCdWRXMWlaWElzWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVTFsZEhKcFl6b2djM1J5YVc1bkxDQmNiaUFnSUNCdFpYUm9iMlJPWVcxbE9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhObGJWUjVjR1U2SUhOMGNtbHVaeXhjYmlBZ0lDQjFibWwwY3pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE5sY1ZOd1lXTmxSblZ1WXpvZ0tIQmhjbUZ0Y3pvZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTXBJRDArSUZCeWIyMXBjMlU4U1ZObGNYVmxibU5sVTNCaFkyVlNaWE4xYkhRK0xGeHVJQ0FnSUhOcGJVWjFibU02SUNoamIydzZJRVJITGtOdmJIVnRiaXdnYlc5c09pQnpkSEpwYm1jcElEMCtJRkJ5YjIxcGMyVThSRWN1UTI5c2RXMXVJSHdnYm5Wc2JENHNYRzRnSUNBZ2RHOXZiSFJwY0VSeVlYZEdkVzVqT2lBb2NHRnlZVzF6T2lCSlJISmhkMVJ2YjJ4MGFYQlFZWEpoYlhNcElEMCtJSFp2YVdRc1hHNGdJQ0FnYjNCMGFXOXVjejg2SUdGdWVTa2dPaUJRY205dGFYTmxQRVJITGxacFpYZGxjajRnZTF4dUlDQmpiMjV6ZENCaGRYUnZiV0YwYVdOVGFXMXBiR0Z5YVhSNVRHbHRhWFFnUFNCbVlXeHpaVHRjYmlBZ1kyOXVjM1FnVFVsT1gxTkpUVWxNUVZKSlZGa2dQU0E0TUR0Y2JseHVJQ0JqYjI1emRDQnBibWwwYVdGc1UybHRhV3hoY21sMGVVeHBiV2wwSUQwZ1lYVjBiMjFoZEdsalUybHRhV3hoY21sMGVVeHBiV2wwSUQ4Z1RVbE9YMU5KVFVsTVFWSkpWRmtnT2lCemFXMXBiR0Z5YVhSNUlDOGdNVEF3TzF4dVhHNGdJR052Ym5OMElIdGthWE4wWVc1alpTd2dZMjl2Y21ScGJtRjBaWE45SUQwZ1lYZGhhWFFnYzJWeFUzQmhZMlZHZFc1aktIdGNiaUFnSUNCelpYRkRiMnc2SUhObGNVTnZiQ3hjYmlBZ0lDQnRaWFJvYjJST1lXMWxPaUJ0WlhSb2IyUk9ZVzFsTEZ4dUlDQWdJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSE5wYldsc1lYSnBkSGxOWlhSeWFXTXNYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUdGNFpYTk9ZVzFsY3l4Y2JpQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpYRzRnSUgwcE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdOdmIzSmthVzVoZEdWektWeHVJQ0FnSUdSbUxtTnZiSFZ0Ym5NdVlXUmtLR052YkNrN1hHNWNiaUFnWTI5dWMzUWdaR1pUWlhFZ1BTQkVSeTVFWVhSaFJuSmhiV1V1Wm5KdmJVTnZiSFZ0Ym5Nb1cwUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dKM05sY1Njc0lITmxjVU52YkM1MGIweHBjM1FvS1NsZEtUdGNiaUFnWTI5dWMzUWdaR2x0SUQwZ2MyVnhRMjlzTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYzJsdFFYSnlPaUJFUnk1RGIyeDFiVzViWFNBOUlFRnljbUY1S0dScGJTQXRJREVwTzF4dVhHNGdJR2xtSUNnaFpHbHpkR0Z1WTJVcFhHNGdJQ0FnWVhkaGFYUWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGdvWkdsdExDQnpaWEZEYjJ3c0lHUm1VMlZ4TENCemFXMUJjbklzSUhOcGJVWjFibU1wTzF4dUlDQmxiSE5sWEc0Z0lDQWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGhHY205dFJHbHpkR0Z1WTJWektHUnBiU3dnWkdsemRHRnVZMlVzSUhOcGJVRnljaWs3WEc1Y2JpQWdZMjl1YzNRZ2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMElEMGdhVzVwZEdsaGJGTnBiV2xzWVhKcGRIbE1hVzFwZER0Y2JseHVJQ0JqYjI1emRDQnphVzFXWVd4ek9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCellXeHBWbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYmpFNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUc0eU9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUdScGJTQXRJREU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlDRTlJR1JwYlNBdElERWdMU0JwT3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElITnBiVG9nYm5WdFltVnlJRDBnYzJsdFFYSnlXMmxkTG1kbGRDaHFLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tITnBiU0ErUFNCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcElIdGNiaUFnSUNBZ0lDQWdiakV1Y0hWemFDaHBLVHRjYmlBZ0lDQWdJQ0FnYmpJdWNIVnphQ2hwSUNzZ2FpQXJJREVwTzF4dUlDQWdJQ0FnSUNCemFXMVdZV3h6TG5CMWMyZ29jMmx0S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVppQTlJRTFoZEdndVlXSnpLR0ZqZEdsMmFYUnBaWE11WjJWMEtHa3BJQzBnWVdOMGFYWnBkR2xsY3k1blpYUW9hU0FySUdvZ0t5QXhLU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHphVzBnSVQwZ01TbGNiaUFnSUNBZ0lDQWdJQ0J6WVd4cFZtRnNjeTV3ZFhOb0tHUnBabVlnTHlBb01TQXRJSE5wYlNrcE8xeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ2MyRnNhVlpoYkhNdWNIVnphQ2hKYm1acGJtbDBlU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjMkZzYVZaaGJITlhhWFJvYjNWMFNXNW1hVzVwZEhrZ1BTQnpZV3hwVm1Gc2N5NW1hV3gwWlhJb2FYUWdQVDRnYVhRZ0lUMDlJRWx1Wm1sdWFYUjVLVHRjYmlBZ1kyOXVjM1FnYzJGc2FVMXBiaUE5SUUxaGRHZ3ViV2x1S0M0dUxuTmhiR2xXWVd4elYybDBhRzkxZEVsdVptbHVhWFI1S1R0Y2JpQWdZMjl1YzNRZ2MyRnNhVTFoZUNBOUlFMWhkR2d1YldGNEtDNHVMbk5oYkdsV1lXeHpWMmwwYUc5MWRFbHVabWx1YVhSNUtUdGNiaUFnWTI5dWMzUWdjMkZzYVU5d1lXTnBkSGxEYjJWbUlEMGdNQzQ0THloellXeHBUV0Y0SUMwZ2MyRnNhVTFwYmlrN1hHNWNibHh1SUNCamIyNXpkQ0J1WldsbmFHSnZkWEp6UTI5MWJuUWdQU0J1WlhjZ1FYSnlZWGtvWkdsdEtTNW1hV3hzS0RBcE8xeHVJQ0JqYjI1emRDQnphVzFwYkdGeWFYUjVRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dUlDQmpiMjV6ZENCellXeHBRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUc0eExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdibVZwWjJoaWIzVnljME52ZFc1MFcyNHhXMmxkWFNBclBTQXhPMXh1SUNBZ0lHNWxhV2RvWW05MWNuTkRiM1Z1ZEZ0dU1sdHBYVjBnS3owZ01UdGNiaUFnSUNCemFXMXBiR0Z5YVhSNVEyOTFiblJiYmpGYmFWMWRJQ3M5SUhOcGJWWmhiSE5iYVYwN1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6YVcxV1lXeHpXMmxkTzF4dUlDQWdJR2xtSUNoellXeHBWbUZzYzF0cFhTQWhQU0JKYm1acGJtbDBlU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHRmpkR2wyYVhScFpYTXVaMlYwS0c0eFcybGRLU0ErSUdGamRHbDJhWFJwWlhNdVoyVjBLRzR5VzJsZEtTbGNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR4VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J6WVd4cE9pQkVSeTVEYjJ4MWJXNGdQU0JFUnk1RGIyeDFiVzR1Wm5KdmJVeHBjM1FvSjJSdmRXSnNaU2NzSUdCellXeHBYeVI3WVhobGMwNWhiV1Z6V3pCZExuTjFZbk4wY21sdVp5aGhlR1Z6VG1GdFpYTmJNRjB1YkdGemRFbHVaR1Y0VDJZb0oxOG5LU2w5WUN3Z2MyRnNhVU52ZFc1MEtUdGNibHh1SUNCa1ppNWpiMngxYlc1ekxtRmtaQ2h6WVd4cEtUdGNibHh1SUNCamIyNXpkQ0IyYVdWM0lEMGdaM0p2YXk1emFHVnNiQzVuWlhSVVlXSnNaVlpwWlhjb1pHWXVibUZ0WlNrN1hHNGdJR052Ym5OMElITndJRDBnZG1sbGR5NWhaR1JXYVdWM1pYSW9SRWN1Vm1sbGQyVnlMbk5qWVhSMFpYSlFiRzkwS0dSbUxDQjdYRzRnSUNBZ2VFTnZiSFZ0Yms1aGJXVTZJR0Y0WlhOT1lXMWxjMXN3WFN4Y2JpQWdJQ0I1UTI5c2RXMXVUbUZ0WlRvZ1lYaGxjMDVoYldWeld6RmRMRnh1SUNBZ0lITnBlbVU2SUhOaGJHa3VibUZ0WlN4Y2JpQWdJQ0JqYjJ4dmNqb2dZV04wYVhacGRHbGxjeTV1WVcxbExGeHVJQ0FnSUhOb2IzZFlVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFpVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFRhWHBsVTJWc1pXTjBiM0k2SUdaaGJITmxMRnh1SUNBZ0lITm9iM2REYjJ4dmNsTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J0WVhKclpYSk5hVzVUYVhwbE9pQTFMRnh1SUNBZ0lHMWhjbXRsY2sxaGVGTnBlbVU2SURJMUxGeHVJQ0FnSUhScGRHeGxPaUJ6WTJGMGRHVnlWR2wwYkdWY2JpQWdmU2twSUdGeklFUkhMbE5qWVhSMFpYSlFiRzkwVm1sbGQyVnlPMXh1WEc0Z0lHTnZibk4wSUdOaGJuWmhjeUE5SUNoemNDNW5aWFJKYm1adktDa2dZWE1nWVc1NUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR3hwYm1WelVtVnpJRDBnWTNKbFlYUmxUR2x1WlhNb2JqRXNJRzR5TENCelpYRkRiMndzSUdGamRHbDJhWFJwWlhNc0lITmhiR2xXWVd4ekxDQnpaVzFVZVhCbExDQjFibWwwY3lrN1hHNGdJR052Ym5OMElIUnZiMngwYVhCek9pQmhibmtnUFNCN2ZUdGNibHh1SUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG05dVEzVnljbVZ1ZEVObGJHeERhR0Z1WjJWa0xuTjFZbk5qY21saVpTZ29LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRFMXZiRWxrZUNBOUlHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEVOdmJDQW1KaUJzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUkRiMnd1Ym1GdFpTQTlQVDBnSnpKZmMyVnhKeUEvSURFZ09pQXdPMXh1SUNBZ0lITndMbVJoZEdGR2NtRnRaUzVqZFhKeVpXNTBVbTkzU1dSNElEMWNiaUFnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0FoUFQwZ0xURWdQeUJzYVc1bGMxSmxjeTVzYVc1bGMxdHNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGhkTG0xdmJITmJZM1Z5Y21WdWRFMXZiRWxrZUYwZ09pQXRNVHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0FoYkdsdVpYTlNaWE11YkdsdVpYTmJNRjB1YzJWc1pXTjBaV1FwTzF4dUlDQWdJSE53TG1SaGRHRkdjbUZ0WlM1elpXeGxZM1JwYjI0dWMyVjBLREFzSUd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0JzYVc1bGMwUm1SM0pwWkM1cGJuWmhiR2xrWVhSbEtDazdYRzRnSUgwcE8xeHVYRzRnSUd4cGJtVnpVbVZ6TG14cGJtVnpSR1l1YjI1VFpXeGxZM1JwYjI1RGFHRnVaMlZrTG5OMVluTmpjbWxpWlNnb1h5a2dQVDRnZTF4dUlDQWdJR2xtSUNoc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG0xdmRYTmxUM1psY2xKdmQwbGtlQ0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMXRzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbTF2ZFhObFQzWmxjbEp2ZDBsa2VGMDdYRzRnSUNBZ0lDQnNhVzVsTG5ObGJHVmpkR1ZrSUQwZ0lXeHBibVV1YzJWc1pXTjBaV1E3WEc0Z0lDQWdJQ0JwWmlBb0lXeHBibVV1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dUlDQWdJSDFjYmlBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsY3k1bWIzSkZZV05vS0Noc0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2JDNXpaV3hsWTNSbFpDbGNiaUFnSUNBZ0lDQWdiQzV0YjJ4ekxtWnZja1ZoWTJnb0tHMHBJRDArSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFFvYlN3Z2RISjFaU2twTzF4dUlDQWdJSDBwTzF4dUlDQWdJR3hwYm1WelJHWkhjbWxrTG1sdWRtRnNhV1JoZEdVb0tUdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdiR2x1WlhORVprZHlhV1FnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5Cc2IzUXVaM0pwWkNncExuTnZjblFvV3lkaFkzUmZaR2xtWmlkZExDQmJabUZzYzJWZEtUdGNibHh1SUNCc2FXNWxjMFJtUjNKcFpDNXZia05sYkd4RGJHbGpheTV6ZFdKelkzSnBZbVVvS0NrZ1BUNGdlMXh1SUNBZ0lIcHZiMjBnUFNCMGNuVmxPMXh1SUNCOUtUdGNibHh1SUNCamIyNXpkQ0JzYVhOMFEyeHBabVp6VEdsdWF5QTlJSFZwTG1KMWRIUnZiaWhnSkh0c2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5KdmQwTnZkVzUwZlNCamJHbG1abk5nTENBb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyeHBabVp6UkdsaGJHOW5JRDBnZFdrdVpHbGhiRzluS0h0MGFYUnNaVG9nSjBGamRHbDJhWFI1SUdOc2FXWm1jeWQ5S1Z4dUlDQWdJQ0FnTG1Ga1pDaHNhVzVsYzBSbVIzSnBaQzV5YjI5MEtWeHVJQ0FnSUNBZ0xuTm9iM2NvS1R0Y2JpQWdJQ0JqYkdsbVpuTkVhV0ZzYjJjdWNtOXZkQzVwWkNBOUlDZGpiR2xtWm5OZlpHbGhiRzluSnp0Y2JpQWdmU2s3WEc0Z0lHeHBjM1JEYkdsbVpuTk1hVzVyTG5OMGVXeGxMbkJ2YzJsMGFXOXVJRDBnSjJGaWMyOXNkWFJsSnp0Y2JpQWdiR2x6ZEVOc2FXWm1jMHhwYm1zdWMzUjViR1V1ZEc5d0lEMGdKekV3Y0hnbk8xeHVJQ0JzYVhOMFEyeHBabVp6VEdsdWF5NXpkSGxzWlM1eWFXZG9kQ0E5SUNjeE1IQjRKenRjYmlBZ2MzQXVjbTl2ZEM1aGNIQmxibVFvYkdsemRFTnNhV1ptYzB4cGJtc3BPMXh1WEc0Z0lHeGxkQ0IwYVcxbGNqb2dUbTlrWlVwVExsUnBiV1Z2ZFhRN1hHNGdJR05oYm5aaGN5NWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtDZHRiM1Z6WlcxdmRtVW5MQ0JtZFc1amRHbHZiaUFvWlhabGJuUTZJRTF2ZFhObFJYWmxiblFwSUh0Y2JpQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaWElwTzF4dUlDQWdJSFJwYldWeUlEMGdaMnh2WW1Gc0xuTmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiR2x1WlNBOUlHTm9aV05yUTNWeWMyOXlUMjVNYVc1bEtHVjJaVzUwTENCallXNTJZWE1zSUd4cGJtVnpVbVZ6TG14cGJtVnpLVHRjYmlBZ0lDQWdJR2xtSUNoc2FXNWxJQ1ltSUdSbUxtMXZkWE5sVDNabGNsSnZkMGxrZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwYjI5c2RHbHdjMXRzYVc1bExtbGtYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdSeVlYZFViMjlzZEdsd1VHRnlZVzF6SUQwZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5dmJIUnBjSE02SUhSdmIyeDBhWEJ6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlRvZ2JHbHVaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUm1PaUJrWml4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sY1VOdmJEb2djMlZ4UTI5c0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdOMGFYWnBkSGs2SUdGamRHbDJhWFJwWlhNc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I0T2lCbGRtVnVkQzVqYkdsbGJuUllMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VUb2daWFpsYm5RdVkyeHBaVzUwV1Z4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0IwYjI5c2RHbHdSSEpoZDBaMWJtTW9aSEpoZDFSdmIyeDBhWEJRWVhKaGJYTXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhWcExuUnZiMngwYVhBdWMyaHZkeWgwYjI5c2RHbHdjMXRzYVc1bExtbGtYU3dnWlhabGJuUXVZMnhwWlc1MFdDd2daWFpsYm5RdVkyeHBaVzUwV1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z01UQXdNQ2s3WEc0Z0lIMHBPMXh1WEc0Z0lHTmhiblpoY3k1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0NkdGIzVnpaV1J2ZDI0bkxDQm1kVzVqZEdsdmJpaGxkbVZ1ZERvZ1RXOTFjMlZGZG1WdWRDa2dlMXh1SUNBZ0lHTnZibk4wSUd4cGJtVWdQU0JqYUdWamEwTjFjbk52Y2s5dVRHbHVaU2hsZG1WdWRDd2dZMkZ1ZG1GekxDQnNhVzVsYzFKbGN5NXNhVzVsY3lrN1hHNGdJQ0FnYVdZZ0tHeHBibVVnSmlZZ1pHWXViVzkxYzJWUGRtVnlVbTkzU1dSNElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1YyWlc1MExtTjBjbXhMWlhrcElIdGNiaUFnSUNBZ0lDQWdiR2x1WlM1elpXeGxZM1JsWkNBOUlDRnNhVzVsTG5ObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5ObGJHVmpkR2x2Ymk1elpYUW9iR2x1WlM1cFpDd2diR2x1WlM1elpXeGxZM1JsWkNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGc2FXNWxMbk5sYkdWamRHVmtLVnh1SUNBZ0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dVhHNGdJQ0FnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6TG1admNrVmhZMmdvS0d3cElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9iQzV6Wld4bFkzUmxaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHd3ViVzlzY3k1bWIzSkZZV05vS0NodEtTQTlQaUJrWmk1elpXeGxZM1JwYjI0dWMyVjBLRzBzSUhSeWRXVXBLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9iR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFVtOTNTV1I0SUNFOVBTQnNhVzVsTG1sa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEMGdiR2x1WlM1cFpEdGNiaUFnSUNBZ0lDQWdJQ0JrWmk1amRYSnlaVzUwVW05M1NXUjRJRDBnYkdsdVpTNXRiMnh6V3pCZE8xeHVJQ0FnSUNBZ0lDQWdJR1JtTG5ObGJHVmpkR2x2Ymk1elpYUW9NQ3dnSVd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtEQXNJR3hwYm1WelVtVnpMbXhwYm1Weld6QmRMbk5sYkdWamRHVmtLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYmlBZ2MzQXViMjVGZG1WdWRDZ25aRFF0WW1WbWIzSmxMV1J5WVhjdGMyTmxibVVuS1Z4dUlDQWdJQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVZ6SUQwZ2NtVnVaR1Z5VEdsdVpYTW9jM0FzWEc0Z0lDQWdJQ0FnSUdGNFpYTk9ZVzFsYzFzd1hTd2dZWGhsYzA1aGJXVnpXekZkTENCc2FXNWxjMUpsY3l3Z2MyRnNhVlpoYkhNc0lITmhiR2xQY0dGamFYUjVRMjlsWml3Z2MyRnNhVTFwYmlrN1hHNGdJQ0FnSUNCcFppQW9lbTl2YlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamRYSnlaVzUwVEdsdVpTQTlJR3hwYm1WelcyeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlRjA3WEc0Z0lDQWdJQ0FnSUhObGRGUnBiV1Z2ZFhRb0tDazlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZTNwdmIyMU1aV1owTENCNmIyOXRVbWxuYUhRc0lIcHZiMjFVYjNBc0lIcHZiMjFDYjNSMGIyMTlJRDBnWjJWMFdtOXZiVU52YjNKa2FXNWhkR1Z6S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdjM0F1ZG1sbGQzQnZjblF1ZDJsa2RHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNTJhV1YzY0c5eWRDNW9aV2xuYUhRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN3WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzd1hTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNWtZWFJoUm5KaGJXVXVaMlYwS0dGNFpYTk9ZVzFsYzFzeFhTd2dZM1Z5Y21WdWRFeHBibVV1Ylc5c2Mxc3dYU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1WjJWMEtHRjRaWE5PWVcxbGMxc3dYU3dnWTNWeWNtVnVkRXhwYm1VdWJXOXNjMXN4WFNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN4WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzeFhTbGNiaUFnSUNBZ0lDQWdJQ0FwSUNBZ0lDQWdJQ0JjYmlBZ0lDQWdJQ0FnSUNCemNDNTZiMjl0S0hwdmIyMU1aV1owTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlbTl2YlZSdmNDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhwdmIyMVNhV2RvZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSHB2YjIxQ2IzUjBiMjBwTzF4dUlDQWdJQ0FnSUNCOUxDQXpNREFwTzF4dUlDQWdJQ0FnSUNCNmIyOXRJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ2MzQXVZV1JrVUhKdmNHVnlkSGtvSjNOcGJXbHNZWEpwZEhsTWFXMXBkQ2NzSUNka2IzVmliR1VuTENCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcE8xeHVJQ0J5WlhSMWNtNGdjM0E3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2RsZEZwdmIyMURiMjl5WkdsdVlYUmxjeWhYTURvZ2JuVnRZbVZ5TENCSU1Eb2diblZ0WW1WeUxDQjRNVG9nYm5WdFltVnlMQ0I1TVRvZ2JuVnRZbVZ5TENCNE1qb2diblZ0WW1WeUxDQjVNam9nYm5WdFltVnlLU0I3WEc0Z0lHTnZibk4wSUZjeElEMGdUV0YwYUM1aFluTW9lREVnTFNCNE1pazdYRzRnSUdOdmJuTjBJRWd4SUQwZ1RXRjBhQzVoWW5Nb2VURWdMU0I1TWlrN1hHNGdJR052Ym5OMElITmpZV3hsVnlBOUlGY3dJQzhnVnpFN1hHNGdJR052Ym5OMElITmpZV3hsU0NBOUlFZ3dJQzhnU0RFN1hHNGdJR052Ym5OMElITmpZV3hsSUQwZ1RXRjBhQzV0YVc0b2MyTmhiR1ZYTENCelkyRnNaVWdwTzF4dUlDQmpiMjV6ZENCWE1pQTlJQ2hYTUNBdklITmpZV3hsS1NBcUlEVTdYRzRnSUdOdmJuTjBJRWd5SUQwZ0tFZ3dJQzhnYzJOaGJHVXBJQ29nTlR0Y2JpQWdZMjl1YzNRZ2JHVm1kQ0E5SUhneElEd2dlRElnUHlCNE1TQTZJSGd5TzF4dUlDQmpiMjV6ZENCMGIzQWdQU0I1TVNBK0lIa3lJRDhnZVRFZ09pQjVNanRjYmlBZ1kyOXVjM1FnZW05dmJVeGxablFnUFNBb2JHVm1kQ0FySUZjeElDOGdNaWtnTFNCWE1pQXZJREk3WEc0Z0lHTnZibk4wSUhwdmIyMVNhV2RvZENBOUlIcHZiMjFNWldaMElDc2dWekk3WEc0Z0lHTnZibk4wSUhwdmIyMVViM0FnUFNBb2RHOXdJQzBnU0RFZ0x5QXlLU0FySUVneUlDOGdNanRjYmlBZ1kyOXVjM1FnZW05dmJVSnZkSFJ2YlNBOUlIcHZiMjFVYjNBZ0xTQklNanRjYmlBZ2NtVjBkWEp1SUh0NmIyOXRUR1ZtZERvZ2VtOXZiVXhsWm5Rc0lIcHZiMjFTYVdkb2REb2dlbTl2YlZKcFoyaDBMQ0I2YjI5dFZHOXdPaUI2YjI5dFZHOXdMQ0I2YjI5dFFtOTBkRzl0T2lCNmIyOXRRbTkwZEc5dGZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnREZFhKemIzSlBia3hwYm1Vb1pYWmxiblE2SUdGdWVTd2dZMkZ1ZG1Gek9pQmhibmtzSUd4cGJtVnpPaUJKVEdsdVpWdGRLVG9nU1V4cGJtVWdmQ0J1ZFd4c0lIdGNiaUFnWTI5dWMzUWdjbVZqZENBOUlHTmhiblpoY3k1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVHRjYmlBZ1kyOXVjM1FnZUNBOUlHVjJaVzUwTG1Oc2FXVnVkRmdnTFNCeVpXTjBMbXhsWm5RN1hHNGdJR052Ym5OMElIa2dQU0JsZG1WdWRDNWpiR2xsYm5SWklDMGdjbVZqZEM1MGIzQTdYRzRnSUdadmNpQW9ZMjl1YzNRZ2JHbHVaU0J2WmlCc2FXNWxjeWtnZTF4dUlDQWdJR052Ym5OMElHUnBjM1FnUFZ4dUlDQWdJQ0FnVFdGMGFDNWhZbk1vVFdGMGFDNW9lWEJ2ZENoc2FXNWxMbUZiTUYwZ0xTQjRMQ0JzYVc1bExtRmJNVjBnTFNCNUtTQXJYRzRnSUNBZ0lDQk5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlsc3dYU0F0SUhnc0lHeHBibVV1WWxzeFhTQXRJSGtwSUMwZ1RXRjBhQzVvZVhCdmRDaHNhVzVsTG1GYk1GMGdMU0JzYVc1bExtSmJNRjBzSUd4cGJtVXVZVnN4WFNBdElHeHBibVV1WWxzeFhTa3BPMXh1SUNBZ0lHbG1JQ2hrYVhOMElEd2dNaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQnNhVzVsTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ1ZFd4c08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCeVpXNWtaWEpNYVc1bGN5aHpjRG9nUkVjdVUyTmhkSFJsY2xCc2IzUldhV1YzWlhJc1hHNGdJSGhCZUdsek9pQnpkSEpwYm1jc0lIbEJlR2x6T2lCemRISnBibWNzSUd4cGJtVnpVbVZ6T2lCSlVtVnVaR1Z5WldSTWFXNWxjeXdnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkTENCellXeHBUM0JoWTJsMGVVTnZaV1k2SUc1MWJXSmxjaXdnYzJGc2FVMXBiam9nYm5WdFltVnlLVG9nU1V4cGJtVWdXMTBnZTF4dUlDQmpiMjV6ZENCc2FXNWxjeUE5SUd4cGJtVnpVbVZ6TG14cGJtVnpPMXh1SUNCamIyNXpkQ0JqWVc1MllYTWdQU0FvYzNBdVoyVjBTVzVtYnlncElHRnpJSHRiYVc1a1pYZzZJSE4wY21sdVoxMGdPaUJoYm5sOUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR04wZUNBOUlHTmhiblpoY3k1blpYUkRiMjUwWlhoMEtDY3laQ2NwSUdGeklFTmhiblpoYzFKbGJtUmxjbWx1WjBOdmJuUmxlSFF5UkR0Y2JpQWdZMjl1YzNRZ2VDQTlJSE53TG1SaGRHRkdjbUZ0WlNFdVkyOXNkVzF1Y3k1aWVVNWhiV1VvZUVGNGFYTXBPMXh1SUNCamIyNXpkQ0I1SUQwZ2MzQXVaR0YwWVVaeVlXMWxJUzVqYjJ4MWJXNXpMbUo1VG1GdFpTaDVRWGhwY3lrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdsdVpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0JqYjI1emRDQndiMmx1ZEVaeWIyMGdQU0J6Y0M1M2IzSnNaRlJ2VTJOeVpXVnVLSGd1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcExDQjVMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjRzlwYm5SVWJ5QTlJSE53TG5kdmNteGtWRzlUWTNKbFpXNG9lQzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrc0lIa3VaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdJQ0JzYVc1bGMxdHBYUzVoSUQwZ1czQnZhVzUwUm5KdmJTNTRMQ0J3YjJsdWRFWnliMjB1ZVYwN1hHNGdJQ0FnYkdsdVpYTmJhVjB1WWlBOUlGdHdiMmx1ZEZSdkxuZ3NJSEJ2YVc1MFZHOHVlVjA3WEc0Z0lDQWdZMjl1YzNRZ2JHbHVaU0E5SUc1bGR5QlFZWFJvTWtRb0tUdGNiaUFnSUNCc2FXNWxMbTF2ZG1WVWJ5aHNhVzVsYzF0cFhTNWhXekJkTENCc2FXNWxjMXRwWFM1aFd6RmRLVHRjYmlBZ0lDQmpiMjV6ZENCamIyeHZjaUE5SUd4cGJtVnpXMmxkTG5ObGJHVmpkR1ZrSUQ4Z0p6STFOU3d5TlRVc01DY2dPaUFuTUN3eE1qZ3NNQ2M3WEc0Z0lDQWdZMjl1YzNRZ2IzQmhZMmwwZVNBOUlITmhiR2xXWVd4elcybGRJRDA5UFNCSmJtWnBibWwwZVNBL0lERWdPaUF3TGpJZ0t5QW9jMkZzYVZaaGJITmJhVjBnTFNCellXeHBUV2x1S1NwellXeHBUM0JoWTJsMGVVTnZaV1k3WEc0Z0lDQWdZM1I0TG5OMGNtOXJaVk4wZVd4bElEMGdZSEpuWW1Fb0pIdGpiMnh2Y24wc0pIdHZjR0ZqYVhSNWZTbGdPMXh1SUNBZ0lHTjBlQzVzYVc1bFYybGtkR2dnUFNCc2FXNWxjMXRwWFM1cFpDQTlQVDBnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEOGdNeUE2SURFN1hHNGdJQ0FnYkdsdVpTNXNhVzVsVkc4b2JHbHVaWE5iYVYwdVlsc3dYU3dnYkdsdVpYTmJhVjB1WWxzeFhTazdYRzRnSUNBZ1kzUjRMbk4wY205clpTaHNhVzVsS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYkdsdVpYTTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnlaV0YwWlV4cGJtVnpLRnh1SUNCdU1Ub2diblZ0WW1WeVcxMHNJRnh1SUNCdU1qb2diblZ0WW1WeVcxMHNJRnh1SUNCelpYRTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lHRmpkR2wyYVhScFpYTTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lITmhiR2xXWVd4ek9pQnVkVzFpWlhKYlhTeGNiaUFnYzJWdFZIbHdaVG9nYzNSeWFXNW5MRnh1SUNCMWJtbDBjem9nYzNSeWFXNW5LU0E2SUVsU1pXNWtaWEpsWkV4cGJtVnpJSHRjYmlBZ1kyOXVjM1FnYkdsdVpYTTZJRWxNYVc1bFcxMGdQU0JiWFR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1TVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUc1MWJURWdQU0J1TVZ0cFhUdGNiaUFnSUNCamIyNXpkQ0J1ZFcweUlEMGdiakpiYVYwN1hHNGdJQ0FnYkdsdVpYTXVjSFZ6YUNoN2FXUTZJR2tzSUcxdmJITTZJRnR1ZFcweExDQnVkVzB5WFN3Z2MyVnNaV04wWldRNklHWmhiSE5sTENCaE9pQmJYU3dnWWpvZ1cxMTlLVHRjYmlBZ2ZWeHVJQ0JqYjI1emRDQnNhVzVsYzBSbUlEMGdSRWN1UkdGMFlVWnlZVzFsTG1OeVpXRjBaU2hzYVc1bGN5NXNaVzVuZEdncE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1UzUnlhVzVuS0NjeFgzTmxjU2NwTG1sdWFYUW9LR2s2SUc1MWJXSmxjaWtnUFQ0Z2MyVnhMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkVGRISnBibWNvSnpKZmMyVnhKeWt1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCelpYRXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2RoWTNSZlpHbG1aaWNwWEc0Z0lDQWdMbWx1YVhRb0tHazZJRzUxYldKbGNpa2dQVDRnVFdGMGFDNWhZbk1vWVdOMGFYWnBkR2xsY3k1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzd1hTa2dMU0JoWTNScGRtbDBhV1Z6TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pGZEtTa3BPMXh1SUNCc2FXNWxjMFJtTG1OdmJIVnRibk11WVdSa1RtVjNTVzUwS0Nkc2FXNWxYMmx1WkdWNEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2R6WVd4cEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJ6WVd4cFZtRnNjMXRwWFNrN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeVgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1elpXMVVlWEJsSUQwZ2MyVnRWSGx3WlR0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpKZmMyVnhKeWtoTG5ObGJWUjVjR1VnUFNCelpXMVVlWEJsTzF4dUlDQnlaWFIxY200Z2UyeHBibVZ6TENCc2FXNWxjMFJtZlR0Y2JuMWNibHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRLRnh1SUNBZ0lHUnBiVG9nYm5WdFltVnlMQ0JjYmlBZ0lDQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpd2dYRzRnSUNBZ1pHWlRaWEU2SUVSSExrUmhkR0ZHY21GdFpTd2dYRzRnSUNBZ2MybHRRWEp5T2lCRVJ5NURiMngxYlc1YlhTeGNiaUFnSUNCemFXMUdkVzVqT2lBb1kyOXNPaUJFUnk1RGIyeDFiVzRzSUcxdmJEb2djM1J5YVc1bktTQTlQaUJRY205dGFYTmxQRVJITGtOdmJIVnRiaUI4SUc1MWJHdytYRzRnSUNBZ0tWeHVJQ0E2SUZCeWIyMXBjMlU4UkVjdVEyOXNkVzF1VzEwK0lIdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnSVQwZ1pHbHRJQzBnTVRzZ0t5dHBLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JXOXNJRDBnYzJWeFEyOXNMbWRsZENocEtUdGNiaUFnSUNCa1psTmxjUzV5YjNkekxuSmxiVzkyWlVGMEtEQXNJREVzSUdaaGJITmxLVHRjYmlBZ0lDQnphVzFCY25KYmFWMGdQU0FvWVhkaGFYUWdjMmx0Um5WdVl5aGtabE5sY1M1amIyd29KM05sY1NjcElTd2diVzlzS1NraE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXMUJjbkk3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFJwWlhOTllYSnBlRVp5YjIxRWFYTjBZVzVqWlhNb1pHbHRPaUJ1ZFcxaVpYSXNJR1JwYzNSaGJtTmxjem9nVFdGMGNtbDRMQ0J6YVcxQmNuSTZJRVJITGtOdmJIVnRibHRkS1Z4dUlDQTZJRVJITGtOdmJIVnRibHRkSUh0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCamIyNXpkQ0J6YVcxcGJHRnlhWFI1UVhKeUlEMGdXMTA3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z1pHbHRPeUFySzJvcFhHNGdJQ0FnSUNCemFXMXBiR0Z5YVhSNVFYSnlMbkIxYzJnb1oyVjBVMmx0YVd4aGNtbDBlVVp5YjIxRWFYTjBZVzVqWlNoa2FYTjBZVzVqWlhOYmFWMWJhbDBwS1R0Y2JpQWdJQ0J6YVcxQmNuSmJhVjBnUFNCRVJ5NURiMngxYlc0dVpuSnZiVVpzYjJGME16SkJjbkpoZVNnbmMybHRhV3hoY21sMGVTY3NJRVpzYjJGME16SkJjbkpoZVM1bWNtOXRLSE5wYldsc1lYSnBkSGxCY25JcEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2MybHRRWEp5TzF4dWZTSmRmUT09IiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcihkYXRhTWV0cmljLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2RpbWVuc2lvbmFsaXR5LXJlZHVjZXInLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGNvbHVtbkRhdGE6IGRhdGFNZXRyaWMuZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICAgICAgbWVhc3VyZTogZGF0YU1ldHJpYy5tZXRyaWMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZGlzdGFuY2UsIGVtYmVkZGluZyB9IH0pID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoeyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUprYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJsdVp5MTNiM0pyWlhJdFkzSmxZWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRnBRa0VzVFVGQlRTeFZRVUZWTEdsRFFVRnBReXhEUVVGRExGVkJRWE5DTEVWQlFVVXNUVUZCWXl4RlFVTnNSaXhQUVVGaE8wbEJSV3BDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJVeXhQUVVGUE8xRkJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETERCQ1FVRXdRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0WlFVTXpRaXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVOHNSVUZCUlN4VlFVRlZMRU5CUVVNc1RVRkJUVHRaUVVNeFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeE5RVUZOTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0JFTEU5QlFVOHNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRXWVd4cFpGUjVjR1Z6ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCQklIZHZjbXRsY2lCMGJ5QndaWEptYjNKdElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFaaGJHbGtWSGx3WlhOOUlHUmhkR0ZOWlhSeWFXTWdWR2hsSUdSaGRHRWdkRzhnY0hKdlkyVnpjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYUm9iMlFnUVNCdFpYUm9iMlFnYjJZZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDb2dRSEJoY21GdElHOXdkR2x2Ym5NZ0xTQnJaWGt0ZG1Gc2RXVWdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQnlaWFIxY201RWFYTjBZVzVqWlUxaGRISnBlRnh1SUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK2ZTQlNaWE4xYkhScGJtY2daVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBJSHRjYmlBZ1pHbHpkR0Z1WTJVNklFMWhkSEpwZUR0Y2JpQWdaVzFpWldSa2FXNW5PaUJOWVhSeWFYZzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZFYVcxbGJuTnBibUZzYVhSNVVtVmtkV05wYm1kWGIzSnJaWElvWkdGMFlVMWxkSEpwWXpvZ1ZtRnNhV1JVZVhCbGN5d2diV1YwYUc5a09pQnpkSEpwYm1jc1hHNGdJQ0FnSUNCdmNIUnBiMjV6UHpvZ1lXNTVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRvY21WemIyeDJaU2tnZTF4dUlDQWdJR052Ym5OMElIZHZjbXRsY2lBOUlHNWxkeUJYYjNKclpYSW9ibVYzSUZWU1RDZ25MaTlrYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJWeUp5d2dhVzF3YjNKMExtMWxkR0V1ZFhKc0tTazdYRzRnSUNBZ2QyOXlhMlZ5TG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNBZ0lHTnZiSFZ0YmtSaGRHRTZJR1JoZEdGTlpYUnlhV011WkdGMFlTeGNiaUFnSUNBZ0lHMWxkR2h2WkRvZ2JXVjBhRzlrTEZ4dUlDQWdJQ0FnYldWaGMzVnlaVG9nWkdGMFlVMWxkSEpwWXk1dFpYUnlhV01zWEc0Z0lDQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpMRnh1SUNBZ0lIMHBPMXh1SUNBZ0lIZHZjbXRsY2k1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGthWE4wWVc1alpTd2daVzFpWldSa2FXNW5mWDBwSUQwK0lIdGNiaUFnSUNBZ2NtVnpiMngyWlNoN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzBwTzF4dUlDQWdJSDA3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgJ0RpY2UnOiBkaWNlU2ltaWxhcml0eSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5LFxuICAgICdDb3NpbmUnOiBjb3NpbmVTaW1pbGFyaXR5LFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraVNpbWlsYXJpdHksXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgICdSdXNzZWwnOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgICdTb2thbCc6IHNva2FsU2ltaWxhcml0eSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICAnRGljZSc6IGRpY2VEaXN0YW5jZSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgJ0Nvc2luZSc6IGNvc2luZURpc3RhbmNlLFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraURpc3RhbmNlLFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgICdSdXNzZWwnOiBydXNzZWxEaXN0YW5jZSxcbiAgICAnU29rYWwnOiBzb2thbERpc3RhbmNlLFxuICAgICdIYW1taW5nJzogaGFtbWluZ0Rpc3RhbmNlLFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbJ1Rhbmltb3RvJywgJ0RpY2UnLCAnQ29zaW5lJywgJ0hhbW1pbmcnLCAnRXVjbGlkZWFuJ107XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKHRvdGFsIC0gY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gMiAqIGNvbW1vbiAvIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoZGljZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBNYXRoLnNxcnQodG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShjb3NpbmVTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoeC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoaGFtbWluZ0Rpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKDIgKiB0b3RhbCAtIDMgKiBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNva2FsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsKSAvICgyICogdG90YWxQcm9kKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCAtIHRvdGFsUHJvZCkgLyB0b3RhbFByb2Q7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWluID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtaW47XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtYXggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1heDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBpZiAoeC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIHgubGVuZ3RoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShydXNzZWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIGNvbnN0IHRvdGFsID0geC5jb3VudEJpdHModHJ1ZSkgKyB5LmNvdW50Qml0cyh0cnVlKTtcbiAgICBjb25zdCBsZW4gPSB4Lmxlbmd0aDtcbiAgICBjb25zdCBkaWZmID0gbGVuIC0gdG90YWwgKyBjb21tb247XG4gICAgaWYgKChjb21tb24gPT0gbGVuKSB8fCAoZGlmZiA9PSBsZW4pKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNvbW1vbiAvIHRvdGFsICsgZGlmZiAvICgyICogbGVuIC0gdG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2UpIHtcbiAgICByZXR1cm4gMSAvICgxICsgZGlzdGFuY2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc2ltaWxhcml0eSkge1xuICAgIHJldHVybiAxIC8gc2ltaWxhcml0eSAtIDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVTXNUVUZCVFN4VlFVRlZMRU5CUVVNN1FVRkZia01zVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVEpFTzBsQlEzUkdMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSTdTVUZET1VJc1RVRkJUU3hGUVVGRkxHTkJRV003U1VGRGRFSXNXVUZCV1N4RlFVRkZMRzlDUVVGdlFqdEpRVU5zUXl4blFrRkJaMElzUlVGQlJTeDFRa0ZCZFVJN1NVRkRla01zVVVGQlVTeEZRVUZGTEdkQ1FVRm5RanRKUVVNeFFpeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wbEJRMnhETEdWQlFXVXNSVUZCUlN4elFrRkJjMEk3U1VGRGRrTXNaMEpCUVdkQ0xFVkJRVVVzZFVKQlFYVkNPMGxCUTNwRExGRkJRVkVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRNVUlzVDBGQlR5eEZRVUZGTEdWQlFXVTdTVUZEZUVJc1UwRkJVeXhGUVVGRkxHbENRVUZwUWp0SlFVTTFRaXhYUVVGWExFVkJRVVVzYlVKQlFXMUNPME5CUTJwRExFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4bFFVRmxMRWRCUVRKRU8wbEJRM0pHTEZWQlFWVXNSVUZCUlN4blFrRkJaMEk3U1VGRE5VSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3h4UWtGQmNVSTdTVUZEZGtNc1VVRkJVU3hGUVVGRkxHTkJRV003U1VGRGVFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTzBsQlEzSkRMR2RDUVVGblFpeEZRVUZGTEhGQ1FVRnhRanRKUVVOMlF5eFJRVUZSTEVWQlFVVXNZMEZCWXp0SlFVTjRRaXhQUVVGUExFVkJRVVVzWVVGQllUdEpRVU4wUWl4VFFVRlRMRVZCUVVVc1pVRkJaVHRKUVVNeFFpeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ08wTkJReTlDTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVVNVJpeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNM1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkRXaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnVSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM0pFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU14UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM2hFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOMFJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOd1JDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzlDUVVGdlFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dlFrRkJiMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXpSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2IwSkJRVzlDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRNMFFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hyUWtGQmEwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONlJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OUVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHhRa0ZCY1VJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU0xUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdVVUZEWml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5MaTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFKYm5SOUlHWnliMjBnSnk0dmNtRnVaRzl0Snp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5ZlNBOUlIdGNiaUFnSjFSaGJtbHRiM1J2SnpvZ2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUkdsalpTYzZJR1JwWTJWVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUVhONWJXMWxkSEpwWXljNklHRnplVzF0WlhSeWFXTlRhVzFwYkdGeWFYUjVMRnh1SUNBblFuSmhkVzR0UW14aGJuRjFaWFFuT2lCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RMZFd4amVubHVjMnRwSnpvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTll5MURiMjV1WVhWbmFHVjVKem9nYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkU2RYTnpaV3duT2lCeWRYTnpaV3hUYVcxcGJHRnlhWFI1TEZ4dUlDQW5VMjlyWVd3bk9pQnpiMnRoYkZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZEZkV05zYVdSbFlXNG5PaUJsZFdOc2FXUmxZVzVUYVcxcGJHRnlhWFI1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnBjM1JoYm1ObFRXVjBjbWxqY3pvZ2UxdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhKOUlEMGdlMXh1SUNBblZHRnVhVzF2ZEc4bk9pQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVJQ0FuUkdsalpTYzZJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdKMEZ6ZVcxdFpYUnlhV01uT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDYzZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0FuUzNWc1kzcDVibk5yYVNjNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnSjAxakxVTnZibTVoZFdkb1pYa25PaUJ0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQW5VblZ6YzJWc0p6b2djblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJQ2RUYjJ0aGJDYzZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNBblJYVmpiR2xrWldGdUp6b2daWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUTBoRlRWOVRTVTFKVEVGU1NWUlpYMDFGVkZKSlExTWdQU0JiSjFSaGJtbHRiM1J2Snl3Z0owUnBZMlVuTENBblEyOXphVzVsSnl3Z0owaGhiVzFwYm1jbkxDQW5SWFZqYkdsa1pXRnVKMTA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBYRzRnSUNBZ2NtVjBkWEp1SURFdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0hSdmRHRnNJQzBnWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmhibWx0YjNSdlJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SURJZ0tpQmpiMjF0YjI0Z0x5QjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoa2FXTmxVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESXFlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHaGhiVzFwYm1kRWFYTjBZVzVqWlNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZVzF0YVc1blJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BJQzBnTWlwNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tESWdLaUIwYjNSaGJDQXRJRE1nS2lCamIyMXRiMjRwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4RWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoemIydGhiRk5wYldsc1lYSnBkSGtvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3cElDOGdLRElnS2lCMGIzUmhiRkJ5YjJRcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0d0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzFqUTI5dWJtRjFaMmhsZVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dnTFNCMGIzUmhiRkJ5YjJRcElDOGdkRzkwWVd4UWNtOWtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29iV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0YVc0Z1BTQk5ZWFJvTG0xcGJpaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFwYmlBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxcGJqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRZWGdnUFNCTllYUm9MbTFoZUNoNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMWhlQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFoZUR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWRYTnpaV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2g0TG14bGJtZDBhQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb0lERWdLeUJrYVhOMFlXNWpaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtITnBiV2xzWVhKcGRIazZJRzUxYldKbGNpa2dlMXh1SUNCeVpYUjFjbTRnTVNBdklITnBiV2xzWVhKcGRIa2dMU0F4TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJR1oxYm1OMGFXOXVJRzFoZUVKNUtIWmhiSFZsY3pvZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTENCdmNtUmxja0o1T2lBb2FUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnNaWFFnYldGNFZtRnNkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J0WVhoUGNtUmxja0o1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWld4bGJXVnVkQ0J2WmlCMllXeDFaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1ZzWlcxbGJuUlBjbVJsY2tKNUlEMGdiM0prWlhKQ2VTaGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhoUGNtUmxja0o1SUQwOUlHNTFiR3dnZkh3Z1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUGlCdFlYaFBjbVJsY2tKNUtTQjdYRzRnSUNBZ0lDQWdJRzFoZUZaaGJIVmxJRDBnWld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYldGNFQzSmtaWEpDZVNBOUlHVnNaVzFsYm5SUGNtUmxja0o1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCemRXSnpaWFFnUFNCYmNtRnVaRzl0U1c1MEtHeGxibWQwYUNBdElERXBYVHRjYmlBZ1kyOXVjM1FnWTI5dGNHeGxiV1Z1ZENBOUlHNWxkeUJUWlhRb0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdhV1lnS0NGemRXSnpaWFF1YVc1amJIVmtaWE1vYVNrcFhHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtRmtaQ2hwS1R0Y2JpQWdmVnh1WEc0Z0lIZG9hV3hsSUNoemRXSnpaWFF1YkdWdVozUm9JRHdnYmlrZ2UxeHVJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHMWhlRUo1S0Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1MllXeDFaWE1vS1NCaGN5QkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c1hHNGdJQ0FnSUNBb2FTa2dQVDRnVFdGMGFDNXRhVzR1WVhCd2JIa29UV0YwYUN3Z2MzVmljMlYwTG0xaGNDaG1kVzVqZEdsdmJpaDJZV3dzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOMEtHa3NJSFpoYkNrN1hHNGdJQ0FnSUNCOUtTa3BPMXh1SUNBZ0lHbG1JQ2hwWkhncElIdGNiaUFnSUNBZ0lITjFZbk5sZEM1d2RYTm9LR2xrZUNrN1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtUmxiR1YwWlNocFpIZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2MzVmljMlYwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JcbiAqIEBleHRlbmRzIHtGbG9hdDMyQXJyYXl9XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWF0cml4XG4gKiBAZXh0ZW5kcyB7QXJyYXk8VmVjdG9yPn1cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvb3JkaW5hdGVzXG4gKiBAZXh0ZW5kcyB7TWF0cml4fVxuICovXG5leHBvcnQgY2xhc3MgQ29vcmRpbmF0ZXMgZXh0ZW5kcyBNYXRyaXgge1xufVxuLyoqXG4gKiBEZW5vdGVzIGFuIGFycmF5IG9mIGFyYml0cmFyeS10eXBlZCB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JzXG4gKiBAZXh0ZW5kcyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvcnMgZXh0ZW5kcyBBcnJheSB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRmxCUVZrN1EwRkJSenRCUVVVelF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxFdEJRV0U3UTBGQlJ6dEJRVVUxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVjBGQldTeFRRVUZSTEUxQlFVMDdRMEZCUnp0QlFVVXhRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUMEZCVVN4VFFVRlJMRXRCUVZVN1EwRkJSeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4qXG4qIEBleHBvcnRcbiogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRXRCUVVzc1EwRkJReXc0UTBGQk9FTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEZUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRkZCUVdkQ0xFVkJRVVU3U1VGRGVrWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVVjJSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRja003U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1F5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGNFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRUxHdEdRVUZyUmp0QlFVTnNSaXhOUVVGTkxGVkJRVlVzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1dVRkJXU3hIUVVGSExFdEJRVXM3U1VGRGRrVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVWNFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVUU3T3pzN096czdSVUZQUlR0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zVFVGQllTeEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNjVUpCUVhGQ08wbEJRMnhGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdTVUZEZGtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhSU3hQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJWb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmJFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVVTNReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJXNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlJXNURMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVUdEpRVU01UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkZMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UwMWhkSEpwZUN3Z1ZtVmpkRzl5TENCRGIyOXlaR2x1WVhSbGN5d2dWbVZqZEc5eWN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSnk0dmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxR2JHOWhkQ3dnY21GdVpHOXRTVzUwZlNCbWNtOXRJQ2N1TDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowY3lCaElHTnZibVJwZEdsdmJpQmllU0IwYUhKdmQybHVaeUJoYmlCRmNuSnZjaTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0amIyNWthWFJwYjI0OVptRnNjMlZkSUVOdmJtUnBkR2x2YmlCMGJ5QmhjM05sY25RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjFsYzNOaFoyVTlKMEZ6YzJWeWRHbHZiaUJsY25KdmNpNG5YU0JOWlhOellXZGxJSFJ2SUc5MWRIQjFkQzVjYmlBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWE56WlhKMEtHTnZibVJwZEdsdmJqb2dZbTl2YkdWaGJpQTlJR1poYkhObExDQnRaWE56WVdkbE9pQnpkSEpwYm1jZ1BTQW5RWE56WlhKMGFXOXVJR1Z5Y205eUxpY3BJSHRjYmlBZ2FXWWdLQ0ZqYjI1a2FYUnBiMjRwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nYm1WM0lIUjNieTFrYVcxbGJuTnBiMjVoYkNCaGNuSmhlU0JoYm1RZ1ptbHNiSE1nYVhRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdZMjl2Y21ScGJtRjBaWE1nS0c1MWJXSmxjaUJ2WmlCeWIzZHpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eUlGUm9aU0J6WldOdmJtUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUdOdmJIVnRibk1wTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdG1hV3hzUFRCZElFRWdkbUZzZFdVZ2RHOGdabWxzYkNCMGFHVWdZMjl2Y21ScGJtRjBaWE1nZDJsMGFDNWNiaUFxSUVCeVpYUjFjbTRnZTBOdmIzSmthVzVoZEdWemZTQkJJSFIzYnkxa2FXMWxibk5wYjI1aGJDQm1hV3hzWldRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2lCQWRHOWtieUJOYVdkb2RDQmlaU0J6Ykc5M0lITnBibU5sSUhWelpXUWdRWEp5WVhrdWJXRndMaUJRY205aVlXSnNlU0J1WldWa2N5QndaWEptYjNKdFlXNWpaU0J5WlhacGMybHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOdmIzSmthVzVoZEdWektHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0JtYVd4c09pQnVkVzFpWlhJZ1BTQXdLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLR1JwYldWdWMybHZiakVwTG1acGJHd29abWxzYkNrdWJXRndLQ2dwSUQwK0lDaHVaWGNnVm1WamRHOXlLR1JwYldWdWMybHZiaklwTG1acGJHd29abWxzYkNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVWNtRnVjM0J2YzJVZ2JXRjBjbWw0TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1RXRjBjbWw0ZlNCdFlYUnlhWGdnVkdobElHMWhkSEpwZUNCMGJ5QmlaU0IwY21GdWMzQnZjMlZrTGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQlVjbUZ1YzNCdmMyVmtJRzFoZEhKcGVDNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RISmhibk53YjNObFRXRjBjbWw0S0cxaGRISnBlRG9nVFdGMGNtbDRLVG9nVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNodFlYUnlhWGhiTUYwdWJHVnVaM1JvS1M1bWFXeHNLREFwWEc0Z0lDQWdMbTFoY0Nnb1h5d2dhU2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9iV0YwY21sNExteGxibWQwYUNrdVptbHNiQ2d3S1M1dFlYQW9LRjhzSUdvcElEMCtJQ2h0WVhSeWFYaGJhbDFiYVYwcEtTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaSE1nZEhkdklIWmxZM1J2Y25NZ2QybDBhQ0IwYUdVZ2MyVmpiMjVrSUc5dVpTQjBieUJpWlNCdGRXeDBhWEJzYVdWa0lHSjVJSFJvWlNCbmFYWmxiaUJ5WVhScGJ5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJYVnNkR2x3YkdsbGNqMHhYU0JCSUcxMWJIUnBjR3hwWlhJZ2RHOGdZbVVnZFhObFpDQmlaV1p2Y21VZ2RHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2FYTWdZV1JrWldRdVhHNGdLaUJBY21WMGRYSnVJSHRXWldOMGIzSjlJRTVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibVZrSUhSb1pTQnlaWE4xYkhRZ2IyWWdiM0JsY21GMGFXOXVJSEFyYlhWc2RHbHdiR2xsY2lweExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZG1WamRHOXlRV1JrS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUxDQnRkV3gwYVhCc2FXVnlPaUJ1ZFcxaVpYSWdQU0F4S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnWVhOelpYSjBLRzVKZEdWdGN5QTlQU0J4TG14bGJtZDBhQ3dnSjFabFkzUnZjaUJzWlc1bmRHaHpJR1J2SUc1dmRDQnRZWFJqYUM0bktUdGNibHh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEF1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCd1cybGRJQ3NnYlhWc2RHbHdiR2xsY2lBcUlIRmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xYlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnWW1VZ2MzVnRiV1ZrTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlVhR1VnZG1WamRHOXlKM01nYVhSbGJYTWdjM1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwZEdWdGMxTjFiU2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnZEc5MFlXd2dQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiQ0FyUFNCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkWEZoY21WeklIUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2RpQlVhR1VnZG1WamRHOXlJSFJ2SUhOeGRXRnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1FTQnVaWGNnZG1WamRHOXlJR052Ym5SaGFXNXBibWNnZEdobElHOXlhV2RwYm1Gc0ozTWdhWFJsYlhNZ2MzRjFZWEpsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1WamRHOXlVM0YxWVhKbEtIWTZJRlpsWTNSdmNpazZJRlpsWTNSdmNpQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSFl1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCMlcybGRJQ29nZGx0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pNWlc1bmRHZ29kam9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJSE54Y2xOMWJUb2diblZ0WW1WeUlEMGdNRHRjYmlBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjM0Z5VTNWdElDczlJSFpiYVYwZ0tpQjJXMmxkTzF4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITnhjbE4xYlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkViM1JRY205a2RXTjBLSFl4T2lCV1pXTjBiM0lzSUhZeU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JwWmlBb2RqRXViR1Z1WjNSb0lDRTlJSFl5TG14bGJtZDBhQ2xjYmlBZ0lDQjBhSEp2ZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUlDOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnYkdWMElHMWxZVzRnUFNBd08xeHVJQ0JzWlhRZ2MzUmtJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdiV1ZoYmlBclBTQmtZWFJoVzJsZE8xeHVYRzRnSUcxbFlXNGdMejBnWkdGMFlTNXNaVzVuZEdnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSE4wWkNBclBTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2dLR1JoZEdGYmFWMGdMU0J0WldGdUtUdGNibHh1SUNCemRHUWdQU0JOWVhSb0xuTnhjblFvYzNSa0lDOGdaR0YwWVM1c1pXNW5kR2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQmtZWFJoVzJsZElEMGdLR1JoZEdGYmFWMGdMU0J0WldGdUtTQXZJSE4wWkR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBwZXEgPSBuZXcgVWludDMyQXJyYXkoMHgxMDAwMCk7XG5jb25zdCBteWVyc18zMiA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBsc3QgPSAxIDw8IChuIC0gMSk7XG4gIGxldCBwdiA9IC0xO1xuICBsZXQgbXYgPSAwO1xuICBsZXQgc2MgPSBuO1xuICBsZXQgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSB8PSAxIDw8IGk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBlcSB8PSAoKGVxICYgcHYpICsgcHYpIF4gcHY7XG4gICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICBwdiAmPSBlcTtcbiAgICBpZiAobXYgJiBsc3QpIHtcbiAgICAgIHNjKys7XG4gICAgfVxuICAgIGlmIChwdiAmIGxzdCkge1xuICAgICAgc2MtLTtcbiAgICB9XG4gICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgIHB2ID0gKHB2IDw8IDEpIHwgfih4diB8IG12KTtcbiAgICBtdiAmPSB4djtcbiAgfVxuICBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgfVxuICByZXR1cm4gc2M7XG59O1xuXG5jb25zdCBteWVyc194ID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IG1oYyA9IFtdO1xuICBjb25zdCBwaGMgPSBbXTtcbiAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgY29uc3QgdnNpemUgPSBNYXRoLmNlaWwobSAvIDMyKTtcbiAgbGV0IHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoc2l6ZTsgaSsrKSB7XG4gICAgcGhjW2ldID0gLTE7XG4gICAgbWhjW2ldID0gMDtcbiAgfVxuICBsZXQgaiA9IDA7XG4gIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBwdiA9IC0xO1xuICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtKSArIHN0YXJ0O1xuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gICAgfVxuICAgIHNjb3JlID0gbTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICB9XG4gIGxldCBtdiA9IDA7XG4gIGxldCBwdiA9IC0xO1xuICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gIH1cbiAgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgc2NvcmUgKz0gKHBoID4+PiAobSAtIDEpKSAmIDE7XG4gICAgc2NvcmUgLT0gKG1oID4+PiAobSAtIDEpKSAmIDE7XG4gICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgIG12ID0gcGggJiB4djtcbiAgfVxuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgfVxuICByZXR1cm4gc2NvcmU7XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gIGlmIChhLmxlbmd0aCA+IGIubGVuZ3RoKSB7XG4gICAgY29uc3QgdG1wID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdG1wO1xuICB9XG4gIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiLmxlbmd0aDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPD0gMzIpIHtcbiAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gIH1cbiAgcmV0dXJuIG15ZXJzX3goYSwgYik7XG59O1xuXG5jb25zdCBjbG9zZXN0ID0gKHN0ciwgYXJyKSA9PiB7XG4gIGxldCBtaW5fZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pbl9pbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0YW5jZSkge1xuICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdDtcbiAgICAgIG1pbl9pbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjbG9zZXN0LCBkaXN0YW5jZVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJleHBvcnQgY29uc3QganNvblNkZk1vbm9tZXJMaWJEaWN0ID0ge1xuICAgICdtb25vbWVyVHlwZSc6IG51bGwsXG4gICAgJ3NtaWxlcyc6IG51bGwsXG4gICAgJ25hbWUnOiAnTW9ub21lck5hbWUnLFxuICAgICdhdXRob3InOiBudWxsLFxuICAgICdtb2xmaWxlJzogJ21vbGVjdWxlJyxcbiAgICAnbmF0dXJhbEFuYWxvZyc6ICdNb25vbWVyTmF0dXJhbEFuYWxvZ0NvZGUnLFxuICAgICdyZ3JvdXBzJzogJ01vbm9tZXJDYXBzJyxcbiAgICAnY3JlYXRlRGF0ZSc6IG51bGwsXG4gICAgJ2lkJzogbnVsbCxcbiAgICAncG9seW1lclR5cGUnOiAnTW9ub21lclR5cGUnLFxuICAgICdzeW1ib2wnOiAnTW9ub21lckNvZGUnXG59O1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9GSUVMRCA9ICdyZ3JvdXBzJztcbmV4cG9ydCBjb25zdCBDQVBfR1JPVVBfU01JTEVTID0gJ2NhcEdyb3VwU21pbGVzJztcbmV4cG9ydCBjb25zdCBSR1JPVVBfQUxURVJfSUQgPSAnYWx0ZXJuYXRlSWQnO1xuZXhwb3J0IGNvbnN0IENBUF9HUk9VUF9OQU1FID0gJ2NhcEdyb3VwTmFtZSc7XG5leHBvcnQgY29uc3QgUkdST1VQX0xBQkVMID0gJ2xhYmVsJztcbmV4cG9ydCBjb25zdCBNT05PTUVSX1NZTUJPTCA9ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IFNERl9NT05PTUVSX05BTUUgPSAnTW9ub21lck5hbWUnO1xuIiwiY2xhc3MgQ2VsbCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEkgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEogPSAwO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBBbGlnbmVkIHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIHNjb3JlXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMuc2NvcmUgPSBzY29yZV87XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIFNlcXVlbmNlQWxpZ25tZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIGdhcF8sIGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9ICcnO1xuICAgICAgICB0aGlzLnNlcTIgPSAnJztcbiAgICAgICAgdGhpcy5nYXAgPSAxO1xuICAgICAgICB0aGlzLmxlbjEgPSAwO1xuICAgICAgICB0aGlzLmxlbjIgPSAwO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICB0aGlzLmFsaWduR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuQkxPU1VNNDUgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAwLCAtMSwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDMsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDYsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtMiwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAyLCA3LCAtMywgMCwgMiwgLTEsIDAsIC00LCAtMywgMCwgLTMsIC00LCAtMSwgMCwgLTEsIC00LCAtMiwgLTMsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTMsIDEyLCAtMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMiwgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA2LCAyLCAtMiwgMSwgLTIsIC0yLCAxLCAwLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTIsIDAsIC0zLCAtMiwgMSwgLTIsIC0zLCAwLCAwLCAtMSwgLTMsIC0yLCAtMywgMSwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDcsIC0yLCAtNCwgLTMsIC0yLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAwLCAtMywgMSwgMCwgLTIsIDEwLCAtMywgLTIsIC0xLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIDIsIC0zLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC00LCAtMywgLTIsIC0zLCAtNCwgLTMsIDUsIDIsIC0zLCAyLCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMywgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC0zLCAtMiwgLTIsIC0yLCAtMywgLTIsIDIsIDUsIC0zLCAyLCAxLCAtMywgLTMsIC0xLCAtMiwgMCwgMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAwLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTMsIDUsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMiwgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgMCwgMiwgMiwgLTEsIDYsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAxLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTQsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgMSwgLTMsIDAsIDgsIC0zLCAtMiwgLTEsIDEsIDMsIDAsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTQsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgOSwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMSwgNCwgMiwgLTQsIC0yLCAtMSwgMCwgMCwgMCwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyLCA1LCAtMywgLTEsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtNCwgLTQsIC01LCAtMiwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIDEsIC0zLCAtNCwgLTMsIDE1LCAzLCAtMywgLTQsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgMiwgMCwgMCwgLTEsIDAsIDMsIC0zLCAtMiwgLTEsIDMsIDgsIC0xLCAtMiwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtMywgLTEsIC0zLCAtMywgLTMsIC0zLCAzLCAxLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMywgLTEsIDUsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDQsIDUsIC0yLCAwLCAxLCAtMSwgMCwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAwLCAwLCAtNCwgLTIsIC0zLCA0LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNCwgLTIsIDAsIC0zLCAtMiwgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNTAgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgLTEsIC0yLCAtNCwgMSwgMCwgLTMsIDAsIC00LCAtMywgMywgLTIsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0zLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDcsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMywgLTQsIDAsIC0yLCAtNCwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAyLCA4LCAtNCwgMCwgMiwgLTEsIC0xLCAtNCwgLTQsIC0xLCAtNCwgLTUsIC0xLCAwLCAtMSwgLTUsIC0zLCAtNCwgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0yLCAtNCwgMTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0zLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDcsIDIsIC0yLCAxLCAtMywgLTIsIDIsIDAsIC00LCAtMSwgMCwgLTEsIC0xLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMywgMCwgLTQsIC0zLCAxLCAtMiwgLTMsIC0xLCAtMSwgLTEsIC0zLCAtMiwgLTMsIDEsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC0xLCAtMywgLTIsIC0zLCA4LCAtMiwgLTQsIC00LCAtMiwgLTMsIC00LCAtMiwgMCwgLTIsIC0zLCAtMywgLTQsIC0xLCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAxLCAwLCAtMiwgMTAsIC00LCAtMywgMCwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMywgMiwgLTQsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMywgLTQsIC0yLCAtMywgLTQsIC00LCAtNCwgNSwgMiwgLTMsIDIsIDAsIC0zLCAtMywgLTEsIC0zLCAtMSwgNCwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtNCwgLTMsIDIsIDUsIC0zLCAzLCAxLCAtNCwgLTMsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTEsIC0zLCAyLCAxLCAtMiwgMCwgLTMsIC0zLCA2LCAtMiwgLTQsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMywgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtNCwgLTIsIDAsIC0yLCAtMywgLTEsIDIsIDMsIC0yLCA3LCAwLCAtMywgLTIsIC0xLCAtMSwgMCwgMSwgLTMsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtMiwgLTQsIC0zLCAtNCwgLTEsIDAsIDEsIC00LCAwLCA4LCAtNCwgLTMsIC0yLCAxLCA0LCAtMSwgLTQsIC00LCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0xLCAtNCwgLTEsIC0xLCAtMiwgLTIsIC0zLCAtNCwgLTEsIC0zLCAtNCwgMTAsIC0xLCAtMSwgLTQsIC0zLCAtMywgLTIsIC0xLCAtMiwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgLTEsIDAsIC0xLCAtMywgLTMsIDAsIC0yLCAtMywgLTEsIDUsIDIsIC00LCAtMiwgLTIsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDIsIDUsIC0zLCAtMiwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTUsIC0xLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC00LCAtMywgMTUsIDIsIC0zLCAtNSwgLTIsIC0zLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAwLCA0LCAtMywgLTIsIC0yLCAyLCA4LCAtMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTQsIC0xLCAtMywgLTMsIC00LCAtNCwgNCwgMSwgLTMsIDEsIC0xLCAtMywgLTIsIDAsIC0zLCAtMSwgNSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNCwgNSwgLTMsIDAsIDEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTIsIDAsIDAsIC01LCAtMywgLTQsIDUsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTQsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgMCwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTYyID0gW1s0LCAtMSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0xLCA1LCAwLCAtMiwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDIsIC0xLCAtMywgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMywgLTEsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDYsIDEsIC0zLCAwLCAwLCAwLCAxLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDMsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAxLCA2LCAtMywgMCwgMiwgLTEsIC0xLCAtMywgLTQsIC0xLCAtMywgLTMsIC0xLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCA5LCAtMywgLTQsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0yLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMywgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA1LCAyLCAtMiwgMCwgLTMsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0xLCAtMiwgLTEsIC0yLCAwLCAzLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtNCwgMiwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTIsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA2LCAtMiwgLTQsIC00LCAtMiwgLTMsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAwLCAwLCAtMiwgOCwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtMiwgLTEsIC0yLCAtMiwgMiwgLTMsIDAsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC0xLCAtMywgLTMsIC00LCAtMywgNCwgMiwgLTMsIDEsIDAsIC0zLCAtMiwgLTEsIC0zLCAtMSwgMywgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC00LCAtMSwgLTIsIC0zLCAtNCwgLTMsIDIsIDQsIC0yLCAyLCAwLCAtMywgLTIsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMiwgNSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDAsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0xLCAwLCAtMiwgLTMsIC0yLCAxLCAyLCAtMSwgNSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAxLCAtMywgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTMsIC0yLCAtMywgLTMsIC0zLCAtMSwgMCwgMCwgLTMsIDAsIDYsIC00LCAtMiwgLTIsIDEsIDMsIC0xLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC00LCA3LCAtMSwgLTEsIC00LCAtMywgLTIsIC0yLCAtMSwgLTIsIC00XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMiwgLTEsIDQsIDEsIC0zLCAtMiwgLTIsIDAsIDAsIDAsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgNSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC0zLCAtMiwgMTEsIDIsIC0zLCAtNCwgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTMsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAtMSwgMywgLTMsIC0yLCAtMiwgMiwgNywgLTEsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAtMSwgLTIsIC0yLCAwLCAtMywgLTEsIDQsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDMsIDQsIC0zLCAwLCAxLCAtMSwgMCwgLTMsIC00LCAwLCAtMywgLTMsIC0yLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDMsIDQsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTgwID0gW1s3LCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAwLCAtMywgLTMsIC0zLCAtMSwgLTIsIC00LCAtMSwgMiwgMCwgLTUsIC00LCAtMSwgLTMsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCA5LCAtMSwgLTMsIC02LCAxLCAtMSwgLTQsIDAsIC01LCAtNCwgMywgLTMsIC01LCAtMywgLTIsIC0yLCAtNSwgLTQsIC00LCAtMiwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTEsIDksIDIsIC01LCAwLCAtMSwgLTEsIDEsIC02LCAtNiwgMCwgLTQsIC02LCAtNCwgMSwgMCwgLTcsIC00LCAtNSwgNSwgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAyLCAxMCwgLTcsIC0xLCAyLCAtMywgLTIsIC03LCAtNywgLTIsIC02LCAtNiwgLTMsIC0xLCAtMiwgLTgsIC02LCAtNiwgNiwgMSwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC01LCAtNywgMTMsIC01LCAtNywgLTYsIC03LCAtMiwgLTMsIC02LCAtMywgLTQsIC02LCAtMiwgLTIsIC01LCAtNSwgLTIsIC02LCAtNywgLTQsIC04XSxcbiAgICAgICAgICAgIFstMiwgMSwgMCwgLTEsIC01LCA5LCAzLCAtNCwgMSwgLTUsIC00LCAyLCAtMSwgLTUsIC0zLCAtMSwgLTEsIC00LCAtMywgLTQsIC0xLCA1LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTEsIDIsIC03LCAzLCA4LCAtNCwgMCwgLTYsIC02LCAxLCAtNCwgLTYsIC0yLCAtMSwgLTIsIC02LCAtNSwgLTQsIDEsIDYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTQsIC0xLCAtMywgLTYsIC00LCAtNCwgOSwgLTQsIC03LCAtNywgLTMsIC01LCAtNiwgLTUsIC0xLCAtMywgLTYsIC02LCAtNiwgLTIsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0zLCAwLCAxLCAtMiwgLTcsIDEsIDAsIC00LCAxMiwgLTYsIC01LCAtMSwgLTQsIC0yLCAtNCwgLTIsIC0zLCAtNCwgMywgLTUsIC0xLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNSwgLTYsIC03LCAtMiwgLTUsIC02LCAtNywgLTYsIDcsIDIsIC01LCAyLCAtMSwgLTUsIC00LCAtMiwgLTUsIC0zLCA0LCAtNiwgLTYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNiwgLTcsIC0zLCAtNCwgLTYsIC03LCAtNSwgMiwgNiwgLTQsIDMsIDAsIC01LCAtNCwgLTMsIC00LCAtMiwgMSwgLTcsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMiwgLTYsIDIsIDEsIC0zLCAtMSwgLTUsIC00LCA4LCAtMywgLTUsIC0yLCAtMSwgLTEsIC02LCAtNCwgLTQsIC0xLCAxLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC02LCAtMywgLTEsIC00LCAtNSwgLTQsIDIsIDMsIC0zLCA5LCAwLCAtNCwgLTMsIC0xLCAtMywgLTMsIDEsIC01LCAtMywgLTIsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTUsIC02LCAtNiwgLTQsIC01LCAtNiwgLTYsIC0yLCAtMSwgMCwgLTUsIDAsIDEwLCAtNiwgLTQsIC00LCAwLCA0LCAtMiwgLTYsIC02LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC0zLCAtNiwgLTMsIC0yLCAtNSwgLTQsIC01LCAtNSwgLTIsIC00LCAtNiwgMTIsIC0yLCAtMywgLTcsIC02LCAtNCwgLTQsIC0yLCAtMywgLThdLFxuICAgICAgICAgICAgWzIsIC0yLCAxLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtNCwgLTQsIC0xLCAtMywgLTQsIC0yLCA3LCAyLCAtNiwgLTMsIC0zLCAwLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMywgLTIsIC0zLCAtMSwgLTEsIC00LCAtMywgMiwgOCwgLTUsIC0zLCAwLCAtMSwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNywgLTgsIC01LCAtNCwgLTYsIC02LCAtNCwgLTUsIC00LCAtNiwgLTMsIDAsIC03LCAtNiwgLTUsIDE2LCAzLCAtNSwgLTgsIC01LCAtNSwgLThdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC02LCAtNSwgLTMsIC01LCAtNiwgMywgLTMsIC0yLCAtNCwgLTMsIDQsIC02LCAtMywgLTMsIDMsIDExLCAtMywgLTUsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTUsIC02LCAtMiwgLTQsIC00LCAtNiwgLTUsIDQsIDEsIC00LCAxLCAtMiwgLTQsIC0zLCAwLCAtNSwgLTMsIDcsIC02LCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTIsIDUsIDYsIC02LCAtMSwgMSwgLTIsIC0xLCAtNiwgLTcsIC0xLCAtNSwgLTYsIC00LCAwLCAtMSwgLTgsIC01LCAtNiwgNiwgMCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDEsIC03LCA1LCA2LCAtNCwgMCwgLTYsIC01LCAxLCAtMywgLTYsIC0yLCAtMSwgLTIsIC01LCAtNCwgLTQsIDAsIDYsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTMsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0xLCAtNSwgLTMsIC0yLCAtMywgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNOTAgPSBbWzUsIC0yLCAtMiwgLTMsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0xLCAxLCAwLCAtNCwgLTMsIC0xLCAtMiwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDYsIC0xLCAtMywgLTUsIDEsIC0xLCAtMywgMCwgLTQsIC0zLCAyLCAtMiwgLTQsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNywgMSwgLTQsIDAsIC0xLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0zLCAwLCAwLCAtNSwgLTMsIC00LCA0LCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIDEsIDcsIC01LCAtMSwgMSwgLTIsIC0yLCAtNSwgLTUsIC0xLCAtNCwgLTUsIC0zLCAtMSwgLTIsIC02LCAtNCwgLTUsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNCwgLTUsIDksIC00LCAtNiwgLTQsIC01LCAtMiwgLTIsIC00LCAtMiwgLTMsIC00LCAtMiwgLTIsIC00LCAtNCwgLTIsIC00LCAtNSwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgLTEsIC00LCA3LCAyLCAtMywgMSwgLTQsIC0zLCAxLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTMsIC0zLCAtMywgLTEsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMSwgLTYsIDIsIDYsIC0zLCAtMSwgLTQsIC00LCAwLCAtMywgLTUsIC0yLCAtMSwgLTEsIC01LCAtNCwgLTMsIDAsIDQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgNiwgLTMsIC01LCAtNSwgLTIsIC00LCAtNSwgLTMsIC0xLCAtMywgLTQsIC01LCAtNSwgLTIsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAwLCAwLCAtMiwgLTUsIDEsIC0xLCAtMywgOCwgLTQsIC00LCAtMSwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMywgMSwgLTQsIC0xLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAtMiwgLTQsIC00LCAtNSwgLTQsIDUsIDEsIC00LCAxLCAtMSwgLTQsIC0zLCAtMSwgLTQsIC0yLCAzLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTQsIC01LCAtNCwgMSwgNSwgLTMsIDIsIDAsIC00LCAtMywgLTIsIC0zLCAtMiwgMCwgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTQsIDEsIDAsIC0yLCAtMSwgLTQsIC0zLCA2LCAtMiwgLTQsIC0yLCAtMSwgLTEsIC01LCAtMywgLTMsIC0xLCAxLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTMsIC00LCAtMiwgMCwgLTMsIC00LCAtMywgMSwgMiwgLTIsIDcsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTIsIDAsIC00LCAtMiwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMywgLTQsIC00LCAtNSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMSwgMCwgLTQsIC0xLCA3LCAtNCwgLTMsIC0zLCAwLCAzLCAtMiwgLTQsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTMsIC00LCAtNCwgLTIsIC0zLCAtNCwgOCwgLTIsIC0yLCAtNSwgLTQsIC0zLCAtMywgLTIsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgLTIsIDUsIDEsIC00LCAtMywgLTIsIDAsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0yLCAxLCA2LCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNSwgLTYsIC00LCAtMywgLTUsIC00LCAtMywgLTQsIC0zLCAtNSwgLTIsIDAsIC01LCAtNCwgLTQsIDExLCAyLCAtMywgLTYsIC00LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTMsIC00LCAtNCwgLTMsIC00LCAtNSwgMSwgLTIsIC0yLCAtMywgLTIsIDMsIC00LCAtMywgLTIsIDIsIDgsIC0zLCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTMsIC01LCAtNCwgMywgMCwgLTMsIDAsIC0yLCAtMywgLTIsIC0xLCAtMywgLTMsIDUsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDQsIDQsIC00LCAtMSwgMCwgLTIsIC0xLCAtNSwgLTUsIC0xLCAtNCwgLTQsIC0zLCAwLCAtMSwgLTYsIC00LCAtNCwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTEsIDAsIC01LCA0LCA0LCAtMywgMCwgLTQsIC00LCAxLCAtMiwgLTQsIC0yLCAtMSwgLTEsIC00LCAtMywgLTMsIDAsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0yLCAtMiwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAxXV07XG4gICAgICAgIHRoaXMuTlVDTEVPVElERVMgPSBbWzEsIC0xLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAxLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0zMCA9IFtbNiwgLTcsIC00LCAtMywgLTYsIC00LCAtMiwgLTIsIC03LCAtNSwgLTYsIC03LCAtNSwgLTgsIC0yLCAwLCAtMSwgLTEzLCAtOCwgLTIsIC0zLCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDgsIC02LCAtMTAsIC04LCAtMiwgLTksIC05LCAtMiwgLTUsIC04LCAwLCAtNCwgLTksIC00LCAtMywgLTYsIC0yLCAtMTAsIC04LCAtNywgLTQsIC02LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtNiwgOCwgMiwgLTExLCAtMywgLTIsIC0zLCAwLCAtNSwgLTcsIC0xLCAtOSwgLTksIC02LCAwLCAtMiwgLTgsIC00LCAtOCwgNiwgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtMTAsIDIsIDgsIC0xNCwgLTIsIDIsIC0zLCAtNCwgLTcsIC0xMiwgLTQsIC0xMSwgLTE1LCAtOCwgLTQsIC01LCAtMTUsIC0xMSwgLTgsIDYsIDEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTExLCAtMTQsIDEwLCAtMTQsIC0xNCwgLTksIC03LCAtNiwgLTE1LCAtMTQsIC0xMywgLTEzLCAtOCwgLTMsIC04LCAtMTUsIC00LCAtNiwgLTEyLCAtMTQsIC05LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtMiwgLTMsIC0yLCAtMTQsIDgsIDEsIC03LCAxLCAtOCwgLTUsIC0zLCAtNCwgLTEzLCAtMywgLTUsIC01LCAtMTMsIC0xMiwgLTcsIC0zLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0yLCAyLCAtMTQsIDEsIDgsIC00LCAtNSwgLTUsIC05LCAtNCwgLTcsIC0xNCwgLTUsIC00LCAtNiwgLTE3LCAtOCwgLTYsIDEsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTMsIC0zLCAtOSwgLTcsIC00LCA2LCAtOSwgLTExLCAtMTAsIC03LCAtOCwgLTksIC02LCAtMiwgLTYsIC0xNSwgLTE0LCAtNSwgLTMsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNywgLTIsIDAsIC00LCAtNywgMSwgLTUsIC05LCA5LCAtOSwgLTYsIC02LCAtMTAsIC02LCAtNCwgLTYsIC03LCAtNywgLTMsIC02LCAtMSwgLTEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC03LCAtNiwgLTgsIC01LCAtMTEsIC05LCA4LCAtMSwgLTYsIC0xLCAtMiwgLTgsIC03LCAtMiwgLTE0LCAtNiwgMiwgLTYsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC03LCAtMTIsIC0xNSwgLTUsIC05LCAtMTAsIC02LCAtMSwgNywgLTgsIDEsIC0zLCAtNywgLTgsIC03LCAtNiwgLTcsIC0yLCAtOSwgLTcsIC02LCAtMTddLFxuICAgICAgICAgICAgWy03LCAwLCAtMSwgLTQsIC0xNCwgLTMsIC00LCAtNywgLTYsIC02LCAtOCwgNywgLTIsIC0xNCwgLTYsIC00LCAtMywgLTEyLCAtOSwgLTksIC0yLCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC00LCAtOSwgLTExLCAtMTMsIC00LCAtNywgLTgsIC0xMCwgLTEsIDEsIC0yLCAxMSwgLTQsIC04LCAtNSwgLTQsIC0xMywgLTExLCAtMSwgLTEwLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC05LCAtOSwgLTE1LCAtMTMsIC0xMywgLTE0LCAtOSwgLTYsIC0yLCAtMywgLTE0LCAtNCwgOSwgLTEwLCAtNiwgLTksIC00LCAyLCAtOCwgLTEwLCAtMTMsIC04LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTYsIC04LCAtOCwgLTMsIC01LCAtNiwgLTQsIC04LCAtNywgLTYsIC04LCAtMTAsIDgsIC0yLCAtNCwgLTE0LCAtMTMsIC02LCAtNywgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtNCwgLTMsIC01LCAtNCwgLTIsIC02LCAtNywgLTgsIC00LCAtNSwgLTYsIC0yLCA2LCAwLCAtNSwgLTcsIC02LCAtMSwgLTUsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTIsIC01LCAtOCwgLTUsIC02LCAtNiwgLTcsIC0yLCAtNywgLTMsIC00LCAtOSwgLTQsIDAsIDcsIC0xMywgLTYsIC0zLCAtMywgLTYsIC00LCAtMTddLFxuICAgICAgICAgICAgWy0xMywgLTIsIC04LCAtMTUsIC0xNSwgLTEzLCAtMTcsIC0xNSwgLTcsIC0xNCwgLTYsIC0xMiwgLTEzLCAtNCwgLTE0LCAtNSwgLTEzLCAxMywgLTUsIC0xNSwgLTEwLCAtMTQsIC0xMSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTEwLCAtNCwgLTExLCAtNCwgLTEyLCAtOCwgLTE0LCAtMywgLTYsIC03LCAtOSwgLTExLCAyLCAtMTMsIC03LCAtNiwgLTUsIDEwLCAtNywgLTYsIC05LCAtNywgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTgsIC04LCAtOCwgLTYsIC03LCAtNiwgLTUsIC02LCAyLCAtMiwgLTksIC0xLCAtOCwgLTYsIC02LCAtMywgLTE1LCAtNywgNywgLTgsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTcsIDYsIDYsIC0xMiwgLTMsIDEsIC0zLCAtMSwgLTYsIC05LCAtMiwgLTEwLCAtMTAsIC03LCAtMSwgLTMsIC0xMCwgLTYsIC04LCA2LCAwLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAxLCAtMTQsIDYsIDYsIC01LCAtMSwgLTYsIC03LCAtNCwgLTUsIC0xMywgLTQsIC01LCAtNiwgLTE0LCAtOSwgLTYsIDAsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNiwgLTMsIC01LCAtOSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNiwgLTUsIC01LCAtOCwgLTUsIC0zLCAtNCwgLTExLCAtNywgLTUsIC01LCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIDFdXTtcbiAgICAgICAgdGhpcy5QQU03MCA9IFtbNSwgLTQsIC0yLCAtMSwgLTQsIC0yLCAtMSwgMCwgLTQsIC0yLCAtNCwgLTQsIC0zLCAtNiwgMCwgMSwgMSwgLTksIC01LCAtMSwgLTEsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstNCwgOCwgLTMsIC02LCAtNSwgMCwgLTUsIC02LCAwLCAtMywgLTYsIDIsIC0yLCAtNywgLTIsIC0xLCAtNCwgMCwgLTcsIC01LCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgNiwgMywgLTcsIC0xLCAwLCAtMSwgMSwgLTMsIC01LCAwLCAtNSwgLTYsIC0zLCAxLCAwLCAtNiwgLTMsIC01LCA1LCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC02LCAzLCA2LCAtOSwgMCwgMywgLTEsIC0xLCAtNSwgLTgsIC0yLCAtNywgLTEwLCAtNCwgLTEsIC0yLCAtMTAsIC03LCAtNSwgNSwgMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNywgLTksIDksIC05LCAtOSwgLTYsIC01LCAtNCwgLTEwLCAtOSwgLTksIC04LCAtNSwgLTEsIC01LCAtMTEsIC0yLCAtNCwgLTgsIC05LCAtNiwgLTExXSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDAsIC05LCA3LCAyLCAtNCwgMiwgLTUsIC0zLCAtMSwgLTIsIC05LCAtMSwgLTMsIC0zLCAtOCwgLTgsIC00LCAtMSwgNSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAwLCAzLCAtOSwgMiwgNiwgLTIsIC0yLCAtNCwgLTYsIC0yLCAtNCwgLTksIC0zLCAtMiwgLTMsIC0xMSwgLTYsIC00LCAyLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFswLCAtNiwgLTEsIC0xLCAtNiwgLTQsIC0yLCA2LCAtNiwgLTYsIC03LCAtNSwgLTYsIC03LCAtMywgMCwgLTMsIC0xMCwgLTksIC0zLCAtMSwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAwLCAxLCAtMSwgLTUsIDIsIC0yLCAtNiwgOCwgLTYsIC00LCAtMywgLTYsIC00LCAtMiwgLTMsIC00LCAtNSwgLTEsIC00LCAwLCAxLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNSwgLTQsIC01LCAtNCwgLTYsIC02LCA3LCAxLCAtNCwgMSwgMCwgLTUsIC00LCAtMSwgLTksIC00LCAzLCAtNCwgLTQsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNiwgLTUsIC04LCAtMTAsIC0zLCAtNiwgLTcsIC00LCAxLCA2LCAtNSwgMiwgLTEsIC01LCAtNiwgLTQsIC00LCAtNCwgMCwgLTYsIC00LCAtNCwgLTExXSxcbiAgICAgICAgICAgIFstNCwgMiwgMCwgLTIsIC05LCAtMSwgLTIsIC01LCAtMywgLTQsIC01LCA2LCAwLCAtOSwgLTQsIC0yLCAtMSwgLTcsIC03LCAtNiwgLTEsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMywgLTIsIC01LCAtNywgLTksIC0yLCAtNCwgLTYsIC02LCAxLCAyLCAwLCAxMCwgLTIsIC01LCAtMywgLTIsIC04LCAtNywgMCwgLTYsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNiwgLTcsIC02LCAtMTAsIC04LCAtOSwgLTksIC03LCAtNCwgMCwgLTEsIC05LCAtMiwgOCwgLTcsIC00LCAtNiwgLTIsIDQsIC01LCAtNywgLTksIC01LCAtMTFdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTQsIC01LCAtMSwgLTMsIC0zLCAtMiwgLTUsIC01LCAtNCwgLTUsIC03LCA3LCAwLCAtMiwgLTksIC05LCAtMywgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgLTEsIC0xLCAtMywgLTIsIDAsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIDAsIDUsIDIsIC0zLCAtNSwgLTMsIDAsIC0yLCAtMSwgLTExXSxcbiAgICAgICAgICAgIFsxLCAtNCwgMCwgLTIsIC01LCAtMywgLTMsIC0zLCAtNCwgLTEsIC00LCAtMSwgLTIsIC02LCAtMiwgMiwgNiwgLTgsIC00LCAtMSwgLTEsIC0zLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstOSwgMCwgLTYsIC0xMCwgLTExLCAtOCwgLTExLCAtMTAsIC01LCAtOSwgLTQsIC03LCAtOCwgLTIsIC05LCAtMywgLTgsIDEzLCAtMywgLTEwLCAtNywgLTEwLCAtNywgLTExXSxcbiAgICAgICAgICAgIFstNSwgLTcsIC0zLCAtNywgLTIsIC04LCAtNiwgLTksIC0xLCAtNCwgLTQsIC03LCAtNywgNCwgLTksIC01LCAtNCwgLTMsIDksIC01LCAtNCwgLTcsIC01LCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTUsIC01LCAtNCwgLTQsIC00LCAtMywgLTQsIDMsIDAsIC02LCAwLCAtNSwgLTMsIC0zLCAtMSwgLTEwLCAtNSwgNiwgLTUsIC00LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTQsIDUsIDUsIC04LCAtMSwgMiwgLTEsIDAsIC00LCAtNiwgLTEsIC02LCAtNywgLTQsIDAsIC0xLCAtNywgLTQsIC01LCA1LCAxLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0xLCAyLCAtOSwgNSwgNSwgLTMsIDEsIC00LCAtNCwgLTIsIC0zLCAtOSwgLTIsIC0yLCAtMywgLTEwLCAtNywgLTQsIDEsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTIsIC0zLCAtNiwgLTIsIC0zLCAtMywgLTMsIC0zLCAtNCwgLTMsIC0zLCAtNSwgLTMsIC0xLCAtMiwgLTcsIC01LCAtMiwgLTIsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTI1MCA9IFtbMiwgLTIsIDAsIDAsIC0yLCAwLCAwLCAxLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0zLCAxLCAxLCAxLCAtNiwgLTMsIDAsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFstMiwgNiwgMCwgLTEsIC00LCAxLCAtMSwgLTMsIDIsIC0yLCAtMywgMywgMCwgLTQsIDAsIDAsIC0xLCAyLCAtNCwgLTIsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDIsIC00LCAxLCAxLCAwLCAyLCAtMiwgLTMsIDEsIC0yLCAtMywgMCwgMSwgMCwgLTQsIC0yLCAtMiwgMiwgMSwgMCwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCA0LCAtNSwgMiwgMywgMSwgMSwgLTIsIC00LCAwLCAtMywgLTYsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAxMiwgLTUsIC01LCAtMywgLTMsIC0yLCAtNiwgLTUsIC01LCAtNCwgLTMsIDAsIC0yLCAtOCwgMCwgLTIsIC00LCAtNSwgLTMsIC04XSxcbiAgICAgICAgICAgIFswLCAxLCAxLCAyLCAtNSwgNCwgMiwgLTEsIDMsIC0yLCAtMiwgMSwgLTEsIC01LCAwLCAtMSwgLTEsIC01LCAtNCwgLTIsIDEsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDEsIDMsIC01LCAyLCA0LCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtNSwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTMsIDAsIDEsIC0zLCAtMSwgMCwgNSwgLTIsIC0zLCAtNCwgLTIsIC0zLCAtNSwgMCwgMSwgMCwgLTcsIC01LCAtMSwgMCwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMiwgMiwgMSwgLTMsIDMsIDEsIC0yLCA2LCAtMiwgLTIsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAtMywgMCwgLTIsIDEsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMiwgNSwgMiwgLTIsIDIsIDEsIC0yLCAtMSwgMCwgLTUsIC0xLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAtMiwgMiwgNiwgLTMsIDQsIDIsIC0zLCAtMywgLTIsIC0yLCAtMSwgMiwgLTMsIC0zLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAxLCAwLCAtNSwgMSwgMCwgLTIsIDAsIC0yLCAtMywgNSwgMCwgLTUsIC0xLCAwLCAwLCAtMywgLTQsIC0yLCAxLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMiwgLTMsIC01LCAtMSwgLTIsIC0zLCAtMiwgMiwgNCwgMCwgNiwgMCwgLTIsIC0yLCAtMSwgLTQsIC0yLCAyLCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgLTYsIC00LCAtNSwgLTUsIC01LCAtMiwgMSwgMiwgLTUsIDAsIDksIC01LCAtMywgLTMsIDAsIDcsIC0xLCAtNCwgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMCwgLTEsIC0zLCAwLCAtMSwgMCwgMCwgLTIsIC0zLCAtMSwgLTIsIC01LCA2LCAxLCAwLCAtNiwgLTUsIC0xLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEsIC0xLCAtMywgMCwgLTIsIC0zLCAxLCAyLCAxLCAtMiwgLTMsIC0xLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIDAsIC0yLCAtMSwgMCwgMCwgLTEsIDAsIC0yLCAwLCAtMSwgLTMsIDAsIDEsIDMsIC01LCAtMywgMCwgMCwgLTEsIDAsIC04XSxcbiAgICAgICAgICAgIFstNiwgMiwgLTQsIC03LCAtOCwgLTUsIC03LCAtNywgLTMsIC01LCAtMiwgLTMsIC00LCAwLCAtNiwgLTIsIC01LCAxNywgMCwgLTYsIC01LCAtNiwgLTQsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0yLCAtNCwgMCwgLTQsIC00LCAtNSwgMCwgLTEsIC0xLCAtNCwgLTIsIDcsIC01LCAtMywgLTMsIDAsIDEwLCAtMiwgLTMsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMiwgNCwgMiwgLTIsIDIsIC0xLCAtMSwgLTEsIDAsIC02LCAtMiwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCAzLCAtNCwgMSwgMywgMCwgMSwgLTIsIC0zLCAxLCAtMiwgLTQsIC0xLCAwLCAwLCAtNSwgLTMsIC0yLCAzLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDEsIDMsIC01LCAzLCAzLCAwLCAyLCAtMiwgLTMsIDAsIC0yLCAtNSwgMCwgMCwgLTEsIC02LCAtNCwgLTIsIDIsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDAsIDAsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5TQ0hORUlERVIgPSBbWzExLjYsIC0yLjcsIDkuNywgLTEuNywgLTIuNywgLTYuNCwgLTMuOSwgLTUuNiwgNS4xLCAtNS4wLCAzLjYsIC00LjIsIC02LjMsIC0xMy4wLCAtNy4xLCAtMTEuNSwgMC40LCAtNi4wLCAtMS45LCAtNS4zLCAtOC41LCAtMTEuMiwgLTguOSwgLTEwLjgsIDIuMSwgMC4wLCAxLjQsIDAuMiwgLTEwLjIsIC0xMy41LCAtMTMuMCwgLTEyLjUsIC0yLjYsIC04LjUsIC01LjAsIC04LjEsIC02LjMsIC05LjksIC03LjUsIC05LjAsIC03LjEsIC0xMC4yLCAtOC4yLCAtOS4yLCAtOC4yLCAtMTIuNSwgLTExLjEsIC0xMS40LCAtNTAuMCwgLTE0LjgsIC01MC4wLCAtMTMuOCwgLTcuMywgLTEwLjEsIC04LjQsIC05LjEsIC01MC4wLCAtMTMuMCwgLTEzLjUsIC0xMi40LCAtMTAuNywgLTE4LjEsIC0xMS44LCAtMTcuMixdLFxuICAgICAgICAgICAgWy0yLjcsIDEzLjAsIC0zLjMsIDEwLjksIC0zLjUsIC0wLjQsIC0zLjMsIC0xLjgsIC01LjQsIDQuNiwgLTUuNSwgMy4wLCAtMTAuMiwgLTcuOSwgLTkuOSwgLTkuNiwgLTUuMCwgMC41LCAtNS41LCAtMS4wLCAtMTAuMywgLTguMSwgLTkuNCwgLTkuNiwgLTguMSwgLTUuMCwgLTcuMywgLTYuMywgLTEzLjQsIC0xMS4zLCAtMTQuNCwgLTEyLjksIC02LjMsIDAuOCwgLTYuNCwgLTEuMSwgLTcuNCwgLTUuMCwgLTYuMiwgLTYuNSwgLTUuNiwgLTEuNiwgLTQuNywgLTMuMCwgLTEwLjgsIC04LjcsIC0xMS45LCAtMTAuMCwgLTUwLjAsIC02LjIsIC01MC4wLCAtNy41LCAtNi4zLCAtNC4zLCAtNi4yLCAtNS40LCAtNTAuMCwgLTcuMCwgLTE2LjMsIC04LjIsIC0xMy4yLCAtMTIuMywgLTEzLjEsIC0xMy4zLF0sXG4gICAgICAgICAgICBbOS43LCAtMy4zLCAxMS42LCAtMi44LCAtNC41LCAtNi43LCAtMy4xLCAtNi45LCAzLjMsIC01LjUsIDQuOCwgLTUuMSwgLTguOSwgLTEzLjIsIC01LjcsIC0xMi42LCAtMS41LCAtNi4xLCAtMC42LCAtNi4xLCAtMTAuMCwgLTExLjgsIC04LjYsIC0xMS45LCAxLjIsIDAuNSwgMi4yLCAwLjEsIC0xMS44LCAtMTQuMCwgLTExLjksIC0xMy40LCAtNC45LCAtOS4xLCAtMy40LCAtOC45LCAtOC4wLCAtMTAuMCwgLTcuMiwgLTEwLjAsIC05LjEsIC0xMC4yLCAtNy4xLCAtOS45LCAtMTAuMSwgLTEzLjAsIC0xMC42LCAtMTIuNywgLTUwLjAsIC0xNC45LCAtNTAuMCwgLTE0LjQsIC04LjksIC0xMC44LCAtOC45LCAtMTAuNCwgLTUwLjAsIC0xMy4xLCAtMTEuOCwgLTEzLjAsIC0xMi40LCAtMTkuNCwgLTExLjUsIC0xNy44LF0sXG4gICAgICAgICAgICBbLTEuNywgMTAuOSwgLTIuOCwgMTIuOSwgLTIuNywgLTIuMiwgLTIuOCwgMC4yLCAtNC44LCAyLjksIC01LjIsIDUuMiwgLTkuMSwgLTkuNSwgLTkuMCwgLTcuMCwgLTQuMCwgLTEuMCwgLTUuMCwgMS4wLCAtOS4wLCAtOC44LCAtOC45LCAtNy43LCAtNy4wLCAtNi44LCAtNy4xLCAtNC4zLCAtMTIuNCwgLTEyLjksIC0xMy45LCAtMTAuMCwgLTQuOSwgLTAuNywgLTUuNiwgMS40LCAtNi4wLCAtNi41LCAtNi4yLCAtNC44LCAtNS4xLCAtMy4yLCAtNS4wLCAtMS4yLCAtOS44LCAtOS45LCAtMTEuMywgLTguMiwgLTUwLjAsIC03LjYsIC01MC4wLCAtNS4xLCAtNS41LCAtNS44LCAtNS45LCAtNC4yLCAtNTAuMCwgLTguMywgLTE1LjUsIC01LjksIC0xMS42LCAtMTQuMiwgLTEyLjAsIC0xMS42LF0sXG4gICAgICAgICAgICBbLTIuNywgLTMuNSwgLTQuNSwgLTIuNywgMTEuNywgOS4wLCAxMC42LCA5LjYsIC0zLjIsIC0wLjcsIC01LjEsIC0wLjQsIDAuNywgLTQuNiwgLTAuNCwgLTMuNiwgLTQuOCwgLTguOSwgLTYuNSwgLTcuOCwgLTEuNCwgLTQuMSwgLTIuOSwgLTMuMywgLTguMCwgLTkuMSwgLTguMCwgLTguMiwgLTYuMCwgLTkuMywgLTcuNywgLTguNSwgLTYuNCwgLTEwLjEsIC03LjUsIC04LjYsIDIuOCwgLTAuNywgMC45LCAwLjEsIC01LjksIC03LjMsIC02LjUsIC02LjUsIC0wLjQsIC0zLjksIC0yLjYsIC0zLjEsIC01MC4wLCAtMTQuNiwgLTUwLjAsIC0xMi42LCAyLjksIDAuMSwgMS44LCAxLjAsIC01MC4wLCAtOS4yLCAtMTMuNiwgLTcuNywgLTQuOCwgLTEyLjIsIC02LjIsIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTYuNCwgLTAuNCwgLTYuNywgLTIuMiwgOS4wLCAxMi4zLCA5LjgsIDkuNiwgLTcuMSwgMi40LCAtNy4yLCAwLjMsIC0yLjksIC0xLjIsIC0zLjAsIC0zLjMsIC03LjYsIC02LjcsIC04LjEsIC03LjksIC00LjksIC0xLjksIC00LjUsIC0zLjgsIC05LjUsIC03LjgsIC05LjMsIC04LjksIC05LjQsIC03LjEsIC05LjAsIC05LjAsIC05LjQsIC03LjUsIC05LjMsIC05LjIsIC0wLjcsIDIuNiwgMC4yLCAtMC4xLCAtOC4wLCAtNC42LCAtNy43LCAtNi4xLCAtMy42LCAtMS4wLCAtNC4xLCAtMy4xLCAtNTAuMCwgLTExLjYsIC01MC4wLCAtMTEuNiwgMC4yLCAyLjMsIDAuNCwgMC41LCAtNTAuMCwgLTYuNSwgLTE1LjMsIC03LjgsIC04LjQsIC05LjUsIC04LjMsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTMuOSwgLTMuMywgLTMuMSwgLTIuOCwgMTAuNiwgOS44LCAxMi4yLCA5LjgsIC00LjksIDAuMSwgLTMuNiwgLTAuMiwgLTEuNywgLTQuMSwgMC45LCAtMy41LCAtNS45LCAtOC45LCAtNS42LCAtOC41LCAtMy45LCAtMy45LCAtMi4yLCAtNC41LCAtNy4zLCAtNy41LCAtNi40LCAtOC41LCAtNy4xLCAtOC4yLCAtNi43LCAtNy44LCAtNy45LCAtOS4xLCAtNy4xLCAtOS40LCAwLjksIC0wLjIsIDIuNSwgLTAuMywgLTYuOSwgLTYuNSwgLTUuNSwgLTYuOCwgLTEuNywgLTMuNCwgLTEuNywgLTIuOCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTExLjUsIDEuNSwgMC43LCAyLjcsIDAuNiwgLTUwLjAsIC04LjksIC0xMi4xLCAtNy40LCAtNi4xLCAtMTEuNSwgLTUuNCwgLTEwLjQsXSxcbiAgICAgICAgICAgIFstNS42LCAtMS44LCAtNi45LCAwLjIsIDkuNiwgOS42LCA5LjgsIDExLjYsIC02LjYsIDAuOSwgLTcuMiwgMi41LCAtMi4zLCAtMy40LCAtMi4zLCAtMC42LCAtNi41LCAtOC4yLCAtOC4wLCAtNi4zLCAtMy43LCAtMy41LCAtMy45LCAtMS42LCAtOS45LCAtOC45LCAtOS42LCAtNy4wLCAtOC42LCAtOC45LCAtOC44LCAtNi44LCAtOC42LCAtOC4yLCAtOC44LCAtNi44LCAwLjMsIDAuMSwgMC4yLCAyLjQsIC03LjQsIC02LjIsIC02LjksIC00LjQsIC0yLjksIC0yLjksIC0zLjUsIC0wLjksIC01MC4wLCAtMTIuMiwgLTUwLjAsIC0xMC4xLCAxLjIsIDAuNiwgMS4yLCAyLjQsIC01MC4wLCAtNy42LCAtMTYuMSwgLTUuOCwgLTcuMiwgLTEwLjgsIC03LjQsIC05LjAsXSxcbiAgICAgICAgICAgIFs1LjEsIC01LjQsIDMuMywgLTQuOCwgLTMuMiwgLTcuMSwgLTQuOSwgLTYuNiwgMTMuMywgLTIuOCwgMTEuMiwgLTEuOSwgLTUuNywgLTEyLjUsIC03LjIsIC0xMS42LCAtMC43LCAtNC44LCAtMy4xLCAtNC4zLCAtMTAuMCwgLTExLjYsIC04LjgsIC0xMS43LCAxMC41LCA3LjcsIDkuMSwgOC41LCAtOS44LCAtMTIuNywgLTExLjcsIC0xMS44LCAtNi4zLCAtMTEuNCwgLTguOCwgLTExLjAsIC03LjUsIC0xMC4zLCAtOC4zLCAtOS45LCAtMS45LCAtNi43LCAtNC4xLCAtNi40LCAtNy45LCAtMTIuNSwgLTExLjQsIC0xMS43LCAtNTAuMCwgLTE0LjAsIC01MC4wLCAtMTMuMiwgLTguNSwgLTEwLjQsIC05LjEsIC05LjYsIC01MC4wLCAtOS44LCAtNy43LCAtOC44LCAtMTAuMywgLTE3LjksIC0xMS44LCAtMTYuMCxdLFxuICAgICAgICAgICAgWy01LjAsIDQuNiwgLTUuNSwgMi45LCAtMC43LCAyLjQsIDAuMSwgMC45LCAtMi44LCAxMi44LCAtMi42LCAxMS4wLCAtOC40LCAtNi4zLCAtOC4zLCAtNy43LCAtNi4xLCAtMi45LCAtNi41LCAtNC4yLCAtOC41LCAtNS45LCAtNy41LCAtNy43LCAtNS41LCAtMi40LCAtNS41LCAtNC4xLCAtMTIuOSwgLTEwLjMsIC0xMi43LCAtMTEuMywgLTcuNCwgLTMuMSwgLTcuNCwgLTQuOSwgLTQuNCwgLTEuOCwgLTMuNSwgLTMuNSwgLTEuNiwgMy4wLCAtMC44LCAwLjksIC04LjQsIC02LjMsIC05LjYsIC03LjMsIC01MC4wLCAtOS4wLCAtNTAuMCwgLTkuNywgLTIuMywgLTAuMiwgLTEuMiwgLTEuNSwgLTUwLjAsIC0wLjcsIC0xMy4zLCAtMi4wLCAtMTEuOCwgLTExLjksIC0xMi4zLCAtMTIuNyxdLFxuICAgICAgICAgICAgWzMuNiwgLTUuNSwgNC44LCAtNS4yLCAtNS4xLCAtNy4yLCAtMy42LCAtNy4yLCAxMS4yLCAtMi42LCAxMy40LCAtMi4xLCAtNy43LCAtMTIuNSwgLTUuMywgLTExLjksIC0yLjIsIC00LjQsIC0xLjksIC00LjgsIC0xMC4yLCAtMTEuNSwgLTguMSwgLTEyLjAsIDkuMywgOC4yLCAxMC4wLCA4LjAsIC0xMC44LCAtMTEuOSwgLTEwLjcsIC0xMi40LCAtOC4yLCAtMTEuOCwgLTYuOSwgLTExLjUsIC04LjQsIC05LjksIC03LjEsIC0xMC42LCAtNC43LCAtNi44LCAtMS4yLCAtNy4wLCAtOS44LCAtMTEuNiwgLTkuNiwgLTEyLjEsIC01MC4wLCAtMTQuMSwgLTUwLjAsIC0xMi43LCAtMTAuMCwgLTEwLjgsIC04LjgsIC0xMC41LCAtNTAuMCwgLTkuMiwgLTQuMiwgLTkuMywgLTExLjAsIC0xOC4yLCAtMTEuMSwgLTE2LjEsXSxcbiAgICAgICAgICAgIFstNC4yLCAzLjAsIC01LjEsIDUuMiwgLTAuNCwgMC4zLCAtMC4yLCAyLjUsIC0xLjksIDExLjAsIC0yLjEsIDEzLjIsIC03LjYsIC04LjUsIC04LjAsIC01LjMsIC01LjYsIC00LjUsIC02LjgsIC0yLjQsIC03LjgsIC03LjksIC03LjksIC02LjIsIC01LjcsIC01LjEsIC01LjQsIC0yLjEsIC0xMi40LCAtMTIuMywgLTEzLjEsIC0xMC4xLCAtNi42LCAtNC40LCAtNi45LCAtMi42LCAtMy42LCAtMy44LCAtMy43LCAtMi4wLCAtMS40LCAwLjgsIC0wLjksIDMuMCwgLTguMiwgLTguMSwgLTkuMiwgLTUuOCwgLTUwLjAsIC0xMC4xLCAtNTAuMCwgLTcuNCwgLTEuNywgLTIuMCwgLTEuNSwgLTAuNSwgLTUwLjAsIC0yLjEsIC0xMi42LCAtMC40LCAtMTEuNiwgLTEzLjksIC0xMS40LCAtMTEuMSxdLFxuICAgICAgICAgICAgWy02LjMsIC0xMC4yLCAtOC45LCAtOS4xLCAwLjcsIC0yLjksIC0xLjcsIC0yLjMsIC01LjcsIC04LjQsIC03LjcsIC03LjYsIDEzLjIsIDkuNiwgMy41LCA5LjcsIC04LjcsIC0xMi40LCAtMTAuNywgLTEwLjcsIC03LjgsIC0xMC4yLCAtOC44LCAtOS42LCAtOS41LCAtMTEuOSwgLTEwLjksIC0xMC41LCAyLjMsIC0wLjQsIC0wLjIsIC0wLjMsIC05LjcsIC0xNS41LCAtMTEuNCwgLTEzLjcsIC0zLjAsIC02LjQsIC00LjEsIC01LjQsIC05LjYsIC0xMS45LCAtMTAuNSwgLTExLjgsIDYuMiwgMy4zLCAzLjcsIDMuNiwgLTUwLjAsIC0xMy42LCAtNTAuMCwgLTExLjksIC01LjYsIC04LjgsIC03LjIsIC04LjksIC01MC4wLCAtMTIuNCwgLTE0LjEsIC0xMS42LCAyLjgsIC02LjQsIDAuNSwgLTUuMixdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy45LCAtMTMuMiwgLTkuNSwgLTQuNiwgLTEuMiwgLTQuMSwgLTMuNCwgLTEyLjUsIC02LjMsIC0xMi41LCAtOC41LCA5LjYsIDEyLjcsIDAuMiwgMTAuNSwgLTEyLjQsIC0xMS42LCAtMTMuMiwgLTEyLjAsIC0xMi40LCAtMTAuMSwgLTExLjYsIC0xMi4wLCAtMTUuMSwgLTEzLjEsIC0xNC4zLCAtMTMuNCwgLTEuNCwgMS40LCAtMS42LCAtMC41LCAtMTQuOSwgLTE0LjMsIC0xNS4yLCAtMTYuOCwgLTcuNywgLTQuNywgLTYuMywgLTYuNiwgLTE0LjYsIC0xMC44LCAtMTIuOCwgLTEzLjAsIDIuMywgNi4wLCAyLjUsIDMuNiwgLTUwLjAsIC0xMS4yLCAtNTAuMCwgLTExLjksIC0xMC41LCAtOS4yLCAtMTAuNSwgLTEwLjUsIC01MC4wLCAtMTAuMywgLTE2LjIsIC0xMS4zLCAtMS43LCAtMy43LCAtMi41LCAtNS40LF0sXG4gICAgICAgICAgICBbLTcuMSwgLTkuOSwgLTUuNywgLTkuMCwgLTAuNCwgLTMuMCwgMC45LCAtMi4zLCAtNy4yLCAtOC4zLCAtNS4zLCAtOC4wLCAzLjUsIDAuMiwgMTQuMywgMS4wLCAtNy4zLCAtMTEuMiwgLTYuOSwgLTkuNywgLTguNSwgLTEwLjIsIC03LjcsIC05LjgsIC0xMC4wLCAtMTAuNCwgLTguNCwgLTEwLjIsIDEuMCwgLTAuNiwgMS43LCAtMC41LCAtMTEuMSwgLTE0LjgsIC05LjcsIC0xNC41LCAtMy43LCAtNS44LCAtMy4xLCAtNS42LCAtMTAuNCwgLTExLjUsIC04LjIsIC0xMS4xLCAwLjYsIC0xLjYsIDEuNiwgLTEuMSwgLTUwLjAsIC0xMi40LCAtNTAuMCwgLTExLjUsIC01LjUsIC04LjAsIC00LjksIC03LjIsIC01MC4wLCAtMTIuNCwgLTEwLjMsIC0xMS42LCAwLjcsIC02LjgsIDIuNCwgLTYuMCxdLFxuICAgICAgICAgICAgWy0xMS41LCAtOS42LCAtMTIuNiwgLTcuMCwgLTMuNiwgLTMuMywgLTMuNSwgLTAuNiwgLTExLjYsIC03LjcsIC0xMS45LCAtNS4zLCA5LjcsIDEwLjUsIDEuMCwgMTIuNiwgLTEyLjAsIC0xMi4yLCAtMTIuNSwgLTkuNywgLTExLjEsIC0xMS4yLCAtMTEuOSwgLTkuNCwgLTEyLjksIC0xNC4zLCAtMTQuMCwgLTExLjksIC0xLjAsIC0wLjQsIC0xLjYsIDEuMiwgLTEzLjksIC0xNS40LCAtMTMuNywgLTEyLjYsIC02LjIsIC02LjcsIC02LjMsIC00LjQsIC0xMy4wLCAtMTIuMiwgLTEzLjAsIC0xMC40LCAyLjksIDMuOCwgMi41LCA1LjgsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC0xMC4yLCAtOS42LCAtOS43LCAtOS42LCAtOC4zLCAtNTAuMCwgLTExLjYsIC0xNS40LCAtOS40LCAtMS4xLCAtNS40LCAtMS42LCAtMy4zLF0sXG4gICAgICAgICAgICBbMC40LCAtNS4wLCAtMS41LCAtNC4wLCAtNC44LCAtNy42LCAtNS45LCAtNi41LCAtMC43LCAtNi4xLCAtMi4yLCAtNS42LCAtOC43LCAtMTIuNCwgLTcuMywgLTEyLjAsIDEyLjgsIDIuMywgMTAuMiwgMy4wLCAwLjAsIC0zLjQsIC0wLjcsIC0zLjIsIDIuNSwgLTAuOCwgMC45LCAwLjIsIC0zLjAsIC03LjIsIC01LjcsIC02LjEsIC0wLjIsIC02LjYsIC0xLjgsIC02LjAsIC01LjMsIC04LjIsIC01LjcsIC03LjYsIC02LjcsIC05LjYsIC03LjUsIC05LjMsIC03LjEsIC0xMC41LCAtOS42LCAtOS40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjIsIC00LjMsIC02LjgsIC01LjcsIC02LjMsIC01MC4wLCAtOS41LCAtOS42LCAtOC45LCAtNi4yLCAtMTIuOCwgLTYuOCwgLTExLjgsXSxcbiAgICAgICAgICAgIFstNi4wLCAwLjUsIC02LjEsIC0xLjAsIC04LjksIC02LjcsIC04LjksIC04LjIsIC00LjgsIC0yLjksIC00LjQsIC00LjUsIC0xMi40LCAtMTEuNiwgLTExLjIsIC0xMi4yLCAyLjMsIDE0LjYsIDEuOSwgMTIuOSwgLTUuNSwgLTIuNiwgLTQuMSwgLTQuNywgLTEuMiwgMy4wLCAtMS4xLCAxLjYsIC04LjAsIC00LjcsIC04LjcsIC02LjAsIC04LjIsIC00LjcsIC03LjgsIC02LjcsIC0xMC4wLCAtOC4zLCAtOC45LCAtOS45LCAtMTAuOCwgLTcuMSwgLTEwLjAsIC05LjIsIC0xMS42LCAtMTAuMSwgLTEyLjMsIC0xMS45LCAtNTAuMCwgMi4yLCAtNTAuMCwgMC45LCAtNy45LCAtNS45LCAtNy40LCAtNi45LCAtNTAuMCwgLTQuNiwgLTExLjYsIC01LjYsIC05LjcsIC01LjksIC05LjksIC03LjMsXSxcbiAgICAgICAgICAgIFstMS45LCAtNS41LCAtMC42LCAtNS4wLCAtNi41LCAtOC4xLCAtNS42LCAtOC4wLCAtMy4xLCAtNi41LCAtMS45LCAtNi44LCAtMTAuNywgLTEzLjIsIC02LjksIC0xMi41LCAxMC4yLCAxLjksIDExLjksIDIuMSwgLTIuMywgLTQuMSwgLTAuNSwgLTQuNiwgLTAuMSwgLTAuOSwgMi40LCAtMC44LCAtNS4xLCAtNi45LCAtNC44LCAtNi43LCAtMi4zLCAtNy4xLCAtMC44LCAtNy4yLCAtNy4yLCAtOC4wLCAtNS42LCAtOC41LCAtOS40LCAtOS43LCAtNy4yLCAtOS44LCAtOS4yLCAtMTEuMSwgLTkuNSwgLTEwLjcsIC01MC4wLCAtOC43LCAtNTAuMCwgLTguNiwgLTYuMSwgLTcuNSwgLTUuNSwgLTcuNywgLTUwLjAsIC0xMC40LCAtNy43LCAtMTAuMCwgLTcuMywgLTEzLjYsIC02LjQsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTUuMywgLTEuMCwgLTYuMSwgMS4wLCAtNy44LCAtNy45LCAtOC41LCAtNi4zLCAtNC4zLCAtNC4yLCAtNC44LCAtMi40LCAtMTAuNywgLTEyLjAsIC05LjcsIC05LjcsIDMuMCwgMTIuOSwgMi4xLCAxNC43LCAtNC45LCAtMy44LCAtNC4wLCAtMi40LCAtMS4wLCAwLjgsIC0xLjMsIDMuNCwgLTcuNiwgLTUuNywgLTguMSwgLTMuNSwgLTYuOCwgLTUuOCwgLTcuMiwgLTQuMiwgLTguOSwgLTEwLjIsIC04LjQsIC04LjIsIC05LjksIC04LjQsIC05LjcsIC02LjQsIC0xMS4xLCAtMTEuMSwgLTExLjgsIC0xMC4wLCAtNTAuMCwgMC40LCAtNTAuMCwgMi42LCAtNy4yLCAtNy4wLCAtNy40LCAtNS4xLCAtNTAuMCwgLTUuNywgLTkuOCwgLTMuMiwgLTguNCwgLTcuNCwgLTguOSwgLTUuOSxdLFxuICAgICAgICAgICAgWy04LjUsIC0xMC4zLCAtMTAuMCwgLTkuMCwgLTEuNCwgLTQuOSwgLTMuOSwgLTMuNywgLTEwLjAsIC04LjUsIC0xMC4yLCAtNy44LCAtNy44LCAtMTIuNCwgLTguNSwgLTExLjEsIDAuMCwgLTUuNSwgLTIuMywgLTQuOSwgMTIuNiwgMTAuMCwgMTEuMSwgMTAuNSwgLTYuMCwgLTguMywgLTYuOSwgLTcuNSwgLTIuMiwgLTcuNCwgLTUuMywgLTUuOSwgLTguOSwgLTEyLjUsIC05LjQsIC0xMS42LCAtMC43LCAtMy45LCAtMi4zLCAtMy4wLCAtOS4xLCAtOS44LCAtOS4yLCAtOS41LCAtNS42LCAtOS4wLCAtOC4wLCAtOC41LCAtNTAuMCwgLTE1LjMsIC01MC4wLCAtMTQuMSwgMi4zLCAtMS40LCAwLjMsIC0wLjUsIC01MC4wLCAtMTMuNiwgLTE0LjMsIC0xMS41LCAtNS4zLCAtMTMuNywgLTYuMSwgLTEyLjcsXSxcbiAgICAgICAgICAgIFstMTEuMiwgLTguMSwgLTExLjgsIC04LjgsIC00LjEsIC0xLjksIC0zLjksIC0zLjUsIC0xMS42LCAtNS45LCAtMTEuNSwgLTcuOSwgLTEwLjIsIC0xMC4xLCAtMTAuMiwgLTExLjIsIC0zLjQsIC0yLjYsIC00LjEsIC0zLjgsIDEwLjAsIDEzLjEsIDEwLjcsIDEwLjYsIC04LjEsIC01LjIsIC04LjAsIC02LjcsIC02LjEsIC0zLjcsIC03LjUsIC01LjYsIC0xMS4xLCAtMTAuMywgLTEwLjYsIC0xMS45LCAtMy4yLCAtMS4wLCAtMi4yLCAtMi44LCAtMTAuNSwgLTguMSwgLTkuNCwgLTkuNSwgLTguMywgLTYuOSwgLTkuNCwgLTguOCwgLTUwLjAsIC0xMS4zLCAtNTAuMCwgLTEyLjgsIC0wLjYsIDIuMiwgLTAuMywgMC4xLCAtNTAuMCwgLTEwLjEsIC0xNy41LCAtMTEuMSwgLTguNiwgLTkuOSwgLTguNiwgLTExLjksXSxcbiAgICAgICAgICAgIFstOC45LCAtOS40LCAtOC42LCAtOC45LCAtMi45LCAtNC41LCAtMi4yLCAtMy45LCAtOC44LCAtNy41LCAtOC4xLCAtNy45LCAtOC44LCAtMTEuNiwgLTcuNywgLTExLjksIC0wLjcsIC00LjEsIC0wLjUsIC00LjAsIDExLjEsIDEwLjcsIDEzLjIsIDEwLjQsIC01LjcsIC01LjgsIC0zLjUsIC02LjEsIC0zLjYsIC02LjUsIC0zLjMsIC01LjUsIC05LjQsIC0xMS4wLCAtOC43LCAtMTEuMiwgLTEuOCwgLTIuNywgMC43LCAtMy4wLCAtOS4xLCAtOC4yLCAtNy4zLCAtOS40LCAtNy4yLCAtOC4yLCAtNy4yLCAtOC4yLCAtNTAuMCwgLTEzLjIsIC01MC4wLCAtMTMuMywgMC41LCAtMC45LCAxLjgsIC0wLjYsIC01MC4wLCAtMTEuNCwgLTExLjEsIC0xMC41LCAtNi4xLCAtMTIuOSwgLTUuMCwgLTExLjksXSxcbiAgICAgICAgICAgIFstMTAuOCwgLTkuNiwgLTExLjksIC03LjcsIC0zLjMsIC0zLjgsIC00LjUsIC0xLjYsIC0xMS43LCAtNy43LCAtMTIuMCwgLTYuMiwgLTkuNiwgLTEyLjAsIC05LjgsIC05LjQsIC0zLjIsIC00LjcsIC00LjYsIC0yLjQsIDEwLjUsIDEwLjYsIDEwLjQsIDEyLjYsIC04LjIsIC03LjksIC05LjAsIC00LjcsIC02LjEsIC02LjAsIC03LjUsIC0yLjksIC0xMC45LCAtMTIuMiwgLTExLjIsIC0xMC45LCAtMi40LCAtMi45LCAtMi43LCAtMC45LCAtMTAuNCwgLTkuNywgLTEwLjIsIC04LjAsIC04LjQsIC05LjEsIC05LjMsIC02LjUsIC01MC4wLCAtMTMuMywgLTUwLjAsIC0xMS4wLCAtMC4wLCAtMC40LCAtMC40LCAyLjMsIC01MC4wLCAtMTAuOSwgLTE3LjIsIC04LjMsIC04LjMsIC0xMi43LCAtNy44LCAtOS4zLF0sXG4gICAgICAgICAgICBbMi4xLCAtOC4xLCAxLjIsIC03LjAsIC04LjAsIC05LjUsIC03LjMsIC05LjksIDEwLjUsIC01LjUsIDkuMywgLTUuNywgLTkuNSwgLTE1LjEsIC0xMC4wLCAtMTIuOSwgMi41LCAtMS4yLCAtMC4xLCAtMS4wLCAtNi4wLCAtOC4xLCAtNS43LCAtOC4yLCAxMy44LCAxMS4zLCAxMS44LCAxMi4xLCAtNi4wLCAtOS4xLCAtOS4wLCAtOS41LCAtOC45LCAtMTMuNCwgLTEwLjAsIC0xMy4xLCAtOS45LCAtMTEuNywgLTkuOCwgLTEyLjgsIC01LjksIC05LjQsIC02LjUsIC04LjEsIC0xMC43LCAtMTQuMCwgLTEzLjMsIC0xMy45LCAtNTAuMCwgLTExLjksIC01MC4wLCAtOS43LCAtOC45LCAtMTAuOCwgLTkuMCwgLTExLjEsIC01MC4wLCAtNi41LCAtNS4zLCAtNi4zLCAtMTAuNSwgLTE2LjIsIC0xMC40LCAtMTUuMixdLFxuICAgICAgICAgICAgWzAuMCwgLTUuMCwgMC41LCAtNi44LCAtOS4xLCAtNy44LCAtNy41LCAtOC45LCA3LjcsIC0yLjQsIDguMiwgLTUuMSwgLTExLjksIC0xMy4xLCAtMTAuNCwgLTE0LjMsIC0wLjgsIDMuMCwgLTAuOSwgMC44LCAtOC4zLCAtNS4yLCAtNS44LCAtNy45LCAxMS4zLCAxNS4wLCAxMS4yLCAxMi44LCAtOS43LCAtNS4zLCAtOS4yLCAtNy44LCAtMTEuNywgLTEwLjYsIC0xMC4xLCAtMTIuMiwgLTExLjcsIC04LjgsIC04LjksIC0xMS44LCAtOS4zLCAtNS4wLCAtOC4wLCAtOC4yLCAtMTMuNiwgLTExLjQsIC0xMi44LCAtMTMuMCwgLTUwLjAsIC03LjIsIC01MC4wLCAtOC40LCAtMTEuMCwgLTcuNywgLTguNywgLTEwLjIsIC01MC4wLCAtMS41LCAtNy4xLCAtNC45LCAtMTEuMiwgLTExLjYsIC0xMS42LCAtMTUuMCxdLFxuICAgICAgICAgICAgWzEuNCwgLTcuMywgMi4yLCAtNy4xLCAtOC4wLCAtOS4zLCAtNi40LCAtOS42LCA5LjEsIC01LjUsIDEwLjAsIC01LjQsIC0xMC45LCAtMTQuMywgLTguNCwgLTE0LjAsIDAuOSwgLTEuMSwgMi40LCAtMS4zLCAtNi45LCAtOC4wLCAtMy41LCAtOS4wLCAxMS44LCAxMS4yLCAxMy40LCAxMS40LCAtNy4zLCAtOC44LCAtNi41LCAtOC41LCAtMTAuMCwgLTEyLjUsIC03LjgsIC0xMi41LCAtOS42LCAtMTEuMCwgLTcuMSwgLTEwLjcsIC03LjksIC04LjAsIC00LjMsIC05LjQsIC0xMS40LCAtMTIuMywgLTEwLjksIC0xMi45LCAtNTAuMCwgLTExLjgsIC01MC4wLCAtMTEuMiwgLTkuNCwgLTkuOCwgLTcuMywgLTEwLjUsIC01MC4wLCAtNi4yLCAtMi4yLCAtNi43LCAtOS44LCAtMTUuMiwgLTguNSwgLTE0LjksXSxcbiAgICAgICAgICAgIFswLjIsIC02LjMsIDAuMSwgLTQuMywgLTguMiwgLTguOSwgLTguNSwgLTcuMCwgOC41LCAtNC4xLCA4LjAsIC0yLjEsIC0xMC41LCAtMTMuNCwgLTEwLjIsIC0xMS45LCAwLjIsIDEuNiwgLTAuOCwgMy40LCAtNy41LCAtNi43LCAtNi4xLCAtNC43LCAxMi4xLCAxMi44LCAxMS40LCAxNC43LCAtOC43LCAtNy40LCAtOS40LCAtNS4zLCAtOS45LCAtMTEuOCwgLTEwLjUsIC0xMC4zLCAtOS45LCAtMTAuMSwgLTkuMywgLTkuMywgLTguMSwgLTcuMiwgLTguMCwgLTUuMiwgLTEyLjAsIC0xMi4xLCAtMTIuNiwgLTEwLjksIC01MC4wLCAtNy45LCAtNTAuMCwgLTUuMywgLTkuMywgLTguOCwgLTguOSwgLTcuMCwgLTUwLjAsIC0zLjYsIC03LjEsIC0xLjIsIC0xMC4yLCAtMTIuNywgLTkuOSwgLTExLjAsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEzLjQsIC0xMS44LCAtMTIuNCwgLTYuMCwgLTkuNCwgLTcuMSwgLTguNiwgLTkuOCwgLTEyLjksIC0xMC44LCAtMTIuNCwgMi4zLCAtMS40LCAxLjAsIC0xLjAsIC0zLjAsIC04LjAsIC01LjEsIC03LjYsIC0yLjIsIC02LjEsIC0zLjYsIC02LjEsIC02LjAsIC05LjcsIC03LjMsIC04LjcsIDExLjIsIDcuOSwgOC45LCA4LjEsIC0xMi4xLCAtMTcuNCwgLTEzLjIsIC0xNi44LCAtNi4zLCAtOS41LCAtNy41LCAtOC44LCAtMTIuNywgLTE1LjIsIC0xMy4xLCAtMTQuMiwgMC4wLCAtMy4xLCAtMS44LCAtMy4xLCAtNTAuMCwgLTEwLjcsIC01MC4wLCAtOS4zLCAtNC42LCAtOC45LCAtNS45LCAtOC4zLCAtNTAuMCwgLTEyLjgsIC05LjYsIC0xMC42LCA5LjUsIC0zLjIsIDguMiwgLTIuOCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTEuMywgLTE0LjAsIC0xMi45LCAtOS4zLCAtNy4xLCAtOC4yLCAtOC45LCAtMTIuNywgLTEwLjMsIC0xMS45LCAtMTIuMywgLTAuNCwgMS40LCAtMC42LCAtMC40LCAtNy4yLCAtNC43LCAtNi45LCAtNS43LCAtNy40LCAtMy43LCAtNi41LCAtNi4wLCAtOS4xLCAtNS4zLCAtOC44LCAtNy40LCA3LjksIDExLjksIDcuOCwgOS4zLCAtMTUuMiwgLTE1LjEsIC0xNC42LCAtMTcuMiwgLTkuNywgLTcuMywgLTguMiwgLTkuMiwgLTE1LjAsIC0xMi44LCAtMTQuMSwgLTE0LjksIC0yLjgsIDAuMiwgLTIuOSwgLTIuMywgLTUwLjAsIC03LjQsIC01MC4wLCAtOC43LCAtOS40LCAtNy4zLCAtOS40LCAtOS40LCAtNTAuMCwgLTguMCwgLTExLjksIC05LjcsIDYuNSwgMC41LCA2LjQsIC0xLjgsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTE0LjQsIC0xMS45LCAtMTMuOSwgLTcuNywgLTkuMCwgLTYuNywgLTguOCwgLTExLjcsIC0xMi43LCAtMTAuNywgLTEzLjEsIC0wLjIsIC0xLjYsIDEuNywgLTEuNiwgLTUuNywgLTguNywgLTQuOCwgLTguMSwgLTUuMywgLTcuNSwgLTMuMywgLTcuNSwgLTkuMCwgLTkuMiwgLTYuNSwgLTkuNCwgOC45LCA3LjgsIDEwLjEsIDcuOCwgLTE0LjMsIC0xNy43LCAtMTMuMCwgLTE3LjgsIC04LjAsIC05LjQsIC02LjIsIC05LjIsIC0xNS4xLCAtMTQuOSwgLTEyLjIsIC0xNC45LCAtMS44LCAtMy4yLCAtMC44LCAtMy4yLCAtNTAuMCwgLTEwLjgsIC01MC4wLCAtOS45LCAtNy4zLCAtOS42LCAtNi40LCAtOS40LCAtNTAuMCwgLTEyLjMsIC04LjcsIC0xMS4zLCA3LjYsIC0zLjMsIDguNywgLTIuOSxdLFxuICAgICAgICAgICAgWy0xMi41LCAtMTIuOSwgLTEzLjQsIC0xMC4wLCAtOC41LCAtOS4wLCAtNy44LCAtNi44LCAtMTEuOCwgLTExLjMsIC0xMi40LCAtMTAuMSwgLTAuMywgLTAuNSwgLTAuNSwgMS4yLCAtNi4xLCAtNi4wLCAtNi43LCAtMy41LCAtNS45LCAtNS42LCAtNS41LCAtMi45LCAtOS41LCAtNy44LCAtOC41LCAtNS4zLCA4LjEsIDkuMywgNy44LCAxMS44LCAtMTQuNCwgLTE1LjcsIC0xNC41LCAtMTQuNiwgLTguNCwgLTguNywgLTcuOSwgLTcuMSwgLTE0LjMsIC0xMy44LCAtMTMuOCwgLTEyLjMsIC0yLjQsIC0yLjIsIC0yLjksIC0wLjIsIC01MC4wLCAtOC45LCAtNTAuMCwgLTcuMSwgLTguMSwgLTkuMSwgLTguNywgLTYuNiwgLTUwLjAsIC05LjcsIC0xMS40LCAtOC4wLCA2LjgsIC0xLjgsIDYuOSwgMC40LF0sXG4gICAgICAgICAgICBbLTIuNiwgLTYuMywgLTQuOSwgLTQuOSwgLTYuNCwgLTkuNCwgLTcuOSwgLTguNiwgLTYuMywgLTcuNCwgLTguMiwgLTYuNiwgLTkuNywgLTE0LjksIC0xMS4xLCAtMTMuOSwgLTAuMiwgLTguMiwgLTIuMywgLTYuOCwgLTguOSwgLTExLjEsIC05LjQsIC0xMC45LCAtOC45LCAtMTEuNywgLTEwLjAsIC05LjksIC0xMi4xLCAtMTUuMiwgLTE0LjMsIC0xNC40LCAxMS4xLCAyLjksIDkuMiwgMy41LCAtMy4wLCAtNy4wLCAtNC4zLCAtNi4yLCAtMi4yLCAtNi42LCAtMy43LCAtNS43LCAtNi4wLCAtMTAuNCwgLTguNiwgLTkuNSwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTEzLjksIC03LjgsIC0xMC41LCAtOC43LCAtOS42LCAtNTAuMCwgLTE2LjUsIC0xNy4xLCAtMTQuOCwgLTEyLjEsIC0xOC45LCAtMTIuNCwgLTE3LjQsXSxcbiAgICAgICAgICAgIFstOC41LCAwLjgsIC05LjEsIC0wLjcsIC0xMC4xLCAtNy41LCAtOS4xLCAtOC4yLCAtMTEuNCwgLTMuMSwgLTExLjgsIC00LjQsIC0xNS41LCAtMTQuMywgLTE0LjgsIC0xNS40LCAtNi42LCAtNC43LCAtNy4xLCAtNS44LCAtMTIuNSwgLTEwLjMsIC0xMS4wLCAtMTIuMiwgLTEzLjQsIC0xMC42LCAtMTIuNSwgLTExLjgsIC0xNy40LCAtMTUuMSwgLTE3LjcsIC0xNS43LCAyLjksIDEyLjUsIDMuMSwgMTAuMywgLTcuNywgLTUuMiwgLTYuMiwgLTcuMywgLTUuNCwgLTEuNywgLTUuNCwgLTMuNywgLTExLjYsIC05LjEsIC0xMy4wLCAtMTAuOCwgLTUwLjAsIC0xMC4zLCAtNTAuMCwgLTExLjIsIC05LjgsIC04LjMsIC05LjEsIC05LjcsIC01MC4wLCAtMTIuNywgLTIwLjYsIC0xMy4xLCAtMTYuMCwgLTE2LjYsIC0xNy4wLCAtMTguNCxdLFxuICAgICAgICAgICAgWy01LjAsIC02LjQsIC0zLjQsIC01LjYsIC03LjUsIC05LjMsIC03LjEsIC04LjgsIC04LjgsIC03LjQsIC02LjksIC02LjksIC0xMS40LCAtMTUuMiwgLTkuNywgLTEzLjcsIC0xLjgsIC03LjgsIC0wLjgsIC03LjIsIC05LjQsIC0xMC42LCAtOC43LCAtMTEuMiwgLTEwLjAsIC0xMC4xLCAtNy44LCAtMTAuNSwgLTEzLjIsIC0xNC42LCAtMTMuMCwgLTE0LjUsIDkuMiwgMy4xLCAxMC44LCAzLjAsIC00LjUsIC02LjcsIC0yLjcsIC02LjcsIC01LjAsIC02LjgsIC0yLjUsIC02LjcsIC03LjUsIC0xMC40LCAtNy40LCAtMTAuMiwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTE0LjIsIC04LjksIC0xMC4yLCAtOC41LCAtMTAuMCwgLTUwLjAsIC0xNS42LCAtMTUuMywgLTE1LjUsIC0xMy4wLCAtMTguOCwgLTEyLjYsIC0xOC4zLF0sXG4gICAgICAgICAgICBbLTguMSwgLTEuMSwgLTguOSwgMS40LCAtOC42LCAtOS4yLCAtOS40LCAtNi44LCAtMTEuMCwgLTQuOSwgLTExLjUsIC0yLjYsIC0xMy43LCAtMTYuOCwgLTE0LjUsIC0xMi42LCAtNi4wLCAtNi43LCAtNy4yLCAtNC4yLCAtMTEuNiwgLTExLjksIC0xMS4yLCAtMTAuOSwgLTEzLjEsIC0xMi4yLCAtMTIuNSwgLTEwLjMsIC0xNi44LCAtMTcuMiwgLTE3LjgsIC0xNC42LCAzLjUsIDEwLjMsIDMuMCwgMTIuNCwgLTYuOSwgLTcuNSwgLTYuOCwgLTQuOSwgLTUuNCwgLTQuMiwgLTUuNCwgLTEuMywgLTEwLjgsIC0xMS41LCAtMTIuNCwgLTguMiwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTguOSwgLTkuMiwgLTEwLjAsIC05LjQsIC03LjksIC01MC4wLCAtMTQuMywgLTE5LjksIC0xMS40LCAtMTYuMiwgLTE5LjIsIC0xNS44LCAtMTUuOSxdLFxuICAgICAgICAgICAgWy02LjMsIC03LjQsIC04LjAsIC02LjAsIDIuOCwgLTAuNywgMC45LCAwLjMsIC03LjUsIC00LjQsIC04LjQsIC0zLjYsIC0zLjAsIC03LjcsIC0zLjcsIC02LjIsIC01LjMsIC0xMC4wLCAtNy4yLCAtOC45LCAtMC43LCAtMy4yLCAtMS44LCAtMi40LCAtOS45LCAtMTEuNywgLTkuNiwgLTkuOSwgLTYuMywgLTkuNywgLTguMCwgLTguNCwgLTMuMCwgLTcuNywgLTQuNSwgLTYuOSwgMTEuMywgOC4yLCA5LjQsIDkuMSwgLTEuMCwgLTMuMywgLTEuOCwgLTIuNCwgMS41LCAtMi4xLCAtMC40LCAtMS4xLCAtNTAuMCwgLTE0LjUsIC01MC4wLCAtMTIuOSwgMi44LCAtMC4wLCAxLjQsIDAuNywgLTUwLjAsIC04LjcsIC0xNC4xLCAtNy41LCAtNS4yLCAtMTIuNSwgLTYuNSwgLTEwLjcsXSxcbiAgICAgICAgICAgIFstOS45LCAtNS4wLCAtMTAuMCwgLTYuNSwgLTAuNywgMi42LCAtMC4yLCAwLjEsIC0xMC4zLCAtMS44LCAtOS45LCAtMy44LCAtNi40LCAtNC43LCAtNS44LCAtNi43LCAtOC4yLCAtOC4zLCAtOC4wLCAtMTAuMiwgLTMuOSwgLTEuMCwgLTIuNywgLTIuOSwgLTExLjcsIC04LjgsIC0xMS4wLCAtMTAuMSwgLTkuNSwgLTcuMywgLTkuNCwgLTguNywgLTcuMCwgLTUuMiwgLTYuNywgLTcuNSwgOC4yLCAxMS42LCA4LjgsIDkuMSwgLTMuNywgLTAuOSwgLTMuMSwgLTMuMCwgLTIuMCwgMS4yLCAtMi4zLCAtMS4zLCAtNTAuMCwgLTEyLjEsIC01MC4wLCAtMTIuNiwgMC4xLCAyLjUsIDAuNywgMC42LCAtNTAuMCwgLTYuMCwgLTE0LjgsIC03LjUsIC04LjYsIC05LjQsIC04LjUsIC0xMS4yLF0sXG4gICAgICAgICAgICBbLTcuNSwgLTYuMiwgLTcuMiwgLTYuMiwgMC45LCAwLjIsIDIuNSwgMC4yLCAtOC4zLCAtMy41LCAtNy4xLCAtMy43LCAtNC4xLCAtNi4zLCAtMy4xLCAtNi4zLCAtNS43LCAtOC45LCAtNS42LCAtOC40LCAtMi4zLCAtMi4yLCAwLjcsIC0yLjcsIC05LjgsIC04LjksIC03LjEsIC05LjMsIC03LjUsIC04LjIsIC02LjIsIC03LjksIC00LjMsIC02LjIsIC0yLjcsIC02LjgsIDkuNCwgOC44LCAxMi4xLCA4LjgsIC0yLjEsIC0yLjAsIDAuMSwgLTIuNCwgMC4wLCAtMS4xLCAxLjMsIC0wLjgsIC01MC4wLCAtMTEuOSwgLTUwLjAsIC0xMi42LCAxLjIsIDAuNywgMy41LCAwLjgsIC01MC4wLCAtNy4xLCAtMTIuNCwgLTcuMSwgLTcuMSwgLTEwLjYsIC01LjAsIC0xMC42LF0sXG4gICAgICAgICAgICBbLTkuMCwgLTYuNSwgLTEwLjAsIC00LjgsIDAuMSwgLTAuMSwgLTAuMywgMi40LCAtOS45LCAtMy41LCAtMTAuNiwgLTIuMCwgLTUuNCwgLTYuNiwgLTUuNiwgLTQuNCwgLTcuNiwgLTkuOSwgLTguNSwgLTguMiwgLTMuMCwgLTIuOCwgLTMuMCwgLTAuOSwgLTEyLjgsIC0xMS44LCAtMTAuNywgLTkuMywgLTguOCwgLTkuMiwgLTkuMiwgLTcuMSwgLTYuMiwgLTcuMywgLTYuNywgLTQuOSwgOS4xLCA5LjEsIDguOCwgMTEuMiwgLTMuMSwgLTMuMCwgLTMuMywgLTEuMCwgLTEuMSwgLTEuNCwgLTIuMCwgMS4yLCAtNTAuMCwgLTEyLjgsIC01MC4wLCAtMTAuOSwgMC44LCAwLjUsIDAuNywgMi4zLCAtNTAuMCwgLTcuNSwgLTE2LjUsIC01LjksIC03LjgsIC0xMS4xLCAtNy44LCAtOS4wLF0sXG4gICAgICAgICAgICBbLTcuMSwgLTUuNiwgLTkuMSwgLTUuMSwgLTUuOSwgLTguMCwgLTYuOSwgLTcuNCwgLTEuOSwgLTEuNiwgLTQuNywgLTEuNCwgLTkuNiwgLTE0LjYsIC0xMC40LCAtMTMuMCwgLTYuNywgLTEwLjgsIC05LjQsIC05LjksIC05LjEsIC0xMC41LCAtOS4xLCAtMTAuNCwgLTUuOSwgLTkuMywgLTcuOSwgLTguMSwgLTEyLjcsIC0xNS4wLCAtMTUuMSwgLTE0LjMsIC0yLjIsIC01LjQsIC01LjAsIC01LjQsIC0xLjAsIC0zLjcsIC0yLjEsIC0zLjEsIDEyLjgsIDkuNiwgMTEuMSwgMTAuMSwgLTQuOCwgLTkuNCwgLTguMSwgLTguNiwgLTUwLjAsIC0xOC4zLCAtNTAuMCwgLTE1LjQsIC01LjksIC03LjUsIC02LjYsIC03LjEsIC01MC4wLCAtOS41LCAtMTEuNywgLTguNCwgLTEyLjUsIC0xNy4zLCAtMTMuMiwgLTE1LjQsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEuNiwgLTEwLjIsIC0zLjIsIC03LjMsIC00LjYsIC02LjUsIC02LjIsIC02LjcsIDMuMCwgLTYuOCwgMC44LCAtMTEuOSwgLTEwLjgsIC0xMS41LCAtMTIuMiwgLTkuNiwgLTcuMSwgLTkuNywgLTguNCwgLTkuOCwgLTguMSwgLTguMiwgLTkuNywgLTkuNCwgLTUuMCwgLTguMCwgLTcuMiwgLTE1LjIsIC0xMi44LCAtMTQuOSwgLTEzLjgsIC02LjYsIC0xLjcsIC02LjgsIC00LjIsIC0zLjMsIC0wLjksIC0yLjAsIC0zLjAsIDkuNiwgMTIuOCwgOS43LCAxMC41LCAtOC41LCAtNS42LCAtOS4zLCAtNy44LCAtNTAuMCwgLTEyLjcsIC01MC4wLCAtMTMuOCwgLTYuOCwgLTUuMSwgLTUuMywgLTYuNSwgLTUwLjAsIC00LjEsIC0xMi44LCAtNS44LCAtMTQuNCwgLTE0LjEsIC0xMy42LCAtMTQuOCxdLFxuICAgICAgICAgICAgWy04LjIsIC00LjcsIC03LjEsIC01LjAsIC02LjUsIC03LjcsIC01LjUsIC02LjksIC00LjEsIC0wLjgsIC0xLjIsIC0wLjksIC0xMC41LCAtMTIuOCwgLTguMiwgLTEzLjAsIC03LjUsIC0xMC4wLCAtNy4yLCAtOS43LCAtOS4yLCAtOS40LCAtNy4zLCAtMTAuMiwgLTYuNSwgLTguMCwgLTQuMywgLTguMCwgLTEzLjEsIC0xNC4xLCAtMTIuMiwgLTEzLjgsIC0zLjcsIC01LjQsIC0yLjUsIC01LjQsIC0xLjgsIC0zLjEsIDAuMSwgLTMuMywgMTEuMSwgOS43LCAxMi45LCA5LjgsIC01LjUsIC04LjEsIC01LjQsIC03LjgsIC01MC4wLCAtMTYuNCwgLTUwLjAsIC0xNC44LCAtNS45LCAtNy4xLCAtNC43LCAtNy4yLCAtNTAuMCwgLTguNCwgLTYuNCwgLTguMSwgLTEyLjEsIC0xNi4yLCAtMTAuMywgLTE1LjgsXSxcbiAgICAgICAgICAgIFstOS4yLCAtMy4wLCAtOS45LCAtMS4yLCAtNi41LCAtNi4xLCAtNi44LCAtNC40LCAtNi40LCAwLjksIC03LjAsIDMuMCwgLTExLjgsIC0xMy4wLCAtMTEuMSwgLTEwLjQsIC05LjMsIC05LjIsIC05LjgsIC02LjQsIC05LjUsIC05LjUsIC05LjQsIC04LjAsIC04LjEsIC04LjIsIC05LjQsIC01LjIsIC0xNC4yLCAtMTQuOSwgLTE0LjksIC0xMi4zLCAtNS43LCAtMy43LCAtNi43LCAtMS4zLCAtMi40LCAtMy4wLCAtMi40LCAtMS4wLCAxMC4xLCAxMC41LCA5LjgsIDEzLjEsIC03LjIsIC04LjAsIC04LjQsIC01LjAsIC01MC4wLCAtMTQuNywgLTUwLjAsIC0xMS40LCAtNi4zLCAtNi43LCAtNS44LCAtNS4wLCAtNTAuMCwgLTYuMSwgLTEzLjQsIC0zLjYsIC0xMy4wLCAtMTYuMCwgLTEzLjcsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTguMiwgLTEwLjgsIC0xMC4xLCAtOS44LCAtMC40LCAtMy42LCAtMS43LCAtMi45LCAtNy45LCAtOC40LCAtOS44LCAtOC4yLCA2LjIsIDIuMywgMC42LCAyLjksIC03LjEsIC0xMS42LCAtOS4yLCAtMTEuMSwgLTUuNiwgLTguMywgLTcuMiwgLTguNCwgLTEwLjcsIC0xMy42LCAtMTEuNCwgLTEyLjAsIDAuMCwgLTIuOCwgLTEuOCwgLTIuNCwgLTYuMCwgLTExLjYsIC03LjUsIC0xMC44LCAxLjUsIC0yLjAsIDAuMCwgLTEuMSwgLTQuOCwgLTguNSwgLTUuNSwgLTcuMiwgMTEuOSwgOC42LCAxMC4wLCA5LjAsIC01MC4wLCAtMTQuMiwgLTUwLjAsIC0xMi44LCAtNC4xLCAtNy40LCAtNS43LCAtNi41LCAtNTAuMCwgLTExLjAsIC0xNC4zLCAtOS45LCAxLjQsIC03LjksIC0wLjcsIC02LjgsXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTguNywgLTEzLjAsIC05LjksIC0zLjksIC0xLjAsIC0zLjQsIC0yLjksIC0xMi41LCAtNi4zLCAtMTEuNiwgLTguMSwgMy4zLCA2LjAsIC0xLjYsIDMuOCwgLTEwLjUsIC0xMC4xLCAtMTEuMSwgLTExLjEsIC05LjAsIC02LjksIC04LjIsIC05LjEsIC0xNC4wLCAtMTEuNCwgLTEyLjMsIC0xMi4xLCAtMy4xLCAwLjIsIC0zLjIsIC0yLjIsIC0xMC40LCAtOS4xLCAtMTAuNCwgLTExLjUsIC0yLjEsIDEuMiwgLTEuMSwgLTEuNCwgLTkuNCwgLTUuNiwgLTguMSwgLTguMCwgOC42LCAxMi40LCA4LjYsIDkuNSwgLTUwLjAsIC0xMC40LCAtNTAuMCwgLTExLjYsIC03LjIsIC01LjcsIC03LjUsIC03LjQsIC01MC4wLCAtOC42LCAtMTUuNywgLTkuNywgLTMuMCwgLTMuNywgLTMuMiwgLTUuOSxdLFxuICAgICAgICAgICAgWy0xMS4xLCAtMTEuOSwgLTEwLjYsIC0xMS4zLCAtMi42LCAtNC4xLCAtMS43LCAtMy41LCAtMTEuNCwgLTkuNiwgLTkuNiwgLTkuMiwgMy43LCAyLjUsIDEuNiwgMi41LCAtOS42LCAtMTIuMywgLTkuNSwgLTExLjgsIC04LjAsIC05LjQsIC03LjIsIC05LjMsIC0xMy4zLCAtMTIuOCwgLTEwLjksIC0xMi42LCAtMS44LCAtMi45LCAtMC44LCAtMi45LCAtOC42LCAtMTMuMCwgLTcuNCwgLTEyLjQsIC0wLjQsIC0yLjMsIDEuMywgLTIuMCwgLTguMSwgLTkuMywgLTUuNCwgLTguNCwgMTAuMCwgOC42LCAxMS40LCA4LjksIC01MC4wLCAtMTMuNywgLTUwLjAsIC0xMy4yLCAtNi4xLCAtOC4xLCAtNS41LCAtNy41LCAtNTAuMCwgLTExLjMsIC0xMi43LCAtMTAuMSwgLTEuNiwgLTcuOCwgLTAuMywgLTcuMixdLFxuICAgICAgICAgICAgWy0xMS40LCAtMTAuMCwgLTEyLjcsIC04LjIsIC0zLjEsIC0zLjEsIC0yLjgsIC0wLjksIC0xMS43LCAtNy4zLCAtMTIuMSwgLTUuOCwgMy42LCAzLjYsIC0xLjEsIDUuOCwgLTkuNCwgLTExLjksIC0xMC43LCAtMTAuMCwgLTguNSwgLTguOCwgLTguMiwgLTYuNSwgLTEzLjksIC0xMy4wLCAtMTIuOSwgLTEwLjksIC0zLjEsIC0yLjMsIC0zLjIsIC0wLjIsIC05LjUsIC0xMC44LCAtMTAuMiwgLTguMiwgLTEuMSwgLTEuMywgLTAuOCwgMS4yLCAtOC42LCAtNy44LCAtNy44LCAtNS4wLCA5LjAsIDkuNSwgOC45LCAxMi4wLCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTAuMywgLTYuMiwgLTcuMCwgLTcuMSwgLTUuNCwgLTUwLjAsIC05LjMsIC0xNC4wLCAtOC4yLCAtMi40LCAtNi4zLCAtMi40LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIDMwLjYsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTQuOCwgLTYuMiwgLTE0LjksIC03LjYsIC0xNC42LCAtMTEuNiwgLTEzLjAsIC0xMi4yLCAtMTQuMCwgLTkuMCwgLTE0LjEsIC0xMC4xLCAtMTMuNiwgLTExLjIsIC0xMi40LCAtMTIuNSwgLTguMSwgMi4yLCAtOC43LCAwLjQsIC0xNS4zLCAtMTEuMywgLTEzLjIsIC0xMy4zLCAtMTEuOSwgLTcuMiwgLTExLjgsIC03LjksIC0xMC43LCAtNy40LCAtMTAuOCwgLTguOSwgLTE1LjUsIC0xMC4zLCAtMTUuNSwgLTEyLjUsIC0xNC41LCAtMTIuMSwgLTExLjksIC0xMi44LCAtMTguMywgLTEyLjcsIC0xNi40LCAtMTQuNywgLTE0LjIsIC0xMC40LCAtMTMuNywgLTEzLjAsIC01MC4wLCAxNS4xLCAtNTAuMCwgMTMuMywgLTkuOSwgLTUuOCwgLTguOSwgLTcuNiwgLTUwLjAsIC0xLjUsIC03LjgsIC0zLjAsIC04LjEsIDMuNiwgLTkuNCwgMi4wLF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzAuNiwgLTUwLjAsIDM1LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuOCwgLTcuNSwgLTE0LjQsIC01LjEsIC0xMi42LCAtMTEuNiwgLTExLjUsIC0xMC4xLCAtMTMuMiwgLTkuNywgLTEyLjcsIC03LjQsIC0xMS45LCAtMTEuOSwgLTExLjUsIC0xMC4yLCAtNy4yLCAwLjksIC04LjYsIDIuNiwgLTE0LjEsIC0xMi44LCAtMTMuMywgLTExLjAsIC05LjcsIC04LjQsIC0xMS4yLCAtNS4zLCAtOS4zLCAtOC43LCAtOS45LCAtNy4xLCAtMTMuOSwgLTExLjIsIC0xNC4yLCAtOC45LCAtMTIuOSwgLTEyLjYsIC0xMi42LCAtMTAuOSwgLTE1LjQsIC0xMy44LCAtMTQuOCwgLTExLjQsIC0xMi44LCAtMTEuNiwgLTEzLjIsIC0xMC4zLCAtNTAuMCwgMTMuMywgLTUwLjAsIDE1LjIsIC04LjYsIC03LjAsIC04LjQsIC00LjgsIC01MC4wLCAtMy4wLCAtNy4xLCAtMC4xLCAtNy4zLCAyLjMsIC04LjcsIDMuOSxdLFxuICAgICAgICAgICAgWy03LjMsIC02LjMsIC04LjksIC01LjUsIDIuOSwgMC4yLCAxLjUsIDEuMiwgLTguNSwgLTIuMywgLTEwLjAsIC0xLjcsIC01LjYsIC0xMC41LCAtNS41LCAtOS42LCAtNC4zLCAtNy45LCAtNi4xLCAtNy4yLCAyLjMsIC0wLjYsIDAuNSwgLTAuMCwgLTguOSwgLTExLjAsIC05LjQsIC05LjMsIC00LjYsIC05LjQsIC03LjMsIC04LjEsIC03LjgsIC05LjgsIC04LjksIC05LjIsIDIuOCwgMC4xLCAxLjIsIDAuOCwgLTUuOSwgLTYuOCwgLTUuOSwgLTYuMywgLTQuMSwgLTcuMiwgLTYuMSwgLTYuMiwgLTUwLjAsIC05LjksIC01MC4wLCAtOC42LCAxMi41LCA5LjQsIDExLjAsIDkuOCwgLTUwLjAsIC00LjgsIC04LjcsIC0zLjUsIC0wLjAsIC04LjYsIC0yLjEsIC03LjAsXSxcbiAgICAgICAgICAgIFstMTAuMSwgLTQuMywgLTEwLjgsIC01LjgsIDAuMSwgMi4zLCAwLjcsIDAuNiwgLTEwLjQsIC0wLjIsIC0xMC44LCAtMi4wLCAtOC44LCAtOS4yLCAtOC4wLCAtOS43LCAtNi44LCAtNS45LCAtNy41LCAtNy4wLCAtMS40LCAyLjIsIC0wLjksIC0wLjQsIC0xMC44LCAtNy43LCAtOS44LCAtOC44LCAtOC45LCAtNy4zLCAtOS42LCAtOS4xLCAtMTAuNSwgLTguMywgLTEwLjIsIC0xMC4wLCAtMC4wLCAyLjUsIDAuNywgMC41LCAtNy41LCAtNS4xLCAtNy4xLCAtNi43LCAtNy40LCAtNS43LCAtOC4xLCAtNy4wLCAtNTAuMCwgLTUuOCwgLTUwLjAsIC03LjAsIDkuNCwgMTIuNywgMTAuMSwgMTAuMCwgLTUwLjAsIC0xLjUsIC0xMS4zLCAtMy4zLCAtNS40LCAtNC4yLCAtNS42LCAtNi44LF0sXG4gICAgICAgICAgICBbLTguNCwgLTYuMiwgLTguOSwgLTUuOSwgMS44LCAwLjQsIDIuNywgMS4yLCAtOS4xLCAtMS4yLCAtOC44LCAtMS41LCAtNy4yLCAtMTAuNSwgLTQuOSwgLTkuNiwgLTUuNywgLTcuNCwgLTUuNSwgLTcuNCwgMC4zLCAtMC4zLCAxLjgsIC0wLjQsIC05LjAsIC04LjcsIC03LjMsIC04LjksIC01LjksIC05LjQsIC02LjQsIC04LjcsIC04LjcsIC05LjEsIC04LjUsIC05LjQsIDEuNCwgMC43LCAzLjUsIDAuNywgLTYuNiwgLTUuMywgLTQuNywgLTUuOCwgLTUuNywgLTcuNSwgLTUuNSwgLTcuMSwgLTUwLjAsIC04LjksIC01MC4wLCAtOC40LCAxMS4wLCAxMC4xLCAxMy4yLCAxMC4yLCAtNTAuMCwgLTQuMiwgLTYuMSwgLTMuNiwgLTMuNSwgLTguNCwgLTEuMiwgLTYuOCxdLFxuICAgICAgICAgICAgWy05LjEsIC01LjQsIC0xMC40LCAtNC4yLCAxLjAsIDAuNSwgMC42LCAyLjQsIC05LjYsIC0xLjUsIC0xMC41LCAtMC41LCAtOC45LCAtMTAuNSwgLTcuMiwgLTguMywgLTYuMywgLTYuOSwgLTcuNywgLTUuMSwgLTAuNSwgMC4xLCAtMC42LCAyLjMsIC0xMS4xLCAtMTAuMiwgLTEwLjUsIC03LjAsIC04LjMsIC05LjQsIC05LjQsIC02LjYsIC05LjYsIC05LjcsIC0xMC4wLCAtNy45LCAwLjcsIDAuNiwgMC44LCAyLjMsIC03LjEsIC02LjUsIC03LjIsIC01LjAsIC02LjUsIC03LjQsIC03LjUsIC01LjQsIC01MC4wLCAtNy42LCAtNTAuMCwgLTQuOCwgOS44LCAxMC4wLCAxMC4yLCAxMi4xLCAtNTAuMCwgLTMuMSwgLTExLjQsIC0wLjcsIC00LjYsIC02LjYsIC00LjksIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy4wLCAtMTMuMSwgLTguMywgLTkuMiwgLTYuNSwgLTguOSwgLTcuNiwgLTkuOCwgLTAuNywgLTkuMiwgLTIuMSwgLTEyLjQsIC0xMC4zLCAtMTIuNCwgLTExLjYsIC05LjUsIC00LjYsIC0xMC40LCAtNS43LCAtMTMuNiwgLTEwLjEsIC0xMS40LCAtMTAuOSwgLTYuNSwgLTEuNSwgLTYuMiwgLTMuNiwgLTEyLjgsIC04LjAsIC0xMi4zLCAtOS43LCAtMTYuNSwgLTEyLjcsIC0xNS42LCAtMTQuMywgLTguNywgLTYuMCwgLTcuMSwgLTcuNSwgLTkuNSwgLTQuMSwgLTguNCwgLTYuMSwgLTExLjAsIC04LjYsIC0xMS4zLCAtOS4zLCAtNTAuMCwgLTEuNSwgLTUwLjAsIC0zLjAsIC00LjgsIC0xLjUsIC00LjIsIC0zLjEsIC01MC4wLCAxNi40LCAtNS4xLCAxNC4yLCAtMTAuMSwgLTQuMywgLTEwLjAsIC01LjQsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTE2LjMsIC0xMS44LCAtMTUuNSwgLTEzLjYsIC0xNS4zLCAtMTIuMSwgLTE2LjEsIC03LjcsIC0xMy4zLCAtNC4yLCAtMTIuNiwgLTE0LjEsIC0xNi4yLCAtMTAuMywgLTE1LjQsIC05LjYsIC0xMS42LCAtNy43LCAtOS44LCAtMTQuMywgLTE3LjUsIC0xMS4xLCAtMTcuMiwgLTUuMywgLTcuMSwgLTIuMiwgLTcuMSwgLTkuNiwgLTExLjksIC04LjcsIC0xMS40LCAtMTcuMSwgLTIwLjYsIC0xNS4zLCAtMTkuOSwgLTE0LjEsIC0xNC44LCAtMTIuNCwgLTE2LjUsIC0xMS43LCAtMTIuOCwgLTYuNCwgLTEzLjQsIC0xNC4zLCAtMTUuNywgLTEyLjcsIC0xNC4wLCAtNTAuMCwgLTcuOCwgLTUwLjAsIC03LjEsIC04LjcsIC0xMS4zLCAtNi4xLCAtMTEuNCwgLTUwLjAsIC01LjEsIDE4LjYsIC00LjgsIC04LjYsIC04LjEsIC00LjUsIC03LjMsXSxcbiAgICAgICAgICAgIFstMTIuNCwgLTguMiwgLTEzLjAsIC01LjksIC03LjcsIC03LjgsIC03LjQsIC01LjgsIC04LjgsIC0yLjAsIC05LjMsIC0wLjQsIC0xMS42LCAtMTEuMywgLTExLjYsIC05LjQsIC04LjksIC01LjYsIC0xMC4wLCAtMy4yLCAtMTEuNSwgLTExLjEsIC0xMC41LCAtOC4zLCAtNi4zLCAtNC45LCAtNi43LCAtMS4yLCAtMTAuNiwgLTkuNywgLTExLjMsIC04LjAsIC0xNC44LCAtMTMuMSwgLTE1LjUsIC0xMS40LCAtNy41LCAtNy41LCAtNy4xLCAtNS45LCAtOC40LCAtNS44LCAtOC4xLCAtMy42LCAtOS45LCAtOS43LCAtMTAuMSwgLTguMiwgLTUwLjAsIC0zLjAsIC01MC4wLCAtMC4xLCAtMy41LCAtMy4zLCAtMy42LCAtMC43LCAtNTAuMCwgMTQuMiwgLTQuOCwgMTYuNCwgLTguOSwgLTUuOCwgLTguOSwgLTMuNCxdLFxuICAgICAgICAgICAgWy0xMC43LCAtMTMuMiwgLTEyLjQsIC0xMS42LCAtNC44LCAtOC40LCAtNi4xLCAtNy4yLCAtMTAuMywgLTExLjgsIC0xMS4wLCAtMTEuNiwgMi44LCAtMS43LCAwLjcsIC0xLjEsIC02LjIsIC05LjcsIC03LjMsIC04LjQsIC01LjMsIC04LjYsIC02LjEsIC04LjMsIC0xMC41LCAtMTEuMiwgLTkuOCwgLTEwLjIsIDkuNSwgNi41LCA3LjYsIDYuOCwgLTEyLjEsIC0xNi4wLCAtMTMuMCwgLTE2LjIsIC01LjIsIC04LjYsIC03LjEsIC03LjgsIC0xMi41LCAtMTQuNCwgLTEyLjEsIC0xMy4wLCAxLjQsIC0zLjAsIC0xLjYsIC0yLjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMywgLTAuMCwgLTUuNCwgLTMuNSwgLTQuNiwgLTUwLjAsIC0xMC4xLCAtOC42LCAtOC45LCAxMy4yLCAtMC45LCA5LjcsIC0wLjMsXSxcbiAgICAgICAgICAgIFstMTguMSwgLTEyLjMsIC0xOS40LCAtMTQuMiwgLTEyLjIsIC05LjUsIC0xMS41LCAtMTAuOCwgLTE3LjksIC0xMS45LCAtMTguMiwgLTEzLjksIC02LjQsIC0zLjcsIC02LjgsIC01LjQsIC0xMi44LCAtNS45LCAtMTMuNiwgLTcuNCwgLTEzLjcsIC05LjksIC0xMi45LCAtMTIuNywgLTE2LjIsIC0xMS42LCAtMTUuMiwgLTEyLjcsIC0zLjIsIDAuNSwgLTMuMywgLTEuOCwgLTE4LjksIC0xNi42LCAtMTguOCwgLTE5LjIsIC0xMi41LCAtOS40LCAtMTAuNiwgLTExLjEsIC0xNy4zLCAtMTQuMSwgLTE2LjIsIC0xNi4wLCAtNy45LCAtMy43LCAtNy44LCAtNi4zLCAtNTAuMCwgMy42LCAtNTAuMCwgMi4zLCAtOC42LCAtNC4yLCAtOC40LCAtNi42LCAtNTAuMCwgLTQuMywgLTguMSwgLTUuOCwgLTAuOSwgMTQuMiwgLTEuOCwgMTEuNixdLFxuICAgICAgICAgICAgWy0xMS44LCAtMTMuMSwgLTExLjUsIC0xMi4wLCAtNi4yLCAtOC4zLCAtNS40LCAtNy40LCAtMTEuOCwgLTEyLjMsIC0xMS4xLCAtMTEuNCwgMC41LCAtMi41LCAyLjQsIC0xLjYsIC02LjgsIC05LjksIC02LjQsIC04LjksIC02LjEsIC04LjYsIC01LjAsIC03LjgsIC0xMC40LCAtMTEuNiwgLTguNSwgLTkuOSwgOC4yLCA2LjQsIDguNywgNi45LCAtMTIuNCwgLTE3LjAsIC0xMi42LCAtMTUuOCwgLTYuNSwgLTguNSwgLTUuMCwgLTcuOCwgLTEzLjIsIC0xMy42LCAtMTAuMywgLTEzLjcsIC0wLjcsIC0zLjIsIC0wLjMsIC0yLjQsIC01MC4wLCAtOS40LCAtNTAuMCwgLTguNywgLTIuMSwgLTUuNiwgLTEuMiwgLTQuOSwgLTUwLjAsIC0xMC4wLCAtNC41LCAtOC45LCA5LjcsIC0xLjgsIDExLjMsIC0wLjksXSxcbiAgICAgICAgICAgIFstMTcuMiwgLTEzLjMsIC0xNy44LCAtMTEuNiwgLTExLjAsIC0xMS4xLCAtMTAuNCwgLTkuMCwgLTE2LjAsIC0xMi43LCAtMTYuMSwgLTExLjEsIC01LjIsIC01LjQsIC02LjAsIC0zLjMsIC0xMS44LCAtNy4zLCAtMTMuMywgLTUuOSwgLTEyLjcsIC0xMS45LCAtMTEuOSwgLTkuMywgLTE1LjIsIC0xNS4wLCAtMTQuOSwgLTExLjAsIC0yLjgsIC0xLjgsIC0yLjksIDAuNCwgLTE3LjQsIC0xOC40LCAtMTguMywgLTE1LjksIC0xMC43LCAtMTEuMiwgLTEwLjYsIC05LjAsIC0xNS40LCAtMTQuOCwgLTE1LjgsIC0xMy4zLCAtNi44LCAtNS45LCAtNy4yLCAtMy45LCAtNTAuMCwgMi4wLCAtNTAuMCwgMy45LCAtNy4wLCAtNi44LCAtNi44LCAtMy45LCAtNTAuMCwgLTUuNCwgLTcuMywgLTMuNCwgLTAuMywgMTEuNiwgLTAuOSwgMTQuMSxdXTtcbiAgICAgICAgdGhpcy5UUkFOUyA9IFtbNSwgMCwgMCwgNF0sXG4gICAgICAgICAgICBbMCwgNSwgNCwgMF0sXG4gICAgICAgICAgICBbMCwgNCwgNSwgMF0sXG4gICAgICAgICAgICBbNCwgMCwgMCwgNV1dO1xuICAgICAgICB0aGlzLkNPTkJMTyA9IHsgJ0EnOiAwLCAnUic6IDEsICdOJzogMiwgJ0QnOiAzLCAnQyc6IDQsICdRJzogNSwgJ0UnOiA2LCAnRyc6IDcsICdIJzogOCwgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LCAnVyc6IDE3LCAnWSc6IDE4LCAnVic6IDE5LCAnQic6IDIwLCAnWic6IDIxLCAnWCc6IDIyLCAnKic6IDIzIH07XG4gICAgICAgIHRoaXMuQ09OTlVDTCA9IHsgJ0EnOiAwLCAnVCc6IDEsICdDJzogMiwgJ0cnOiAzIH07XG4gICAgICAgIHRoaXMuQ09OU0NITiA9IHsgJ0FBQSc6IDAsICdBQUMnOiAxLCAnQUFHJzogMiwgJ0FBVCc6IDMsICdBQ0EnOiA0LCAnQUNDJzogNSwgJ0FDRyc6IDYsICdBQ1QnOiA3LCAnQUdBJzogOCwgJ0FHQyc6IDksICdBR0cnOiAxMCwgJ0FHVCc6IDExLCAnQVRBJzogMTIsICdBVEMnOiAxMywgJ0FURyc6IDE0LCAnQVRUJzogMTUsICdDQUEnOiAxNiwgJ0NBQyc6IDE3LCAnQ0FHJzogMTgsICdDQVQnOiAxOSwgJ0NDQSc6IDIwLCAnQ0NDJzogMjEsICdDQ0cnOiAyMiwgJ0NDVCc6IDIzLCAnQ0dBJzogMjQsICdDR0MnOiAyNSwgJ0NHRyc6IDI2LCAnQ0dUJzogMjcsICdDVEEnOiAyOCwgJ0NUQyc6IDI5LCAnQ1RHJzogMzAsICdDVFQnOiAzMSwgJ0dBQSc6IDMyLCAnR0FDJzogMzMsICdHQUcnOiAzNCwgJ0dBVCc6IDM1LCAnR0NBJzogMzYsICdHQ0MnOiAzNywgJ0dDRyc6IDM4LCAnR0NUJzogMzksICdHR0EnOiA0MCwgJ0dHQyc6IDQxLCAnR0dHJzogNDIsICdHR1QnOiA0MywgJ0dUQSc6IDQ0LCAnR1RDJzogNDUsICdHVEcnOiA0NiwgJ0dUVCc6IDQ3LCAnVEFBJzogNDgsICdUQUMnOiA0OSwgJ1RBRyc6IDUwLCAnVEFUJzogNTEsICdUQ0EnOiA1MiwgJ1RDQyc6IDUzLCAnVENHJzogNTQsICdUQ1QnOiA1NSwgJ1RHQSc6IDU2LCAnVEdDJzogNTcsICdUR0cnOiA1OCwgJ1RHVCc6IDU5LCAnVFRBJzogNjAsICdUVEMnOiA2MSwgJ1RURyc6IDYyLCAnVFRUJzogNjMgfTtcbiAgICAgICAgdGhpcy5zZXRNZXRob2QoYWxpZ25HcmlkXyk7XG4gICAgICAgIHRoaXMuc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXyk7XG4gICAgICAgIHRoaXMuc2V0R2FwKGdhcF8pO1xuICAgIH1cbiAgICBmaWxsTmVlZGxlbWFuKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4yOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SiA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbGxPbmUoaSwgaikge1xuICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdLCBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCwgdGhpcy5kcEdyaWRbaV1baiAtIDFdLnZhbHVlIC0gdGhpcy5nYXApKTtcbiAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3JpZEZyb21OYW1lKHBhdGgpIHtcbiAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU00NSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTQ1O1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU01MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTYyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNjI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU04MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTgwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNOTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU05MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTMwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU03MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTcwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMjUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMjUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTlVDTEVPVElERVMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5OVUNMRU9USURFUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUUkFOUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlRSQU5TO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NDSE5FSURFUic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlNDSE5FSURFUjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05TQ0hOO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdFJlc3VsdChpLCBqKSB7XG4gICAgICAgIGxldCByZXMxID0gXCJcIiwgcmVzMiA9IFwiXCIsIGdhcFMgPSBcIlwiO1xuICAgICAgICBsZXQgdG90YWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXA7IGkrKykge1xuICAgICAgICAgICAgZ2FwUyArPSAnfCc7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9PSBpKSB7XG4gICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9PSBqKSB7XG4gICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIGlmIChqIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ZW1wSSA9IGk7XG4gICAgICAgICAgICBpID0gdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50STtcbiAgICAgICAgICAgIGogPSB0aGlzLmRwR3JpZFt0ZW1wSV1bal0ucGFyZW50SjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFsaWduZWQocmVzMSwgcmVzMiwgdG90YWwpO1xuICAgIH1cbiAgICBmaWxsU2NvcmVzKCkge1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3Jlcy5wdXNoKFtdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjb3Jlc1tpXS5wdXNoKHRoaXMuYWxpZ25HcmlkW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXExLnN1YnN0cihpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV1bdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTIuc3Vic3RyKGogKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHlwZVJlYygpIHtcbiAgICAgICAgaWYgKC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBVEdDXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIk5VQ0xFT1RJREVTXCI7XG4gICAgICAgIGlmICgvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiQkxPU1VNNjJcIjtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJDYW4ndCByZWNvZ25pemUgc2VxdWVuY2UgdHlwZVwiKTtcbiAgICB9XG4gICAgbmVlZGxlbWFuV3VuY2goKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxOZWVkbGVtYW4oKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdCh0aGlzLmxlbjEsIHRoaXMubGVuMik7XG4gICAgfVxuICAgIHNtaXRoV2F0ZXJtYW4oKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYmVzdFZhbCA9IDA7XG4gICAgICAgIGxldCBiZXN0SSA9IDAsIGJlc3RKID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJXVt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKXS52YWx1ZSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID4gYmVzdFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0VmFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RJID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEogPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQoYmVzdEksIGJlc3RKKTtcbiAgICB9XG4gICAgc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMubGVuMSA9IHRoaXMuc2VxMS5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMubGVuMiA9IHRoaXMuc2VxMi5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBzZXRHYXAoZ2FwXykge1xuICAgICAgICB0aGlzLmdhcCA9IGdhcF87XG4gICAgfVxuICAgIHNldE1ldGhvZChhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICBpZiAoYWxpZ25HcmlkXyA9PSBcIkFVVE9cIikge1xuICAgICAgICAgICAgYWxpZ25HcmlkXyA9IHRoaXMudHlwZVJlYygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZEZyb21OYW1lKGFsaWduR3JpZF8pO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFjcm9Nb2wobW9ub21lcnMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IG1vZHVsZVJka2l0ID0geWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQ2hlbTpnZXRSZEtpdE1vZHVsZScpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9sID0gbW9kdWxlUmRraXQuZ2V0X21vbChtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gbW9sLmdldF92M0ttb2xibG9jaygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSBnZXRJbmRpY2VzKG1vbm9tZXJzW2ldW2pdLCBhKTtcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnaW5kaWNlcyddID0gaW5kaWNlcztcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddID0geWllbGQgcm90YXRlQmFja2JvbmVWMzAwMChhLCBpbmRpY2VzKTtcbiAgICAgICAgICAgICAgICBtb2wgPT09IG51bGwgfHwgbW9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2wuZGVsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChsaW5rVjMwMDAobW9ub21lcnNbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0SW5kaWNlcyhtb25vbWVyLCBtb2xWMzAwMCkge1xuICAgIGNvbnN0IG1vbGZpbGUgPSBtb25vbWVyW1wibW9sZmlsZVwiXTtcbiAgICBsZXQgaW5kZXhTdGFydCA9IG1vbGZpbGUuaW5kZXhPZignTSAgUkdQJywgMCkgKyA4O1xuICAgIGxldCBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgY29uc3QgaW5kaWNlc0RhdGEgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICBsZXQgcGFyc2VkRGF0YSA9IGluZGljZXNEYXRhLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgcmVtRmlyc3QgPSBwYXJzZWREYXRhWzJdID09ICcxJyA/IHBhcnNlSW50KHBhcnNlZERhdGFbMV0pIDogcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgY29uc3QgcmVtTGFzdCA9IHBhcnNlZERhdGFbMl0gPT0gJzInID8gcGFyc2VJbnQocGFyc2VkRGF0YVsxXSkgOiBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sVjMwMDApO1xuICAgIGxldCBpbmRleEJvbmRzID0gbW9sVjMwMDAuaW5kZXhPZignTSAgVjMwIEJFR0lOIEJPTkQnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGJvbmRzXG4gICAgaW5kZXhCb25kcyA9IG1vbFYzMDAwLmluZGV4T2YoJ1xcbicsIGluZGV4Qm9uZHMpO1xuICAgIGluZGV4U3RhcnQgPSBpbmRleEJvbmRzO1xuICAgIGluZGV4RW5kID0gaW5kZXhCb25kcztcbiAgICBsZXQgZmlyc3QgPSAwO1xuICAgIGxldCBsYXN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZEZpcnN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZExhc3QgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgIGlmIChmaXJzdCA9PSAwIHx8IGxhc3QgPT0gMCkge1xuICAgICAgICAgICAgaW5kZXhTdGFydCA9IG1vbFYzMDAwLmluZGV4T2YoJ1YzMCcsIGluZGV4U3RhcnQpICsgNDtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sVjMwMDAuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgICAgICAgICBjb25zdCBib25kRGF0YSA9IG1vbFYzMDAwLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICAgICAgICAgIHBhcnNlZERhdGEgPSBib25kRGF0YS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzJdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVsyXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmaXJzdCwgbGFzdCwgcmVtRmlyc3QsIHJlbUxhc3QsIHJlbUJvbmRGaXJzdCwgcmVtQm9uZExhc3QgfTtcbn1cbmZ1bmN0aW9uIHJvdGF0ZUJhY2tib25lVjMwMDAobW9sQmxvY2ssIGluZGljZXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKTtcbiAgICAgICAgY29uc3QgbmF0b20gPSBjb29yZGluYXRlcy5hdG9tSW5kZXgubGVuZ3RoO1xuICAgICAgICBjb25zdCBmaXJzdCA9IGluZGljZXNbJ2ZpcnN0J107XG4gICAgICAgIGNvbnN0IGxhc3QgPSBpbmRpY2VzWydsYXN0J107XG4gICAgICAgIGNvbnN0IHhDZW50ZXIgPSAoY29vcmRpbmF0ZXMueFtsYXN0XSArIGNvb3JkaW5hdGVzLnhbZmlyc3RdKSAvIDI7XG4gICAgICAgIGNvbnN0IHlDZW50ZXIgPSAoY29vcmRpbmF0ZXMueVtsYXN0XSArIGNvb3JkaW5hdGVzLnlbZmlyc3RdKSAvIDI7XG4gICAgICAgIC8vcGxhY2UgdG8gY2VudGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4Q2VudGVyO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSAtPSB5Q2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhbmdsZSA9IDA7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy54W2ZpcnN0XSA9PSAwKVxuICAgICAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy55W2ZpcnN0XSA+IGNvb3JkaW5hdGVzLnlbbGFzdF0gPyBNYXRoLlBJIC8gMiA6IDMgKiBNYXRoLlBJIC8gMjtcbiAgICAgICAgZWxzZSBpZiAoY29vcmRpbmF0ZXMueVtmaXJzdF0gPT0gMClcbiAgICAgICAgICAgIGFuZ2xlID0gY29vcmRpbmF0ZXMueFtmaXJzdF0gPiBjb29yZGluYXRlcy54W2xhc3RdID8gTWF0aC5QSSA6IDA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVyaXZhdGl2ZSA9IGNvb3JkaW5hdGVzLnlbZmlyc3RdIC8gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXMueFtmaXJzdF0gPCBjb29yZGluYXRlcy54W2xhc3RdKVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpIDogTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgY29uc3Qgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhBZGQgPSBjb29yZGluYXRlcy54W2ldO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSA9IHhBZGQgKiBjb3MgLSBjb29yZGluYXRlcy55W2ldICogc2luO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSA9IHhBZGQgKiBzaW4gKyBjb29yZGluYXRlcy55W2ldICogY29zO1xuICAgICAgICB9XG4gICAgICAgIC8vcGxhY2UgdG8gcmlnaHRcbiAgICAgICAgY29uc3QgeFNoaWZ0ID0gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKylcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geFNoaWZ0O1xuICAgICAgICAvL3Jld3JpdGUgbW9sQmxvY2tcbiAgICAgICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleEVuZCk7XG4gICAgICAgICAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnNsaWNlKDAsIGluZGV4KSArXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSArICcgJyArIGNvb3JkaW5hdGVzLnlbaV0gK1xuICAgICAgICAgICAgICAgIG1vbEJsb2NrLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9sQmxvY2s7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xCbG9jaykge1xuICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jayk7XG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgbGV0IGluZGV4RW5kID0gaW5kZXg7XG4gICAgY29uc3QgaW5kZXhlcyA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHR5cGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeCA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHkgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlcnMubmF0b207IGkrKykge1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgaW5kZXhlc1tpXSA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgdHlwZXNbaV0gPSBtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgeFtpXSA9IHBhcnNlRmxvYXQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB5W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYXRvbUluZGV4OiBpbmRleGVzLCBhdG9tVHlwZTogdHlwZXMsIHg6IHgsIHk6IHkgfTtcbn1cbmZ1bmN0aW9uIGxpbmtWMzAwMChtb25vbWVycykge1xuICAgIGxldCBtYWNyb01vbEJsb2NrID0gJ1xcbkRhdGFncm9rIG1hY3JvbW9sZWN1bGUgaGFuZGxlclxcblxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnICAwICAwICAwICAwICAwICAwICAgICAgICAgICAgOTk5IFYzMDAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ1RBQlxcbic7XG4gICAgbGV0IGF0b21CbG9jayA9ICcnO1xuICAgIGxldCBib25kQmxvY2sgPSAnJztcbiAgICBsZXQgY29sbGVjdGlvbkJsb2NrID0gJyc7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xuICAgIGxldCBuYXRvbSA9IDA7XG4gICAgbGV0IG5ib25kID0gMDtcbiAgICBsZXQgeFNoaWZ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtb2xmaWxlID0gbW9ub21lcnNbaV1bJ21vbGZpbGUnXTtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydmaXJzdCddO1xuICAgICAgICBjb25zdCBsYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsnbGFzdCddO1xuICAgICAgICBjb25zdCByZW1GaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUZpcnN0J107XG4gICAgICAgIGNvbnN0IHJlbUxhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1MYXN0J107XG4gICAgICAgIGNvbnN0IHJlbUJvbmRGaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRGaXJzdCddO1xuICAgICAgICBjb25zdCByZW1Cb25kTGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRMYXN0J107XG4gICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnJlcGxhY2VBbGwoJygtXFxuTSAgVjMwICcsICcoJylcbiAgICAgICAgICAgIC5yZXBsYWNlQWxsKCctXFxuTSAgVjMwICcsICcnKS5yZXBsYWNlQWxsKCcgKScsICcpJyk7XG4gICAgICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgbGV0IGluZGV4QXRvbXMgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgICAgICBpbmRleEF0b21zID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleEF0b21zKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhBdG9tcztcbiAgICAgICAgbGV0IGluZGV4RW5kID0gaW5kZXhBdG9tcztcbiAgICAgICAgY29uc3QgdG90YWxTaGlmdCA9IHhTaGlmdCAtIGNvb3JkaW5hdGVzLnhbZmlyc3QgLSAxXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5hdG9tOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gcmVtRmlyc3QgJiYgY29vcmRpbmF0ZXMuYXRvbUluZGV4W2pdICE9IHJlbUxhc3QpIHsgLy98fCBpID09IDApIHtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgYXRvbSBudW1iZXJcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIHRvdGFsU2hpZnQpKSAvIDEwMDAwO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCcsIGluZGV4KSAtIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhBdG9tc0VuZCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEVORCBBVE9NJyk7XG4gICAgICAgIGF0b21CbG9jayArPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleEF0b21zICsgMSwgaW5kZXhBdG9tc0VuZCk7XG4gICAgICAgIGxldCBpbmRleEJvbmRzID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICAgICAgaW5kZXhCb25kcyA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhCb25kcyk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhCb25kcztcbiAgICAgICAgaW5kZXhFbmQgPSBpbmRleEJvbmRzO1xuICAgICAgICBsZXQgYm9uZE51bWJlciA9IDA7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgICAgICAvL3Jld3JpdGUgYm9uZCBudW1iZXJcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBib25kTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBpZiAoYm9uZE51bWJlciA9PSByZW1Cb25kRmlyc3QgfHwgYm9uZE51bWJlciA9PSByZW1Cb25kTGFzdCkge1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4IC09IDc7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib25kTnVtYmVyID0gKGJvbmROdW1iZXIgPiByZW1Cb25kRmlyc3QgJiYgYm9uZE51bWJlciA+IHJlbUJvbmRMYXN0KSA/IGJvbmROdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYm9uZE51bWJlciA+IHJlbUJvbmRGaXJzdCB8fCBib25kTnVtYmVyID4gcmVtQm9uZExhc3QpID8gYm9uZE51bWJlciAtIDEgOiBib25kTnVtYmVyO1xuICAgICAgICAgICAgYm9uZE51bWJlciArPSBuYm9uZDtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGJvbmROdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIHBhaXIgaW4gYm9uZFxuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChhdG9tTnVtYmVyID4gcmVtRmlyc3QgfHwgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDEgOiBhdG9tTnVtYmVyO1xuICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gTWF0aC5taW4obW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCksIG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhCb25kRW5kID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgRU5EIEJPTkQnKTtcbiAgICAgICAgYm9uZEJsb2NrICs9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4Qm9uZHMgKyAxLCBpbmRleEJvbmRFbmQpO1xuICAgICAgICAvL2xldCBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGNvbGxlY3Rpb25zXG4gICAgICAgIC8vIHdoaWxlIChpbmRleENvbGxlY3Rpb24gIT0gLTEpIHtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gKz0gMjg7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVuZCA9IG1vbGZpbGUuaW5kZXhPZignKScsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVudHJpZXMgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleENvbGxlY3Rpb24sIGNvbGxlY3Rpb25FbmQpLnNwbGl0KCcgJykuc2xpY2UoMSk7XG4gICAgICAgIC8vICAgY29sbGVjdGlvbkVudHJpZXMuZm9yRWFjaCgoZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vICAgICBjb2xsZWN0aW9uLnB1c2gocGFyc2VJbnQoZSkgKyBuYXRvbSk7XG4gICAgICAgIC8vICAgfSk7XG4gICAgICAgIC8vICAgaW5kZXhDb2xsZWN0aW9uID0gY29sbGVjdGlvbkVuZDtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnLCBpbmRleENvbGxlY3Rpb24pO1xuICAgICAgICAvLyB9XG4gICAgICAgIG5hdG9tICs9IG51bWJlcnMubmF0b20gLSAyO1xuICAgICAgICBuYm9uZCArPSBudW1iZXJzLm5ib25kIC0gMjtcbiAgICAgICAgeFNoaWZ0ICs9IGNvb3JkaW5hdGVzLnhbbGFzdF0gLSBjb29yZGluYXRlcy54W2ZpcnN0XSArIDE7XG4gICAgICAgIGlmIChpID09IG1vbm9tZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5hdG9tKys7XG4gICAgICAgICAgICBjb25zdCBzaGlmdCA9IHhTaGlmdCArIDAuMjtcbiAgICAgICAgICAgIGF0b21CbG9jayArPSAnTSAgVjMwICcgKyBuYXRvbSArICcgTyAnICsgc2hpZnQgKyAnIDAgMC4wMDAwMDAgMFxcbic7XG4gICAgICAgIH1cbiAgICAgICAgbmJvbmQrKztcbiAgICAgICAgaWYgKGkgPT0gbW9ub21lcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRUZXJtaW5hbCA9IChsYXN0ID4gcmVtRmlyc3QgJiYgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDMgOlxuICAgICAgICAgICAgICAgIChsYXN0ID4gcmVtRmlyc3QgfHwgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDIgOlxuICAgICAgICAgICAgICAgICAgICBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMTtcbiAgICAgICAgICAgIGJvbmRCbG9jayArPSAnTSAgVjMwICcgKyBuYm9uZCArICcgMSAnICsgcmlnaHRUZXJtaW5hbCArICcgJyArIG5hdG9tICsgJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByaWdodFRlcm1pbmFsID0gKGxhc3QgPiByZW1GaXJzdCAmJiBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMiA6XG4gICAgICAgICAgICAgICAgKGxhc3QgPiByZW1GaXJzdCB8fCBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMSA6XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMik7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gbW9ub21lcnNbaSArIDFdWydpbmRpY2VzJ107XG4gICAgICAgICAgICBjb25zdCBuZXh0Rmlyc3QgPSBuZXh0WydmaXJzdCddO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlbUZpcnN0ID0gbmV4dFsncmVtRmlyc3QnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZW1MYXN0ID0gbmV4dFsncmVtTGFzdCddO1xuICAgICAgICAgICAgY29uc3QgbGVmdFRlcm1pbmFsID0gKG5leHRGaXJzdCA+IG5leHRSZW1GaXJzdCAmJiBuZXh0Rmlyc3QgPiBuZXh0UmVtTGFzdCkgPyBuZXh0Rmlyc3QgKyBuYXRvbSAtIDIgOlxuICAgICAgICAgICAgICAgIChuZXh0Rmlyc3QgPiBuZXh0UmVtRmlyc3QgfHwgbmV4dEZpcnN0ID4gbmV4dFJlbUxhc3QpID8gbmV4dEZpcnN0ICsgbmF0b20gLSAxIDpcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZpcnN0ICsgbmF0b207XG4gICAgICAgICAgICBib25kQmxvY2sgKz0gJ00gIFYzMCAnICsgbmJvbmQgKyAnIDEgJyArIHJpZ2h0VGVybWluYWwgKyAnICcgKyBsZWZ0VGVybWluYWwgKyAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBjb25zdCBlbnRyaWVzID0gNDtcbiAgICAvLyBjb25zdCBjb2xsTnVtYmVyID0gTWF0aC5jZWlsKGNvbGxlY3Rpb24ubGVuZ3RoIC8gZW50cmllcyk7XG4gICAgLy8gY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJyArIGNvbGxlY3Rpb24ubGVuZ3RoICsgJyAtXFxuJztcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNvbGxOdW1iZXI7IGkrKykge1xuICAgIC8vICAgY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgJztcbiAgICAvLyAgIGNvbnN0IGVudHJpZXNDdXJyZW50ID0gaSArIDEgPT0gY29sbE51bWJlciA/IGNvbGxlY3Rpb24ubGVuZ3RoIC0gKGNvbGxOdW1iZXIgLSAxKSplbnRyaWVzIDogZW50cmllcztcbiAgICAvLyAgIGZvciAobGV0IGogPSAwOyBqIDwgZW50cmllc0N1cnJlbnQ7IGorKykge1xuICAgIC8vICAgICBjb2xsZWN0aW9uQmxvY2sgKz0gKGogKyAxID09IGVudHJpZXNDdXJyZW50KSA/XG4gICAgLy8gICAgICAgKGkgPT0gY29sbE51bWJlciAtIDEgPyBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJylcXG4nIDogY29sbGVjdGlvbltlbnRyaWVzKmkgKyBqXSArICcgLVxcbicpIDpcbiAgICAvLyAgICAgICBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJyAnO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvL2dlbmVyYXRlIGZpbGVcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQ09VTlRTICcgKyBuYXRvbSArICcgJyArIG5ib25kICsgJyAwIDAgMFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEFUT01cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYXRvbUJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEJPTkRcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYm9uZEJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQk9ORFxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ09MTEVDVElPTlxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9IGNvbGxlY3Rpb25CbG9jaztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQ09MTEVDVElPTlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDVEFCXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBFTkRcXG4nO1xuICAgIHJldHVybiBtYWNyb01vbEJsb2NrO1xufVxuZnVuY3Rpb24gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2spIHtcbiAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnJlcGxhY2VBbGwoJ1xccicsICcnKTsgLy9lcXVhbGl6ZSBvbGQgYW5kIG5ldyBzZGYgc3RhbmRhcmRzXG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignQ09VTlRTJykgKyA3OyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgYW5kIGJvbmRzIG51bWJlclxuICAgIGxldCBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYXRvbXNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgIGNvbnN0IGJvbmRzTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgIHJldHVybiB7IG5hdG9tOiBhdG9tc051bWJlciwgbmJvbmQ6IGJvbmRzTnVtYmVyIH07XG59XG4iLCJpbXBvcnQgKiBhcyBDIGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuY29uc3QgbHJ1ID0gbmV3IERHLkxydUNhY2hlKCk7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmNvbnN0IGdyYXlDb2xvciA9ICcjODA4MDgwJztcbmZ1bmN0aW9uIGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpIHtcbiAgICBzd2l0Y2ggKHBhbGV0dGVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ1BUJzpcbiAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgY2FzZSAnTlQnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICBjYXNlICdETkEnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICBjYXNlICdSTkEnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAvLyBvdGhlclxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1NlcXVlbmNlKHN1YlBhcnRzKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZCA9ICFzdWJQYXJ0cy5zb21lKChhbWlubywgaW5kZXgpID0+IGFtaW5vLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaW5kZXggIT0gMCAmJlxuICAgICAgICBpbmRleCAhPSBzdWJQYXJ0cy5sZW5ndGggLSAxKTtcbiAgICBjb25zdCB0ZXh0ID0gW107XG4gICAgY29uc3QgZ2FwID0gc2ltcGxpZmllZCA/ICcnIDogJyAnO1xuICAgIHN1YlBhcnRzLmZvckVhY2goKGFtaW5vLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPCBzdWJQYXJ0cy5sZW5ndGgpXG4gICAgICAgICAgICBhbWlubyArPSBgJHthbWlubyA/ICcnIDogJy0nfSR7Z2FwfWA7XG4gICAgICAgIHRleHQucHVzaChhbWlubyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt0ZXh0LCBzaW1wbGlmaWVkXTtcbn1cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHByaW50cyBhIHN0cmluZyBhbGlnbmVkIHRvIGxlZnQgb3IgY2VudGVyZWQuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHkgeSBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHcgV2lkdGguXG4gKiBAcGFyYW0ge251bWJlcn0gaCBIZWlnaHQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gZyBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcyBTdHJpbmcgdG8gcHJpbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbG9yPXVuZGVmaW5lZENvbG9yXSBTdHJpbmcgY29sb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gW3Bpdm90PTBdIFBpcnZvdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xlZnQ9ZmFsc2VdIElzIGxlZnQgYWxpZ25lZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbdHJhbnNwYXJlbmN5UmF0ZT0wLjBdIFRyYW5zcGFyZW5jeSByYXRlIHdoZXJlIDEuMCBpcyBmdWxseSB0cmFuc3BhcmVudFxuICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9JyddIElzIHNlcGFyYXRvciBmb3Igc2VxdWVuY2UuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsYXN0PWZhbHNlXSBJcyBjaGVja2VyIGlmIGVsZW1lbnQgbGFzdCBvciBub3QuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHggY29vcmRpbmF0ZSB0byBzdGFydCBwcmludGluZyBhdC5cbiAqL1xuZnVuY3Rpb24gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IHVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgdHJhbnNwYXJlbmN5UmF0ZSA9IDEuMCwgc2VwYXJhdG9yID0gJycsIGxhc3QgPSBmYWxzZSkge1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBjb25zdCBjb2xvclBhcnQgPSBzLnN1YnN0cmluZygwKTtcbiAgICBsZXQgZ3JheVBhcnQgPSBzZXBhcmF0b3I7XG4gICAgaWYgKGxhc3QpXG4gICAgICAgIGdyYXlQYXJ0ID0gJyc7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCArIGdyYXlQYXJ0KTtcbiAgICBjb25zdCBpbmRlbnQgPSA1O1xuICAgIGNvbnN0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCk7XG4gICAgY29uc3QgZHkgPSAodGV4dFNpemUuZm9udEJvdW5kaW5nQm94QXNjZW50ICsgdGV4dFNpemUuZm9udEJvdW5kaW5nQm94RGVzY2VudCkgLyAyO1xuICAgIGZ1bmN0aW9uIGRyYXcoZHgxLCBkeDIpIHtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgZy5nbG9iYWxBbHBoYSA9IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgICAgIGcuZmlsbFRleHQoY29sb3JQYXJ0LCB4ICsgZHgxLCB5ICsgZHkpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgICAgZy5maWxsVGV4dChncmF5UGFydCwgeCArIGR4MiwgeSArIGR5KTtcbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUud2lkdGggPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBjb2xvclRleHRTaXplLndpZHRoICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUud2lkdGgpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIGNvbG9yVGV4dFNpemUud2lkdGg7XG4gICAgfVxufVxuZnVuY3Rpb24gZmluZE1vbm9tZXJzKGhlbG1TdHJpbmcpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBjb25zdCB0eXBlcyA9IE9iamVjdC5rZXlzKG9yZy5oZWxtLndlYmVkaXRvci5tb25vbWVyVHlwZUxpc3QoKSk7XG4gICAgY29uc3QgbW9ub21lcnMgPSBbXTtcbiAgICBjb25zdCBtb25vbWVyX25hbWVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgbW9ub21lcnMucHVzaChuZXcgc2NpbC5oZWxtLk1vbm9tZXJzLmdldE1vbm9tZXJTZXQodHlwZXNbaV0pKTtcbiAgICAgICAgT2JqZWN0LmtleXMobW9ub21lcnNbaV0pLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICBtb25vbWVyX25hbWVzLnB1c2gobW9ub21lcnNbaV1ba10uaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc3BsaXRfc3RyaW5nID0gV2ViTG9nby5zcGxpdHRlckFzSGVsbShoZWxtU3RyaW5nKTtcbiAgICByZXR1cm4gbmV3IFNldChzcGxpdF9zdHJpbmcuZmlsdGVyKHZhbCA9PiAhbW9ub21lcl9uYW1lcy5pbmNsdWRlcyh2YWwpKSk7XG59XG5leHBvcnQgY2xhc3MgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnbWFjcm9tb2xlY3VsZVNlcXVlbmNlJzsgfVxuICAgIGdldCBjZWxsVHlwZSgpIHsgcmV0dXJuIEMuU0VNX1RZUEVTLk1hY3JvX01vbGVjdWxlOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAzMDsgfVxuICAgIGdldCBkZWZhdWx0V2lkdGgoKSB7IHJldHVybiAyMzA7IH1cbiAgICAvKipcbiAgICAgKiBDZWxsIHJlbmRlcmVyIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3IHdpZHRoIG9mIHRoZSBjZWxsLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoIGhlaWdodCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge0RHLkdyaWRDZWxsfSBncmlkQ2VsbCBHcmlkIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbFN0eWxlfSBjZWxsU3R5bGUgQ2VsbCBzdHlsZS5cbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4gICAgICovXG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkUm93ICE9PSAtMSA/IGdyaWRDZWxsLmdyaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBncmlkQ2VsbC5jZWxsO1xuICAgICAgICBjb25zdCB0YWcgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGlmICh0YWcgPT09ICdIRUxNJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZmluZE1vbm9tZXJzKGNlbGwudmFsdWUpKTtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzLnNpemUgPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGFmb3JtYXQnLCAnaGVsbScpO1xuICAgICAgICAgICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhJywgZ3JpZENlbGwuY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgY29uc3QgY2FudmFzID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgc2tpbjogJ3c4Jywgdmlld29ubHk6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybXVsYSA9IGNhbnZhcy5nZXRGb3JtdWxhKHRydWUpO1xuICAgICAgICAgICAgICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gdWkuZGl2VGV4dChncmlkQ2VsbC5jZWxsLnZhbHVlLCB7IHN0eWxlOiB7IGNvbG9yOiAncmVkJyB9IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9ub21lcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICB3ID0gZ3JpZCA/IE1hdGgubWluKGdyaWQuY2FudmFzLndpZHRoIC0geCwgdykgOiBnLmNhbnZhcy53aWR0aCAtIHg7XG4gICAgICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgICAgICBnLnJlY3QoeCwgeSwgdywgaCk7XG4gICAgICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICAgICAgZy5mb250ID0gJzEycHggbW9ub3NwYWNlJztcbiAgICAgICAgICAgICAgICBnLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IChfYSA9IGNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIGxldCBzdWJQYXJ0cyA9IFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG0ocyk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yID0gdW5kZWZpbmVkQ29sb3I7XG4gICAgICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb25vbWVycy5oYXMoYW1pbm8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICdyZWQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBncmF5Q29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBzdWJQYXJ0cy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYW1pbm8sIGNvbG9yLCAwLCB0cnVlLCAxLjAsICcvJywgbGFzdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZy5yZXN0b3JlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3R5cGUsIHN1YnR5cGUsIHBhbGV0dGVUeXBlXSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgICAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHMgPSAoX2IgPSBjZWxsLnZhbHVlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgIC8vVE9ETzogY2FuIHRoaXMgYmUgcmVwbGFjZWQvbWVyZ2VkIHdpdGggc3BsaXRTZXF1ZW5jZT9cbiAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgY29uc3QgcGFsZXR0ZSA9IGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gKF9jID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJyc7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKTtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnRzID0gc3BsaXR0ZXJGdW5jKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coc3ViUGFydHMpO1xuICAgICAgICAgICAgbGV0IHgxID0geDtcbiAgICAgICAgICAgIGxldCBjb2xvciA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29sb3IgPSBwYWxldHRlLmdldChhbWlubyk7XG4gICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gc3ViUGFydHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIDAsIHRydWUsIDEuMCwgc2VwYXJhdG9yLCBsYXN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZy5yZXN0b3JlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgdmFyIENPTFVNTlNfTkFNRVM7XG4oZnVuY3Rpb24gKENPTFVNTlNfTkFNRVMpIHtcbiAgICBDT0xVTU5TX05BTUVTW1wiU1BMSVRfQ09MXCJdID0gXCJ+c3BsaXRcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUNUSVZJVFlcIl0gPSBcIn5hY3Rpdml0eVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBQ1RJVklUWV9TQ0FMRURcIl0gPSBcImFjdGl2aXR5X3NjYWxlZFwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBTElHTkVEX1NFUVVFTkNFXCJdID0gXCJ+YWxpZ25lZF9zZXF1ZW5jZVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBTUlOT19BQ0lEX1JFU0lEVUVcIl0gPSBcIkFBUlwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJQT1NJVElPTlwiXSA9IFwiUG9zXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIlBfVkFMVUVcIl0gPSBcInBWYWx1ZVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJNRUFOX0RJRkZFUkVOQ0VcIl0gPSBcIk1lYW4gZGlmZmVyZW5jZVwiO1xufSkoQ09MVU1OU19OQU1FUyB8fCAoQ09MVU1OU19OQU1FUyA9IHt9KSk7XG5leHBvcnQgdmFyIENBVEVHT1JJRVM7XG4oZnVuY3Rpb24gKENBVEVHT1JJRVMpIHtcbiAgICBDQVRFR09SSUVTW1wiT1RIRVJcIl0gPSBcIk90aGVyXCI7XG4gICAgQ0FURUdPUklFU1tcIkFMTFwiXSA9IFwiQWxsXCI7XG59KShDQVRFR09SSUVTIHx8IChDQVRFR09SSUVTID0ge30pKTtcbmV4cG9ydCB2YXIgVEFHUztcbihmdW5jdGlvbiAoVEFHUykge1xuICAgIFRBR1NbXCJBQVJcIl0gPSBcIkFBUlwiO1xuICAgIFRBR1NbXCJQT1NJVElPTlwiXSA9IFwiUG9zXCI7XG4gICAgVEFHU1tcIlNFUEFSQVRPUlwiXSA9IFwibW9ub21lci1zZXBhcmF0b3JcIjtcbiAgICBUQUdTW1wiU0VMRUNUSU9OXCJdID0gXCJzZWxlY3Rpb25cIjtcbn0pKFRBR1MgfHwgKFRBR1MgPSB7fSkpO1xuZXhwb3J0IHZhciBTRU1fVFlQRVM7XG4oZnVuY3Rpb24gKFNFTV9UWVBFUykge1xuICAgIFNFTV9UWVBFU1tcIkFNSU5PX0FDSURTXCJdID0gXCJhbWlub0FjaWRzXCI7XG4gICAgU0VNX1RZUEVTW1wiQUxJR05FRF9TRVFVRU5DRVwiXSA9IFwiYWxpZ25lZFNlcXVlbmNlXCI7XG4gICAgU0VNX1RZUEVTW1wiQUxJR05FRF9TRVFVRU5DRV9ESUZGRVJFTkNFXCJdID0gXCJhbGlnbmVkU2VxdWVuY2VEaWZmZXJlbmNlXCI7XG4gICAgU0VNX1RZUEVTW1wiQUNUSVZJVFlcIl0gPSBcImFjdGl2aXR5XCI7XG4gICAgU0VNX1RZUEVTW1wiQUNUSVZJVFlfU0NBTEVEXCJdID0gXCJhY3Rpdml0eVNjYWxlZFwiO1xuICAgIFNFTV9UWVBFU1tcIk1hY3JvX01vbGVjdWxlXCJdID0gXCJNYWNyb21vbGVjdWxlXCI7XG59KShTRU1fVFlQRVMgfHwgKFNFTV9UWVBFUyA9IHt9KSk7XG5leHBvcnQgY29uc3QgU1RBVFMgPSAnc3RhdHMnO1xuZXhwb3J0IGNvbnN0IEVNQkVERElOR19TVEFUVVMgPSAnZW1iZWRkaW5nU3RhdHVzJztcbmV4cG9ydCBjb25zdCBQRVBUSURFU19BTkFMWVNJUyA9ICdpc1BlcHRpZGVzQW5hbHlzaXMnO1xuZXhwb3J0IHZhciBGTEFHUztcbihmdW5jdGlvbiAoRkxBR1MpIHtcbiAgICBGTEFHU1tcIkNFTExfQ0hBTkdJTkdcIl0gPSBcImlzQ2VsbENoYW5naW5nXCI7XG59KShGTEFHUyB8fCAoRkxBR1MgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IGFhckdyb3VwcyA9IHtcbiAgICAnUic6ICdQQycsICdIJzogJ1BDJywgJ0snOiAnUEMnLFxuICAgICdEJzogJ05DJywgJ0UnOiAnTkMnLFxuICAgICdTJzogJ1UnLCAnVCc6ICdVJywgJ04nOiAnVScsICdRJzogJ1UnLFxuICAgICdDJzogJ1NDJywgJ1UnOiAnU0MnLCAnRyc6ICdTQycsICdQJzogJ1NDJyxcbiAgICAnQSc6ICdIJywgJ1YnOiAnSCcsICdJJzogJ0gnLCAnTCc6ICdIJywgJ00nOiAnSCcsICdGJzogJ0gnLCAnWSc6ICdIJywgJ1cnOiAnSCcsXG4gICAgJy0nOiAnLScsXG59O1xuZXhwb3J0IGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSB7XG4gICAgJ1BDJzogeyAnZGVzY3JpcHRpb24nOiAnUG9zaXRpdmUgQW1pbm8gQWNpZHMsIHdpdGggRWxlY3RyaWNhbGx5IENoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnUicsICdIJywgJ0snXSB9LFxuICAgICdOQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ05lZ2F0aXZlIEFtaW5vIEFjaWRzLCB3aXRoIEVsZWN0cmljYWxseSBDaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ0QnLCAnRSddIH0sXG4gICAgJ1UnOiB7ICdkZXNjcmlwdGlvbic6ICdBbWlubyBBY2lkcyB3aXRoIFBvbGFyIFVuY2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydTJywgJ1QnLCAnTicsICdRJ10gfSxcbiAgICAnU0MnOiB7ICdkZXNjcmlwdGlvbic6ICdTcGVjaWFsIENhc2VzJywgJ2FtaW5vQWNpZHMnOiBbJ0MnLCAnVScsICdHJywgJ1AnXSB9LFxuICAgICdIJzoge1xuICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW1pbm8gQWNpZHMgd2l0aCBIeWRyb3Bob2JpYyBTaWRlIENoYWluJyxcbiAgICAgICAgJ2FtaW5vQWNpZHMnOiBbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLFxuICAgIH0sXG4gICAgJy0nOiB7ICdkZXNjcmlwdGlvbic6ICdVbmtub3duIEFtaW5vIEFjaWQnLCAnYW1pbm9BY2lkcyc6IFsnLSddIH0sXG59O1xuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xubGV0IGNvbnZlcnREaWFsb2cgPSBudWxsO1xubGV0IGNvbnZlcnREaWFsb2dTdWJzID0gW107XG4vKipcbiAqIENvbnZlcnRzIG5vdGF0aW9ucyBvZiBhIE1hY3JvbW9sZWN1bGUgY29sdW1uXG4gKlxuICogQHBhcmFtIHtERy5jb2x1bW59IGNvbCBDb2x1bW4gd2l0aCAnTWFjcm9tb2xlY3VsZScgc2VtYW50aWMgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydChjb2wpIHtcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCBjdXJyZW50ID0gY29udmVydGVyLnNvdXJjZU5vdGF0aW9uO1xuICAgIC8vVE9ETzogcmVhZCBhbGwgbm90YXRpb25zXG4gICAgY29uc3Qgbm90YXRpb25zID0gW1xuICAgICAgICBcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sXG4gICAgICAgIFwiU0VQQVJBVE9SXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLFxuICAgICAgICBcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovXG4gICAgXTtcbiAgICBjb25zdCBzZXBhcmF0b3JBcnJheSA9IFsnLScsICcuJywgJy8nXTtcbiAgICBjb25zdCBmaWx0ZXJlZE5vdGF0aW9ucyA9IG5vdGF0aW9ucy5maWx0ZXIoKGUpID0+IGUgIT09IGN1cnJlbnQpO1xuICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uSW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnQ29udmVydCB0bycsIGZpbHRlcmVkTm90YXRpb25zWzBdLCBmaWx0ZXJlZE5vdGF0aW9ucyk7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnQ2hvb3NlIHNlcGFyYXRvcicsIHNlcGFyYXRvckFycmF5WzBdLCBzZXBhcmF0b3JBcnJheSk7XG4gICAgaWYgKGNvbnZlcnREaWFsb2cgPT0gbnVsbCkge1xuICAgICAgICBjb252ZXJ0RGlhbG9nID0gdWkuZGlhbG9nKCdDb252ZXJ0IHNlcXVlbmNlIG5vdGF0aW9uJylcbiAgICAgICAgICAgIC5hZGQodWkuZGl2KFtcbiAgICAgICAgICAgIHVpLmgxKCdDdXJyZW50IG5vdGF0aW9uOiAnICsgY3VycmVudCksXG4gICAgICAgICAgICB0YXJnZXROb3RhdGlvbklucHV0LnJvb3QsXG4gICAgICAgICAgICAvLyBUT0RPOiBjb25kaXRpb25hbCBzZXBhcmF0b3IgaW5wdXRcbiAgICAgICAgICAgIHNlcGFyYXRvcklucHV0LnJvb3RcbiAgICAgICAgXSkpXG4gICAgICAgICAgICAub25PSygoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXROb3RhdGlvbiA9IHRhcmdldE5vdGF0aW9uSW5wdXQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBzZXBhcmF0b3JJbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIHlpZWxkIGNvbnZlcnREbyhjb2wsIHRhcmdldE5vdGF0aW9uLCBzZXBhcmF0b3IpO1xuICAgICAgICB9KSlcbiAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgIGNvbnZlcnREaWFsb2dTdWJzLnB1c2goY29udmVydERpYWxvZy5vbkNsb3NlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGNvbnZlcnREaWFsb2dTdWJzLmZvckVhY2goKHMpID0+IHsgcy51bnN1YnNjcmliZSgpOyB9KTtcbiAgICAgICAgICAgIGNvbnZlcnREaWFsb2dTdWJzID0gW107XG4gICAgICAgICAgICBjb252ZXJ0RGlhbG9nID0gbnVsbDtcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RG8oc3JjQ29sLCB0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgY29udmVydGVyID0gbmV3IE5vdGF0aW9uQ29udmVydGVyKHNyY0NvbCk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IGNvbnZlcnRlci5jb252ZXJ0KHRhcmdldE5vdGF0aW9uLCBzZXBhcmF0b3IpO1xuICAgICAgICBzcmNDb2wuZGF0YUZyYW1lLmNvbHVtbnMuYWRkKG5ld0NvbHVtbik7XG4gICAgICAgIHlpZWxkIGdyb2suZGF0YS5kZXRlY3RTZW1hbnRpY1R5cGVzKHNyY0NvbC5kYXRhRnJhbWUpO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuLy9AdHMtaWdub3JlXG5pbXBvcnQgQWlvbGkgZnJvbSAnQGJpb3dhc20vYWlvbGknO1xuaW1wb3J0IHsgQWxpZ25lZFNlcXVlbmNlRW5jb2RlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXF1ZW5jZS1lbmNvZGVyJztcbi8qKlxuICogQ29udmVydHMgYXJyYXkgb2Ygc2VxdWVuY2VzIGludG8gc2ltcGxlIGZhc3RhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBzZXF1ZW5jZXMgSW5wdXQgbGlzdCBvZiBzZXF1ZW5jZXMuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIF9zdHJpbmdzVG9GYXN0YShzZXF1ZW5jZXMpIHtcbiAgICByZXR1cm4gc2VxdWVuY2VzLnJlZHVjZSgoYSwgdiwgaSkgPT4gYSArIGA+c2FtcGxlJHtpICsgMX1cXG4ke3Z9XFxuYCwgJycpO1xufVxuLyoqXG4gKiBFeHRyYWN0cyBhcnJheSBvZiBzZXF1ZW5jZXMgZnJvbSBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmYXN0YSBGYXN0YS1mb3JtYXR0ZWQgc3RyaW5nLlxuICogQHJldHVybiB7c3RyaW5nW119IE91dHB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqL1xuZnVuY3Rpb24gX2Zhc3RhVG9TdHJpbmdzKGZhc3RhKSB7XG4gICAgcmV0dXJuIGZhc3RhLnJlcGxhY2UoLz5zYW1wbGVcXGQrKFxcclxcbnxcXHJ8XFxuKS9nLCAnJykuc3BsaXQoJ1xcbicpO1xufVxuLyoqXG4gKiBSdW5zIEFpb2xpIGVudmlyb25tZW50IHdpdGgga2FsaWduIHRvb2wuXG4gKlxuICogQHBhcmFtIHtERy5Db2x1bW59IHNyY0NvbCBDb2x1bW4gd2l0aCBzZXF1ZW5jZXMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWxpZ25lZCBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgYWxpZ25lZC5cbiAqIEByZXR1cm4ge1Byb21pc2U8REcuQ29sdW1uPn0gQWxpZ25lZCBzZXF1ZW5jZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5LYWxpZ24oc3JjQ29sLCBpc0FsaWduZWQgPSBmYWxzZSwgdW5Vc2VkTmFtZSA9ICcnKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zb2xlLndhcm4ob3V0cHV0KTtcbiAgICAgICAgY29uc3QgYnVmID0geWllbGQgQ0xJLmNhdCgncmVzdWx0LmZhc3RhJyk7XG4gICAgICAgIGlmICghYnVmKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBrYWxpZ24gb3V0cHV0IG5vIHJlc3VsdGApO1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gX2Zhc3RhVG9TdHJpbmdzKGJ1Zikuc2xpY2UoMCwgc2VxdWVuY2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHRndENvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncyh1blVzZWROYW1lLCBhbGlnbmVkKTtcbiAgICAgICAgLy8gdW5pdHNcbiAgICAgICAgY29uc3Qgc3JjVW5pdHMgPSBzcmNDb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBjb25zdCB0Z3RVbml0cyA9IHNyY1VuaXRzLnNwbGl0KCc6JykubWFwKChwLCBpKSA9PiBpID09IDEgPyBwICsgJy5NU0EnIDogcCkuam9pbignOicpO1xuICAgICAgICB0Z3RDb2wuc2V0VGFnKERHLlRBR1MuVU5JVFMsIHRndFVuaXRzKTtcbiAgICAgICAgdGd0Q29sLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgICAgIHJldHVybiB0Z3RDb2w7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdE1TQUVub3VnaE1lbW9yeShjb2wpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBzZXF1ZW5jZXNDb3VudCA9IGNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRlbHRhID0gc2VxdWVuY2VzQ291bnQgLyAxMDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBkZWx0YTsgaSA8IHNlcXVlbmNlc0NvdW50OyBpICs9IGRlbHRhKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJ1bkthbGlnbihERy5Db2x1bW4uZnJvbVN0cmluZ3MoY29sLm5hbWUsIGNvbC50b0xpc3QoKS5zbGljZSgwLCBNYXRoLnJvdW5kKGkpKSkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBydW5LYWxpZ24gc3VjY2VlZGVkIG9uICR7aX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBydW5LYWxpZ24gZmFpbGVkIG9uICR7aX0gd2l0aCAnJHtlcnJvcn0nYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcyhjb2wsIHNlcSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0FycmF5ID0gY29sLnRvTGlzdCgpO1xuICAgICAgICBjb25zdCBkaXN0YW5jZXMgPSBuZXcgQXJyYXkoc3RyaW5nQXJyYXkubGVuZ3RoKS5maWxsKDAuMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nQXJyYXkubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICBkaXN0YW5jZXNbaV0gPSBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddWydMZXZlbnNodGVpbiddKHN0cmluZ0FycmF5W2ldLCBzZXEpKTtcbiAgICAgICAgcmV0dXJuIERHLkNvbHVtbi5mcm9tTGlzdChERy5DT0xVTU5fVFlQRS5GTE9BVCwgJ2Rpc3RhbmNlcycsIGRpc3RhbmNlcyk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZHJhd1Rvb2x0aXAocGFyYW1zKSB7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXSA9IHVpLmRpdkgoW10pO1xuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gdWkuZGl2VihbXG4gICAgICAgIHVpLmRpdlRleHQoJ3NlcXVlbnNlJyksXG4gICAgICAgIHVpLmRpdlRleHQocGFyYW1zLmFjdGl2aXR5Lm5hbWUpLFxuICAgIF0pO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdzcGFjZS1iZXR3ZWVuJztcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZChjb2x1bW5OYW1lcyk7XG4gICAgcGFyYW1zLmxpbmUubW9scy5mb3JFYWNoKChtb2wpID0+IHtcbiAgICAgICAgY29uc3Qgc2VxID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5zZXFDb2wubmFtZSwgbW9sKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5ID0gdWkuZGl2VGV4dChwYXJhbXMuZGYuZ2V0KHBhcmFtcy5hY3Rpdml0eS5uYW1lLCBtb2wpLnRvRml4ZWQoMikpO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdsZWZ0JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUucGFkZGluZ0xlZnQgPSAnMzBweCc7XG4gICAgICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKHVpLmRpdlYoW1xuICAgICAgICAgICAgc2VxLFxuICAgICAgICAgICAgYWN0aXZpdHksXG4gICAgICAgIF0sIHsgc3R5bGU6IHsgcGFkZGluZ0xlZnQ6ICc1cHgnIH0gfSkpO1xuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IHsgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2Uoc3BhY2VQYXJhbXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcHJlcGFyZWREYXRhO1xuICAgICAgICBpZiAoIShzcGFjZVBhcmFtcy5zZXFDb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ0hFTE0nKSkge1xuICAgICAgICAgICAgY29uc3Qgc2VwID0gc3BhY2VQYXJhbXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICBjb25zdCBzZXBGaW5hbCA9IHNlcCA/IHNlcCA9PT0gJy4nID8gJ1xcXFxcXC4nIDogc2VwIDogJy0nO1xuICAgICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcEZpbmFsLCAnZycpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbJ1N0cmluZyddKS5pbmNsdWRlcyhzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljKSlcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXN1bHQgPSB5aWVsZCByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24ocHJlcGFyZWREYXRhLCBzcGFjZVBhcmFtcy5tZXRob2ROYW1lLCBzcGFjZVBhcmFtcy5zaW1pbGFyaXR5TWV0cmljLCBzcGFjZVBhcmFtcy5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgY29scyA9IHNwYWNlUGFyYW1zLmVtYmVkQXhlc05hbWVzLm1hcCgobmFtZSwgaW5kZXgpID0+IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KG5hbWUsIHNlcXVlbmNlU3BhY2VSZXN1bHQuZW1iZWRkaW5nW2luZGV4XSkpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogc2VxdWVuY2VTcGFjZVJlc3VsdC5kaXN0YW5jZSwgY29vcmRpbmF0ZXM6IG5ldyBERy5Db2x1bW5MaXN0KGNvbHMpIH07XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKSB7XG4gICAgY29uc3QgYXhlcyA9IFsnRW1iZWRfWCcsICdFbWJlZF9ZJ107XG4gICAgY29uc3QgY29sTmFtZUluZCA9IGRmLmNvbHVtbnMubmFtZXMoKS5maWx0ZXIoKGl0KSA9PiBpdC5pbmNsdWRlcyhheGVzWzBdKSkubGVuZ3RoICsgMTtcbiAgICByZXR1cm4gYXhlcy5tYXAoKGl0KSA9PiBgJHtpdH1fJHtjb2xOYW1lSW5kfWApO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCB7IENBUF9HUk9VUF9OQU1FLCBDQVBfR1JPVVBfU01JTEVTLCBqc29uU2RmTW9ub21lckxpYkRpY3QsIE1PTk9NRVJfU1lNQk9MLCBSR1JPVVBfQUxURVJfSUQsIFJHUk9VUF9GSUVMRCwgUkdST1VQX0xBQkVMLCBTREZfTU9OT01FUl9OQU1FIH0gZnJvbSAnLi4vY29uc3QnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfRklMRU5BTUUgPSAnL3NhbXBsZXMvSEVMTUNvcmVMaWJyYXJ5Lmpzb24nO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfTU9OT01FUl9TWU1CT0wgPSAnc3ltYm9sJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX01PTEZJTEUgPSAnbW9sZmlsZSc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0ZJRUxEUyA9IFsnc3ltYm9sJywgJ21vbGZpbGUnLCAncmdyb3VwcycsICduYW1lJ107XG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9sZmlsZXNGcm9tU2VxKGNvbCwgbW9ub21lcnNMaWJPYmplY3QpIHtcbiAgICBjb25zdCB1bml0cyA9IGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgIGNvbnN0IHNlcCA9IGNvbC5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgIGNvbnN0IHNwbGl0dGVyRnVuYyA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gICAgY29uc3QgbW9ub21lcnNEaWN0ID0gY3JlYXRlTW9tb21lcnNNb2xEaWN0KG1vbm9tZXJzTGliT2JqZWN0KTtcbiAgICBjb25zdCBtb2xGaWxlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzID0gc3BsaXR0ZXJGdW5jKGNvbC5nZXQoaSkpO1xuICAgICAgICBjb25zdCBtb2xGaWxlc0ZvclNlcSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lcnNbal0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBNb25vbWVyICR7bW9ub21lcnNbal19IGlzIG1pc3NpbmcgaW4gSEVMTSBsaWJyYXJ5LiBTdHJ1Y3R1cmUgY2Fubm90IGJlIGNyZWF0ZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vbEZpbGVzRm9yU2VxLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICAgIH1cbiAgICByZXR1cm4gbW9sRmlsZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9tb21lcnNNb2xEaWN0KGxpYikge1xuICAgIGNvbnN0IGRpY3QgPSB7fTtcbiAgICBsaWIuZm9yRWFjaCgoaXQpID0+IHtcbiAgICAgICAgaWYgKGl0Wydwb2x5bWVyVHlwZSddID09PSAnUEVQVElERScpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJPYmplY3QgPSB7fTtcbiAgICAgICAgICAgIEhFTE1fQ09SRV9GSUVMRFMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICBtb25vbWVyT2JqZWN0W2ZpZWxkXSA9IGl0W2ZpZWxkXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGljdFtpdFtIRUxNX0NPUkVfTElCX01PTk9NRVJfU1lNQk9MXV0gPSBtb25vbWVyT2JqZWN0O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRpY3Q7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSnNvbk1vbm9tZXJMaWJGcm9tU2RmKHRhYmxlKSB7XG4gICAgY29uc3QgcmVzdWx0TGliID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJsZS5yb3dDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXIgPSB7fTtcbiAgICAgICAgT2JqZWN0LmtleXMoanNvblNkZk1vbm9tZXJMaWJEaWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSBNT05PTUVSX1NZTUJPTCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJTeW1ib2wgPSB0YWJsZS5nZXQoanNvblNkZk1vbm9tZXJMaWJEaWN0W2tleV0sIGkpO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJba2V5XSA9IG1vbm9tZXJTeW1ib2wgPT09ICcuJyA/IHRhYmxlLmdldChTREZfTU9OT01FUl9OQU1FLCBpKSA6IG1vbm9tZXJTeW1ib2w7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09IFJHUk9VUF9GSUVMRCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJncm91cHMgPSB0YWJsZS5nZXQoanNvblNkZk1vbm9tZXJMaWJEaWN0W2tleV0sIGkpLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uUmdyb3VwcyA9IFtdO1xuICAgICAgICAgICAgICAgIHJncm91cHMuZm9yRWFjaCgoZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZ3JvdXAgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWx0QXRvbSA9IGcuc3Vic3RyaW5nKGcubGFzdEluZGV4T2YoXCJdXCIpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByYWRpY2FsTnVtID0gZy5tYXRjaCgvXFxbUihcXGQrKVxcXS8pWzFdO1xuICAgICAgICAgICAgICAgICAgICByZ3JvdXBbQ0FQX0dST1VQX1NNSUxFU10gPSBhbHRBdG9tID09PSAnSCcgPyBgWyo6JHtyYWRpY2FsTnVtfV1bSF1gIDogYE9bKjoke3JhZGljYWxOdW19XWA7XG4gICAgICAgICAgICAgICAgICAgIHJncm91cFtSR1JPVVBfQUxURVJfSURdID0gYWx0QXRvbSA9PT0gJ0gnID8gYFIke3JhZGljYWxOdW19LUhgIDogYFIke3JhZGljYWxOdW19LU9IYDtcbiAgICAgICAgICAgICAgICAgICAgcmdyb3VwW0NBUF9HUk9VUF9OQU1FXSA9IGFsdEF0b20gPT09ICdIJyA/IGBIYCA6IGBPSGA7XG4gICAgICAgICAgICAgICAgICAgIHJncm91cFtSR1JPVVBfTEFCRUxdID0gYFIke3JhZGljYWxOdW19YDtcbiAgICAgICAgICAgICAgICAgICAganNvblJncm91cHMucHVzaChyZ3JvdXApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1vbm9tZXJba2V5XSA9IGpzb25SZ3JvdXBzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGpzb25TZGZNb25vbWVyTGliRGljdFtrZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJba2V5XSA9IHRhYmxlLmdldChqc29uU2RmTW9ub21lckxpYkRpY3Rba2V5XSwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0TGliLnB1c2gobW9ub21lcik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRMaWI7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgVmRSZWdpb25UeXBlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZkLXJlZ2lvbnMnO1xuY29uc3QgdnJ0ID0gVmRSZWdpb25UeXBlO1xuLy8gUG9zaXRpb25zIG9mIHJlZ2lvbnMgZm9yIG51bWJlcmluZyBzY2hlbWVzXG4vLyBodHRwOi8vd3d3LmJpb2luZi5vcmcudWsvYWJzL2luZm8uaHRtbFxuLy8gY29uc3QgaW1ndFJlZ2lvbnM6IFZkUmVnaW9uW10gPSBbXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjEnLCAnTGlnaHQnLCAxLCAnMScsICcyNicpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIxJywgJ0hlYXZ5JywgMSwgJzEnLCAnMjYnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMScsICdMaWdodCcsIDIsICcyNycsICczOCcpLCAvLyAyNy0zMlxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjEnLCAnSGVhdnknLCAyLCAnMjcnLCAnMzgnKSwgLy8gMjctMzJcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjInLCAnTGlnaHQnLCAzLCAnMzknLCAnNTUnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMicsICdIZWF2eScsIDMsICczOScsICc1NScpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIyJywgJ0xpZ2h0JywgNCwgJzU2JywgJzY1JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMicsICdIZWF2eScsIDQsICc1NicsICc2NScpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMycsICdMaWdodCcsIDUsICc2NicsICcxMDQnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMycsICdIZWF2eScsIDUsICc2NicsICcxMDQnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMycsICdMaWdodCcsIDYsICcxMDUnLCAnMTE3JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMycsICdIZWF2eScsIDYsICcxMDUnLCAnMTE3JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlI0JywgJ0xpZ2h0JywgNywgJzExOCcsIG51bGwvKjEyNyovKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSNCcsICdIZWF2eScsIDcsICcxMTgnLCBudWxsLyoxMjgqLyksXG4vLyBdO1xuLyoqIFZpZXdlciB3aXRoIHRhYnMgYmFzZWQgb24gZGVzY3JpcHRpb24gb2YgY2hhaW4gcmVnaW9ucy5cbiAqICBVc2VkIHRvIGRlZmluZSByZWdpb25zIG9mIGFuIGltbXVub2dsb2J1bGluIExDLlxuICovXG5leHBvcnQgY2xhc3MgVmRSZWdpb25zVmlld2VyIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvLyBwcml2YXRlIHJlZ2lvbnNEZjogREcuRGF0YUZyYW1lO1xuICAgICAgICB0aGlzLnJlZ2lvbnNGZyA9IG51bGw7XG4gICAgICAgIC8vIHByaXZhdGUgcmVnaW9uc1RWOiBERy5UYWJsZVZpZXc7XG4gICAgICAgIHRoaXMucmVnaW9uc1Jvb3QgPSBudWxsO1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGFuZWxOb2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZWdpb25zID0gW107XG4gICAgICAgIC8vICNyZWdpb24gLS0gSGFuZGxlIGNvbnRyb2xzJyBldmVudHMgLS1cbiAgICAgICAgdGhpcy5yZXNpemluZyA9IGZhbHNlO1xuICAgICAgICAvLyAjZW5kcmVnaW9uXG4gICAgICAgIC8vI3JlZ2lvbiAtLSBWaWV3IC0tXG4gICAgICAgIHRoaXMuaG9zdCA9IG51bGw7XG4gICAgICAgIHRoaXMubWFpbkxheW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMubG9nb3MgPSBbXTtcbiAgICAgICAgLy8gVG8gcHJldmVudCBhbWJpZ3VvdXMgbnVtYmVyaW5nIHNjaGVtZSBpbiBNTEJcbiAgICAgICAgdGhpcy5yZWdpb25UeXBlcyA9IHRoaXMuc3RyaW5nTGlzdCgncmVnaW9uVHlwZXMnLCBbdnJ0LkNEUl0sIHsgY2hvaWNlczogT2JqZWN0LnZhbHVlcyh2cnQpLmZpbHRlcigodCkgPT4gdCAhPSB2cnQuVW5rbm93bikgfSk7XG4gICAgICAgIHRoaXMuY2hhaW5zID0gdGhpcy5zdHJpbmdMaXN0KCdjaGFpbnMnLCBbJ0hlYXZ5JywgJ0xpZ2h0J10sIHsgY2hvaWNlczogWydIZWF2eScsICdMaWdodCddIH0pO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXggPSB0aGlzLnN0cmluZygnc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeCcsICdjaGFpbiBzZXF1ZW5jZScpO1xuICAgIH1cbiAgICBnZXQgZGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFGcmFtZTtcbiAgICB9XG4gICAgLy8gVE9ETzogLm9uVGFibGVBdHRhY2hlZCBpcyBub3QgY2FsbGluZyBvbiBkYXRhRnJhbWUgc2V0LCBvblByb3BlcnR5Q2hhbmdlZCAgYWxzbyBub3QgY2FsbGluZ1xuICAgIHNldERmKHZhbHVlLCByZWdpb25zKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdWZFJlZ2lvbnNWaWV3ZXIuc2V0RGYoKScpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5kZXN0cm95VmlldygpO1xuICAgICAgICAgICAgdGhpcy5yZWdpb25zID0gcmVnaW9ucztcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lID0gdmFsdWU7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmJ1aWxkVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIC8vI3JlZ2lvbiByZWdpb25zREYgd2l0aCBmaWx0ZXJcbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0RmID0gREcuRGF0YUZyYW1lLmZyb21PYmplY3RzKHRoaXMucmVnaW9ucyk7XG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNEZi5yb3dzLmZpbHRlcigocm93KSA9PiByb3cubmFtZSA9PSAnQ0RSMScpO1xuICAgICAgICAgICAgLy8gLy8gVG8gYXZhaWxhYmxlIG9wdGlvbnMgL1xuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRmcgPSAoYXdhaXQgdGhpcy5yZWdpb25zRGYucGxvdC5mcm9tVHlwZShERy5WSUVXRVIuRklMVEVSUywge1xuICAgICAgICAgICAgLy8gICAvLyBjb2x1bW5OYW1lczogWyduYW1lJyxdLFxuICAgICAgICAgICAgLy8gICBzaG93RmlsdGVyQ291bnRzSW5kaWNhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIHNob3dIZWFkZXI6IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBzaG93U2VhcmNoQm94OiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgZmlsdGVyczogW1xuICAgICAgICAgICAgLy8gICAgIHt0eXBlOiBERy5GSUxURVJfVFlQRS5DQVRFR09SSUNBTCwgY29sdW1uOiAndHlwZScsIGxhYmVsOiAnUmVnaW9uIG5hbWUnLCBzaG93SGlzdG9ncmFtOiBmYWxzZX0sXG4gICAgICAgICAgICAvLyAgICAge3R5cGU6IERHLkZJTFRFUl9UWVBFLkNBVEVHT1JJQ0FMLCBjb2x1bW46ICduYW1lJywgbGFiZWw6ICdSZWdpb24gdHlwZScsIHNob3dIaXN0b2dyYW06IGZhbHNlfSxcbiAgICAgICAgICAgIC8vICAgXSxcbiAgICAgICAgICAgIC8vICAgdGl0bGU6ICdSZWdpb25zIGZpbHRlcicsXG4gICAgICAgICAgICAvLyAgIHNob3dUaXRsZTogdHJ1ZSxcbiAgICAgICAgICAgIC8vICAgZGVzY3JpcHRpb246ICdGaWx0ZXIgZm9yIHJlZ2lvbnMgb2YgbXVsdGlwbGUgYWxpZ25tZW50IGJ5IElNR1Qgbm9tZW5jbGF0dXJlJyxcbiAgICAgICAgICAgIC8vICAgc29tZVByb3BlcnR5OiAnSGVsbG8nLFxuICAgICAgICAgICAgLy8gfSkpIGFzIERHLkZpbHRlckdyb3VwO1xuICAgICAgICAgICAgLy8jZW5kcmVnaW9uIHJlZ2lvbnNERiB3aXRoIGZpbHRlclxuICAgICAgICAgICAgLy8gdGhpcy5tbGJWaWV3LmRvY2tNYW5hZ2VyLmRvY2sodGhpcy5yZWdpb25zRmcucm9vdCwgREcuRE9DS19UWVBFLkxFRlQsIHJvb3ROb2RlLCAnRmlsdGVyIHJlZ2lvbnMnLCAwLjIpO1xuICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godWkub25TaXplQ2hhbmdlZCh0aGlzLnJvb3QpLnN1YnNjcmliZSh0aGlzLnJvb3RPblNpemVDaGFuZ2VkLmJpbmQodGhpcykpKTtcbiAgICAgICAgICAgIC8vIHJ4anMuZnJvbUV2ZW50KHRoaXMucm9vdCwgJ21vdXNlbW92ZScpLnN1YnNjcmliZSh0aGlzLm9uTW91c2VNb3ZlUm9vdC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm9uTW91c2VNb3ZlUm9vdC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuYnVpbGRWaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmluaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KSB7XG4gICAgICAgIGNvbnN0IF9zdXBlciA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgICAgICAgb25Qcm9wZXJ0eUNoYW5nZWQ6IHsgZ2V0OiAoKSA9PiBzdXBlci5vblByb3BlcnR5Q2hhbmdlZCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgX3N1cGVyLm9uUHJvcGVydHlDaGFuZ2VkLmNhbGwodGhpcywgcHJvcGVydHkpO1xuICAgICAgICAgICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlZ2lvblR5cGVzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGFpbnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcXVlbmNlQ29sdW1uTmFtZVBvc3RmaXgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvcGVuKG1sYlZpZXcpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWxOb2RlID0gbWxiVmlldy5kb2NrTWFuYWdlci5kb2NrKHRoaXMucm9vdCwgREcuRE9DS19UWVBFLlRPUCwgbnVsbCwgJ1JlZ2lvbnMnLCAwLjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2hvdyhtbGJWaWV3KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByb290T25TaXplQ2hhbmdlZChhcmdzKSB7XG4gICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICB9XG4gICAgZGVzdHJveVZpZXcoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBVbnN1YnNjcmliZSBmcm9tIGFuZCByZW1vdmUgYWxsIHZpZXcgZWxlbWVudHNcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFZkUmVnaW9uc1ZpZXdlci5kZXN0cm95VmlldyggbWFpbkxheW91dCA9ICR7IXRoaXMubWFpbkxheW91dCA/ICdub25lJyA6ICd2YWx1ZSd9IClgKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1haW5MYXlvdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIHRoaXMucm9vdC5yZW1vdmVDaGlsZCh0aGlzLmhvc3QpO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbkxheW91dC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3QucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYnVpbGRWaWV3KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnVmRSZWdpb25zVmlld2VyLmJ1aWxkVmlldygpIHN0YXJ0Jyk7XG4gICAgICAgICAgICBjb25zdCBjb2xOYW1lcyA9IE9iamVjdC5hc3NpZ24oe30sIC4uLnRoaXMuY2hhaW5zLm1hcCgoY2hhaW4pID0+ICh7IFtjaGFpbl06IGAke2NoYWlufSAke3RoaXMuc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeH1gIH0pKSk7XG4gICAgICAgICAgICBjb25zdCByZWdpb25zRmlsdGVyZWQgPSB0aGlzLnJlZ2lvbnMuZmlsdGVyKChyKSA9PiB0aGlzLnJlZ2lvblR5cGVzLmluY2x1ZGVzKHIudHlwZSkpO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJMaXN0ID0gQXJyYXkuZnJvbShuZXcgU2V0KHJlZ2lvbnNGaWx0ZXJlZC5tYXAoKHIpID0+IHIub3JkZXIpKSkuc29ydCgpO1xuICAgICAgICAgICAgdGhpcy5sb2dvcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgb3JkZXJJID0gMDsgb3JkZXJJIDwgb3JkZXJMaXN0Lmxlbmd0aDsgb3JkZXJJKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWdpb25DaGFpbnMgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoYWluIG9mIHRoaXMuY2hhaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lvbiA9IHJlZ2lvbnNGaWx0ZXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKHIpID0+IHIub3JkZXIgPT0gb3JkZXJMaXN0W29yZGVySV0gJiYgci5jaGFpbiA9PSBjaGFpbik7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbkNoYWluc1tjaGFpbl0gPSAoeWllbGQgdGhpcy5kYXRhRnJhbWUucGxvdC5mcm9tVHlwZSgnV2ViTG9nbycsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlQ29sdW1uTmFtZTogY29sTmFtZXNbY2hhaW5dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbk5hbWU6IHJlZ2lvbi5wb3NpdGlvblN0YXJ0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uTmFtZTogcmVnaW9uLnBvc2l0aW9uRW5kTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpeFdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFdlYkxvZ28gY3JlYXRpb24gZmlyZXMgb25Sb290U2l6ZUNoYW5nZWQgZXZlbnQgZXZlbiBiZWZvcmUgY29udHJvbCBiZWluZyBhZGRlZCB0byB0aGlzLmxvZ29zXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvc1tvcmRlckldID0gcmVnaW9uQ2hhaW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdWkudGFibGVGcm9tTWFwKClcbiAgICAgICAgICAgIC8vIERHLkh0bWxUYWJsZS5jcmVhdGUoKVxuICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gdWkudGFibGUodGhpcy5jaGFpbnMsIChjaGFpbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGNoYWluIGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIC4uLihvcmRlckxpc3QubGVuZ3RoID4gMCA/IFt1aS5kaXYoY2hhaW4sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdyb3RhdGUoLTkwZGVnKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICcxMnB4IFJvYm90bywgUm9ib3RvIExvY2FsLCBzYW5zLXNlcmlmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXSA6IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gTGlzdCB3aXRoIGNvbnRyb2xzIGZvciByZWdpb25zXG4gICAgICAgICAgICAgICAgICAgIC4uLlsuLi5BcnJheShvcmRlckxpc3QubGVuZ3RoKS5rZXlzKCldLm1hcCgob3JkZXJJKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3bCA9IHRoaXMubG9nb3Nbb3JkZXJJXVtjaGFpbl07XG4gICAgICAgICAgICAgICAgICAgICAgICB3bC5yb290LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0RpdiA9IHVpLmRpdihbd2wucm9vdF0gLypgJHtjaGFpbn0gJHtyZWdpb25zRmlsdGVyZWRbckldfWAqLywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc0RpdjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICAgICAgICAgIH0sIFsnJywgLi4uWy4uLkFycmF5KG9yZGVyTGlzdC5sZW5ndGgpLmtleXMoKV0ubWFwKChvcmRlckkpID0+IHJlZ2lvbnNGaWx0ZXJlZC5maW5kKChyKSA9PiByLm9yZGVyID09IG9yZGVyTGlzdFtvcmRlckldICYmIHIuY2hhaW4gPT0gdGhpcy5jaGFpbnNbMF0pLm5hbWUgfHwgJ05hbWUnKV0pO1xuICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0LmNsYXNzTmFtZSA9ICdtbGItdmQtcmVnaW9ucy12aWV3ZXItdGFibGUyJztcbiAgICAgICAgICAgIC8vIHRoaXMubWFpbkxheW91dC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNFRUVFRkYnO1xuICAgICAgICAgICAgLy8gdGhpcy5tYWluTGF5b3V0LnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICAgICAgICAgIC8vIHRoaXMubWFpbkxheW91dC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGJsYWNrJztcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yID0gYCNmZmJiJHtNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI1NSkudG9TdHJpbmcoMTYpfWA7XG4gICAgICAgICAgICB0aGlzLmhvc3QgPSB1aS5ib3godGhpcy5tYWluTGF5b3V0LCB7IC8qc3R5bGU6IHtiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yfSovfSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5ob3N0KTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byc7XG4gICAgICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdWZFJlZ2lvbnNWaWV3ZXIuYnVpbGRWaWV3KCkgZW5kJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjYWxjU2l6ZSgpIHtcbiAgICAgICAgY29uc3QgbG9nb0hlaWdodCA9ICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC0gNTQpIC8gdGhpcy5jaGFpbnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihsb2dvSGVpZ2h0LCBNYXRoLm1heCguLi50aGlzLmxvZ29zLm1hcCgod2xEaWN0KSA9PiBNYXRoLm1heCguLi5PYmplY3QudmFsdWVzKHdsRGljdCkubWFwKCh3bCkgPT4gd2wubWF4SGVpZ2h0KSkpKSk7XG4gICAgICAgIGZvciAobGV0IG9yZGVySSA9IDA7IG9yZGVySSA8IHRoaXMubG9nb3MubGVuZ3RoOyBvcmRlckkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgY2hhaW5JID0gMDsgY2hhaW5JIDwgdGhpcy5jaGFpbnMubGVuZ3RoOyBjaGFpbkkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYWluID0gdGhpcy5jaGFpbnNbY2hhaW5JXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ29zW29yZGVySV1bY2hhaW5dLnJvb3Quc3R5bGUuaGVpZ2h0ID0gYCR7bWF4SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyNlbmRyZWdpb24gLS0gVmlldyAtLVxuICAgIG9uTW91c2VNb3ZlUm9vdChlKSB7XG4gICAgICAgIC8vIHVpLnRvb2x0aXAuc2hvdygndGV4dCcsIGUueCArIDgsIGUueSArIDgsKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYG9uTW91c2VNb3ZlUm9vdC4oIHg6ICR7ZS54fSwgeTogJHtlLnl9IClgKTtcbiAgICB9XG59XG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJ3dVwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJ3dVwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9LFxuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZVxuLyoqKioqKi8gXHRcdH07XG5cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG5cblxuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX3RvQ29uc3VtYWJsZUFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9zbGljZWRUb0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSlbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU3ltYm9sJGl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MilbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfZ2V0SXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9yZWdlbmVyYXRvclJ1bnRpbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9PYmplY3Qka2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oODApW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1NldCA9IF9fd2VicGFja19yZXF1aXJlX18oODQpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1Byb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIHd1ID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB3dShpdGVyYWJsZSkge1xuXHQgIGlmICghaXNJdGVyYWJsZShpdGVyYWJsZSkpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcihcInd1OiBgXCIgKyBpdGVyYWJsZSArIFwiYCBpcyBub3QgaXRlcmFibGUhXCIpO1xuXHQgIH1cblx0ICByZXR1cm4gbmV3IFd1KGl0ZXJhYmxlKTtcblx0fTtcblxuXHRmdW5jdGlvbiBXdShpdGVyYWJsZSkge1xuXHQgIHZhciBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlKTtcblx0ICB0aGlzLm5leHQgPSBpdGVyYXRvci5uZXh0LmJpbmQoaXRlcmF0b3IpO1xuXHR9XG5cdHd1LnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblxuXHR3dS5wcm90b3R5cGVbX1N5bWJvbCRpdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRoaXM7XG5cdH07XG5cblx0Lypcblx0ICogSW50ZXJuYWwgdXRpbGl0aWVzXG5cdCAqL1xuXG5cdC8vIEFuIGludGVybmFsIHBsYWNlaG9sZGVyIHZhbHVlLlxuXHR2YXIgTUlTU0lORyA9IHt9O1xuXG5cdC8vIFJldHVybiB3aGV0aGVyIGEgdGhpbmcgaXMgaXRlcmFibGUuXG5cdHZhciBpc0l0ZXJhYmxlID0gZnVuY3Rpb24gaXNJdGVyYWJsZSh0aGluZykge1xuXHQgIHJldHVybiB0aGluZyAmJiB0eXBlb2YgdGhpbmdbX1N5bWJvbCRpdGVyYXRvcl0gPT09IFwiZnVuY3Rpb25cIjtcblx0fTtcblxuXHQvLyBHZXQgdGhlIGl0ZXJhdG9yIGZvciB0aGUgdGhpbmcgb3IgdGhyb3cgYW4gZXJyb3IuXG5cdHZhciBnZXRJdGVyYXRvciA9IGZ1bmN0aW9uIGdldEl0ZXJhdG9yKHRoaW5nKSB7XG5cdCAgaWYgKGlzSXRlcmFibGUodGhpbmcpKSB7XG5cdCAgICByZXR1cm4gX2dldEl0ZXJhdG9yKHRoaW5nKTtcblx0ICB9XG5cdCAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vdCBpdGVyYWJsZTogXCIgKyB0aGluZyk7XG5cdH07XG5cblx0Ly8gRGVmaW5lIGEgc3RhdGljIG1ldGhvZCBvbiBgd3VgIGFuZCBzZXQgaXRzIHByb3RvdHlwZSB0byB0aGUgc2hhcmVkXG5cdC8vIGBXdS5wcm90b3R5cGVgLlxuXHR2YXIgc3RhdGljTWV0aG9kID0gZnVuY3Rpb24gc3RhdGljTWV0aG9kKG5hbWUsIGZuKSB7XG5cdCAgZm4ucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXHQgIHd1W25hbWVdID0gZm47XG5cdH07XG5cblx0Ly8gRGVmaW5lIGEgZnVuY3Rpb24gdGhhdCBpcyBhdHRhY2hlZCBhcyBib3RoIGEgYFd1LnByb3RvdHlwZWAgbWV0aG9kIGFuZCBhXG5cdC8vIGN1cnJ5YWJsZSBzdGF0aWMgbWV0aG9kIG9uIGB3dWAgZGlyZWN0bHkgdGhhdCB0YWtlcyBhbiBpdGVyYWJsZSBhcyBpdHMgbGFzdFxuXHQvLyBwYXJhbWV0ZXIuXG5cdHZhciBwcm90b3R5cGVBbmRTdGF0aWMgPSBmdW5jdGlvbiBwcm90b3R5cGVBbmRTdGF0aWMobmFtZSwgZm4pIHtcblx0ICB2YXIgZXhwZWN0ZWRBcmdzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gZm4ubGVuZ3RoIDogYXJndW1lbnRzWzJdO1xuXHQgIHJldHVybiAoZnVuY3Rpb24gKCkge1xuXHQgICAgZm4ucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXHQgICAgV3UucHJvdG90eXBlW25hbWVdID0gZm47XG5cblx0ICAgIC8vICsxIGZvciB0aGUgaXRlcmFibGUsIHdoaWNoIGlzIHRoZSBgdGhpc2AgdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHNvIGl0XG5cdCAgICAvLyBpc24ndCByZWZsZWN0ZWQgYnkgdGhlIGxlbmd0aCBwcm9wZXJ0eS5cblx0ICAgIGV4cGVjdGVkQXJncyArPSAxO1xuXG5cdCAgICB3dVtuYW1lXSA9IHd1LmN1cnJ5YWJsZShmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHZhciBfd3U7XG5cblx0ICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgICB9XG5cblx0ICAgICAgdmFyIGl0ZXJhYmxlID0gYXJncy5wb3AoKTtcblx0ICAgICAgcmV0dXJuIChfd3UgPSB3dShpdGVyYWJsZSkpW25hbWVdLmFwcGx5KF93dSwgYXJncyk7XG5cdCAgICB9LCBleHBlY3RlZEFyZ3MpO1xuXHQgIH0pKCk7XG5cdH07XG5cblx0Ly8gQSBkZWNvcmF0b3IgZm9yIHJld3JhcHBpbmcgYSBtZXRob2QncyByZXR1cm5lZCBpdGVyYWJsZSBpbiB3dSB0byBtYWludGFpblxuXHQvLyBjaGFpbmFiaWxpdHkuXG5cdHZhciByZXdyYXAgPSBmdW5jdGlvbiByZXdyYXAoZm4pIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcblx0ICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gd3UoZm4uY2FsbC5hcHBseShmbiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpO1xuXHQgIH07XG5cdH07XG5cblx0dmFyIHJld3JhcFN0YXRpY01ldGhvZCA9IGZ1bmN0aW9uIHJld3JhcFN0YXRpY01ldGhvZChuYW1lLCBmbikge1xuXHQgIHJldHVybiBzdGF0aWNNZXRob2QobmFtZSwgcmV3cmFwKGZuKSk7XG5cdH07XG5cdHZhciByZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMgPSBmdW5jdGlvbiByZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMobmFtZSwgZm4sIGV4cGVjdGVkQXJncykge1xuXHQgIHJldHVybiBwcm90b3R5cGVBbmRTdGF0aWMobmFtZSwgcmV3cmFwKGZuKSwgZXhwZWN0ZWRBcmdzKTtcblx0fTtcblxuXHQvLyBSZXR1cm4gYSB3cmFwcGVkIHZlcnNpb24gb2YgYGZuYCBib3VuZCB3aXRoIHRoZSBpbml0aWFsIGFyZ3VtZW50c1xuXHQvLyBgLi4uYXJnc2AuXG5cdGZ1bmN0aW9uIGN1cnJ5KGZuLCBhcmdzKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIGZvciAodmFyIF9sZW4zID0gYXJndW1lbnRzLmxlbmd0aCwgbW9yZUFyZ3MgPSBBcnJheShfbGVuMyksIF9rZXkzID0gMDsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuXHQgICAgICBtb3JlQXJnc1tfa2V5M10gPSBhcmd1bWVudHNbX2tleTNdO1xuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gZm4uY2FsbC5hcHBseShmbiwgW3RoaXNdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYXJncyksIG1vcmVBcmdzKSk7XG5cdCAgfTtcblx0fVxuXG5cdC8qXG5cdCAqIFB1YmxpYyB1dGlsaXRpZXNcblx0ICovXG5cblx0c3RhdGljTWV0aG9kKFwiY3VycnlhYmxlXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBleHBlY3RlZCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IGZuLmxlbmd0aCA6IGFyZ3VtZW50c1sxXTtcblx0ICByZXR1cm4gKGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiBmKCkge1xuXHQgICAgICBmb3IgKHZhciBfbGVuNCA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleTRdID0gYXJndW1lbnRzW19rZXk0XTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA+PSBleHBlY3RlZCA/IGZuLmFwcGx5KHRoaXMsIGFyZ3MpIDogY3VycnkoZiwgYXJncyk7XG5cdCAgICB9O1xuXHQgIH0pKCk7XG5cdH0pO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImVudHJpZXNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAob2JqKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24sIF9kaWRJdGVyYXRvckVycm9yLCBfaXRlcmF0b3JFcnJvciwgX2l0ZXJhdG9yLCBfc3RlcCwgaztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvciA9IF9nZXRJdGVyYXRvcihfT2JqZWN0JGtleXMob2JqKSk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gKF9zdGVwID0gX2l0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgayA9IF9zdGVwLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBbaywgb2JqW2tdXTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvciA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJrZXlzXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG9iaikge1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfT2JqZWN0JGtleXMob2JqKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwidmFsdWVzXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG9iaikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiwgX2RpZEl0ZXJhdG9yRXJyb3IyLCBfaXRlcmF0b3JFcnJvcjIsIF9pdGVyYXRvcjIsIF9zdGVwMiwgaztcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjIgPSBfZ2V0SXRlcmF0b3IoX09iamVjdCRrZXlzKG9iaikpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSAoX3N0ZXAyID0gX2l0ZXJhdG9yMi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGsgPSBfc3RlcDIudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIG9ialtrXTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIgJiYgX2l0ZXJhdG9yMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdC8qXG5cdCAqIEluZmluaXRlIGl0ZXJhdG9yc1xuXHQgKi9cblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJjeWNsZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc2F2ZWQsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zLCBfZGlkSXRlcmF0b3JFcnJvcjMsIF9pdGVyYXRvckVycm9yMywgX2l0ZXJhdG9yMywgX3N0ZXAzLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHNhdmVkID0gW107XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDtcblx0ICAgICAgICBfaXRlcmF0b3IzID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDMudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgc2F2ZWQucHVzaCh4KTtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNCk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjMgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zICYmIF9pdGVyYXRvcjNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjNbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IzO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIGlmICghc2F2ZWQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKHNhdmVkLCBcInQxXCIsIDMwKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzQsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJjb3VudFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAwIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBzdGVwID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gMSA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgbjtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgbiA9IHN0YXJ0O1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ7XG5cdCAgICAgICAgcmV0dXJuIG47XG5cblx0ICAgICAgY2FzZSA0OlxuXHQgICAgICAgIG4gKz0gc3RlcDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwicmVwZWF0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKHRoaW5nKSB7XG5cdCAgdmFyIHRpbWVzID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gSW5maW5pdHkgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIGk7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKHRpbWVzID09PSBJbmZpbml0eSkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ7XG5cdCAgICAgICAgcmV0dXJuIHRoaW5nO1xuXG5cdCAgICAgIGNhc2UgNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBpID0gMDtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgaWYgKCEoaSA8IHRpbWVzKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB0aGluZztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGkrKztcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdC8qXG5cdCAqIEl0ZXJhdG9ycyB0aGF0IHRlcm1pbmF0ZSBvbmNlIHRoZSBpbnB1dCBzZXF1ZW5jZSBoYXMgYmVlbiBleGhhdXN0ZWRcblx0ICovXG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiY2hhaW5cIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240LFxuXHQgICAgICBfZGlkSXRlcmF0b3JFcnJvcjQsXG5cdCAgICAgIF9pdGVyYXRvckVycm9yNCxcblx0ICAgICAgX2xlbjUsXG5cdCAgICAgIGl0ZXJhYmxlcyxcblx0ICAgICAgX2tleTUsXG5cdCAgICAgIF9pdGVyYXRvcjQsXG5cdCAgICAgIF9zdGVwNCxcblx0ICAgICAgaXQsXG5cdCAgICAgIGFyZ3MkMSQwID0gYXJndW1lbnRzO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjQgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjQgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cblx0ICAgICAgICBmb3IgKF9sZW41ID0gYXJncyQxJDAubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuNSksIF9rZXk1ID0gMDsgX2tleTUgPCBfbGVuNTsgX2tleTUrKykge1xuXHQgICAgICAgICAgaXRlcmFibGVzW19rZXk1XSA9IGFyZ3MkMSQwW19rZXk1XTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3I0ID0gX2dldEl0ZXJhdG9yKGl0ZXJhYmxlcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IChfc3RlcDQgPSBfaXRlcmF0b3I0Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaXQgPSBfc3RlcDQudmFsdWU7XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoaXQsIFwidDBcIiwgOSk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjQgPSBjb250ZXh0JDEkMC50MTtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ICYmIF9pdGVyYXRvcjRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjRbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I0O1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJjaHVua1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDIgOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgaXRlbXMsIGluZGV4LCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSwgX2RpZEl0ZXJhdG9yRXJyb3I1LCBfaXRlcmF0b3JFcnJvcjUsIF9pdGVyYXRvcjUsIF9zdGVwNSwgaXRlbTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpdGVtcyA9IFtdO1xuXHQgICAgICAgIGluZGV4ID0gMDtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I1ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I1ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA1O1xuXHQgICAgICAgIF9pdGVyYXRvcjUgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSA9IChfc3RlcDUgPSBfaXRlcmF0b3I1Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaXRlbSA9IF9zdGVwNS52YWx1ZTtcblxuXHQgICAgICAgIGl0ZW1zW2luZGV4KytdID0gaXRlbTtcblxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBuKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIHJldHVybiBpdGVtcztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGl0ZW1zID0gW107XG5cdCAgICAgICAgaW5kZXggPSAwO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg1KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjUgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjUgJiYgX2l0ZXJhdG9yNVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yNVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNztcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I1KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjU7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI3KTtcblxuXHQgICAgICBjYXNlIDMxOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjQpO1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgICAgaWYgKCFpbmRleCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM1O1xuXHQgICAgICAgIHJldHVybiBpdGVtcztcblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDIwLCAyNCwgMzJdLCBbMjUsLCAyNywgMzFdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJjb25jYXRNYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYsIF9kaWRJdGVyYXRvckVycm9yNiwgX2l0ZXJhdG9yRXJyb3I2LCBfaXRlcmF0b3I2LCBfc3RlcDYsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3I2ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgPSAoX3N0ZXA2ID0gX2l0ZXJhdG9yNi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDYudmFsdWU7XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoZm4oeCksIFwidDBcIiwgOCk7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxMztcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I2ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjYgPSBjb250ZXh0JDEkMC50MTtcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNztcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb242ICYmIF9pdGVyYXRvcjZbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjZbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I2O1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE3KTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDEzLCAxNywgMjVdLCBbMTgsLCAyMCwgMjRdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJkcm9wXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG4pIHtcblx0ICB2YXIgaSwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcsIF9kaWRJdGVyYXRvckVycm9yNywgX2l0ZXJhdG9yRXJyb3I3LCBfaXRlcmF0b3I3LCBfc3RlcDcsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaSA9IDA7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDtcblx0ICAgICAgICBfaXRlcmF0b3I3ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjcgPSAoX3N0ZXA3ID0gX2l0ZXJhdG9yNy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDcudmFsdWU7XG5cblx0ICAgICAgICBpZiAoIShpKysgPCBuKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImNvbnRpbnVlXCIsIDEzKTtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNik7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDQpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I3ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyAmJiBfaXRlcmF0b3I3W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I3W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI1O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjcpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNztcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjUpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZCh0aGlzLCBcInQxXCIsIDMxKTtcblxuXHQgICAgICBjYXNlIDMxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzQsIDE4LCAyMiwgMzBdLCBbMjMsLCAyNSwgMjldXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJkcm9wV2hpbGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCwgX2RpZEl0ZXJhdG9yRXJyb3I4LCBfaXRlcmF0b3JFcnJvcjgsIF9pdGVyYXRvcjgsIF9zdGVwOCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I4ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I4ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjggPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOCA9IChfc3RlcDggPSBfaXRlcmF0b3I4Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwOC52YWx1ZTtcblxuXHQgICAgICAgIGlmICghZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImNvbnRpbnVlXCIsIDEyKTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE1KTtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNztcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I4ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjggPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ICYmIF9pdGVyYXRvcjhbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjhbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yOCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I4O1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKHRoaXMsIFwidDFcIiwgMzApO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTcsIDIxLCAyOV0sIFsyMiwsIDI0LCAyOF1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImVudW1lcmF0ZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChbdGhpcywgd3UuY291bnQoKV0pLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJmaWx0ZXJcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSwgX2RpZEl0ZXJhdG9yRXJyb3I5LCBfaXRlcmF0b3JFcnJvcjksIF9pdGVyYXRvcjksIF9zdGVwOSwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I5ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I5ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjkgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uOSA9IChfc3RlcDkgPSBfaXRlcmF0b3I5Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwOS52YWx1ZTtcblxuXHQgICAgICAgIGlmICghZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I5ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjkgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ICYmIF9pdGVyYXRvcjlbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjlbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yOSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I5O1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJmbGF0dGVuXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzaGFsbG93ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwLCBfZGlkSXRlcmF0b3JFcnJvcjEwLCBfaXRlcmF0b3JFcnJvcjEwLCBfaXRlcmF0b3IxMCwgX3N0ZXAxMCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTAgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEwID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEwID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEwID0gKF9zdGVwMTAgPSBfaXRlcmF0b3IxMC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEwLnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCEodHlwZW9mIHggIT09IFwic3RyaW5nXCIgJiYgaXNJdGVyYWJsZSh4KSkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKHNoYWxsb3cgPyB4IDogd3UoeCkuZmxhdHRlbigpLCBcInQwXCIsIDkpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEwID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEwID0gY29udGV4dCQxJDAudDE7XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgJiYgX2l0ZXJhdG9yMTBbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjEwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI1O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjEwKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEwO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE4LCAyMiwgMzBdLCBbMjMsLCAyNSwgMjldXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJpbnZva2VcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobmFtZSkge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEsXG5cdCAgICAgIF9kaWRJdGVyYXRvckVycm9yMTEsXG5cdCAgICAgIF9pdGVyYXRvckVycm9yMTEsXG5cdCAgICAgIF9sZW42LFxuXHQgICAgICBhcmdzLFxuXHQgICAgICBfa2V5Nixcblx0ICAgICAgX2l0ZXJhdG9yMTEsXG5cdCAgICAgIF9zdGVwMTEsXG5cdCAgICAgIHgsXG5cdCAgICAgIGFyZ3MkMSQwID0gYXJndW1lbnRzO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTEgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cblx0ICAgICAgICBmb3IgKF9sZW42ID0gYXJncyQxJDAubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjYgPiAxID8gX2xlbjYgLSAxIDogMCksIF9rZXk2ID0gMTsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuXHQgICAgICAgICAgYXJnc1tfa2V5NiAtIDFdID0gYXJncyQxJDBbX2tleTZdO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvcjExID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gKF9zdGVwMTEgPSBfaXRlcmF0b3IxMS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDExLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMDtcblx0ICAgICAgICByZXR1cm4geFtuYW1lXS5hcHBseSh4LCBhcmdzKTtcblxuXHQgICAgICBjYXNlIDEwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTU7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTEgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTEgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSAmJiBfaXRlcmF0b3IxMVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTFbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjI7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTEpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTE7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcIm1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIsIF9kaWRJdGVyYXRvckVycm9yMTIsIF9pdGVyYXRvckVycm9yMTIsIF9pdGVyYXRvcjEyLCBfc3RlcDEyLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTIgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTIgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSAoX3N0ZXAxMiA9IF9pdGVyYXRvcjEyLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTIudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIGZuKHgpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEyID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTIgJiYgX2l0ZXJhdG9yMTJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjEyW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjEyKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEyO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJwbHVja1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuYW1lKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMywgX2RpZEl0ZXJhdG9yRXJyb3IxMywgX2l0ZXJhdG9yRXJyb3IxMywgX2l0ZXJhdG9yMTMsIF9zdGVwMTMsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEzID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMyA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMyA9IChfc3RlcDEzID0gX2l0ZXJhdG9yMTMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMy52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4geFtuYW1lXTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzICYmIF9pdGVyYXRvcjEzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxM1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMztcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicmVkdWN0aW9uc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBpbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIHZhbCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0LCBfZGlkSXRlcmF0b3JFcnJvcjE0LCBfaXRlcmF0b3JFcnJvcjE0LCBfaXRlcmF0b3IxNCwgX3N0ZXAxNCwgeCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1LCBfZGlkSXRlcmF0b3JFcnJvcjE1LCBfaXRlcmF0b3JFcnJvcjE1LCBfaXRlcmF0b3IxNSwgX3N0ZXAxNTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICB2YWwgPSBpbml0aWFsO1xuXG5cdCAgICAgICAgaWYgKCEodmFsID09PSB1bmRlZmluZWQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTQgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE0ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA1O1xuXHQgICAgICAgIF9pdGVyYXRvcjE0ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gKF9zdGVwMTQgPSBfaXRlcmF0b3IxNC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE0LnZhbHVlO1xuXG5cdCAgICAgICAgdmFsID0geDtcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTQpO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE0ICYmIF9pdGVyYXRvcjE0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxNFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxNCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNDtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzA7XG5cdCAgICAgICAgcmV0dXJuIHZhbDtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTUgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMzO1xuXHQgICAgICAgIF9pdGVyYXRvcjE1ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSA9IChfc3RlcDE1ID0gX2l0ZXJhdG9yMTUubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxNS52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzk7XG5cdCAgICAgICAgcmV0dXJuIHZhbCA9IGZuKHZhbCwgeCk7XG5cblx0ICAgICAgY2FzZSAzOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDQyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0ODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDQ0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0NDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MSA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMzMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTUgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTUgPSBjb250ZXh0JDEkMC50MTtcblxuXHQgICAgICBjYXNlIDQ4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0ODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSAmJiBfaXRlcmF0b3IxNVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTVbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSA1MTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNTE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1NDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTU7XG5cblx0ICAgICAgY2FzZSA1NDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDUxKTtcblxuXHQgICAgICBjYXNlIDU1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goNDgpO1xuXG5cdCAgICAgIGNhc2UgNTY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiLCB2YWwpO1xuXG5cdCAgICAgIGNhc2UgNTc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN10sIFszMywgNDQsIDQ4LCA1Nl0sIFs0OSwsIDUxLCA1NV1dKTtcblx0fSksIDIpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInJlamVjdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiwgX2RpZEl0ZXJhdG9yRXJyb3IxNiwgX2l0ZXJhdG9yRXJyb3IxNiwgX2l0ZXJhdG9yMTYsIF9zdGVwMTYsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE2ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxNiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNiA9IChfc3RlcDE2ID0gX2l0ZXJhdG9yMTYubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxNi52YWx1ZTtcblxuXHQgICAgICAgIGlmIChmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2ICYmIF9pdGVyYXRvcjE2W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxNltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxNikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNjtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwic2xpY2VcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHN0YXJ0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMCA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgc3RvcCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IEluZmluaXR5IDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNywgX2RpZEl0ZXJhdG9yRXJyb3IxNywgX2l0ZXJhdG9yRXJyb3IxNywgX2l0ZXJhdG9yMTcsIF9zdGVwMTcsIF9zdGVwMTckdmFsdWUsIHgsIGk7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEoc3RvcCA8IHN0YXJ0KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInBhcmFtZXRlciBgc3RvcGAgKD0gXCIgKyBzdG9wICsgXCIpIG11c3QgYmUgPj0gYHN0YXJ0YCAoPSBcIiArIHN0YXJ0ICsgXCIpXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTcgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE3ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA1O1xuXHQgICAgICAgIF9pdGVyYXRvcjE3ID0gX2dldEl0ZXJhdG9yKHRoaXMuZW51bWVyYXRlKCkpO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gKF9zdGVwMTcgPSBfaXRlcmF0b3IxNy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9zdGVwMTckdmFsdWUgPSBfc2xpY2VkVG9BcnJheShfc3RlcDE3LnZhbHVlLCAyKTtcblx0ICAgICAgICB4ID0gX3N0ZXAxNyR2YWx1ZVswXTtcblx0ICAgICAgICBpID0gX3N0ZXAxNyR2YWx1ZVsxXTtcblxuXHQgICAgICAgIGlmICghKGkgPCBzdGFydCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJjb250aW51ZVwiLCAxNyk7XG5cblx0ICAgICAgY2FzZSAxMzpcblx0ICAgICAgICBpZiAoIShpID49IHN0b3ApKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMjApO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3ICYmIF9pdGVyYXRvcjE3W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxN1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyOTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxNykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNztcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjkpO1xuXG5cdCAgICAgIGNhc2UgMzM6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNik7XG5cblx0ICAgICAgY2FzZSAzNDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAyMiwgMjYsIDM0XSwgWzI3LCwgMjksIDMzXV0pO1xuXHR9KSwgMik7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwic3ByZWFkTWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCwgX2RpZEl0ZXJhdG9yRXJyb3IxOCwgX2l0ZXJhdG9yRXJyb3IxOCwgX2l0ZXJhdG9yMTgsIF9zdGVwMTgsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE4ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxOCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IChfc3RlcDE4ID0gX2l0ZXJhdG9yMTgubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxOC52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gZm4uYXBwbHkodW5kZWZpbmVkLCBfdG9Db25zdW1hYmxlQXJyYXkoeCkpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE4ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE4ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggJiYgX2l0ZXJhdG9yMThbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE4W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE4KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE4O1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ0YWtlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG4pIHtcblx0ICB2YXIgaSwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5LCBfZGlkSXRlcmF0b3JFcnJvcjE5LCBfaXRlcmF0b3JFcnJvcjE5LCBfaXRlcmF0b3IxOSwgX3N0ZXAxOSwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoIShuIDwgMSkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgaSA9IDA7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE5ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxOSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNjtcblx0ICAgICAgICBfaXRlcmF0b3IxOSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IChfc3RlcDE5ID0gX2l0ZXJhdG9yMTkubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxOS52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBpZiAoISgrK2kgPj0gbikpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNyk7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg2KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE5ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE5ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgJiYgX2l0ZXJhdG9yMTlbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE5W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI2O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE5KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE5O1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNik7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDMxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzYsIDE5LCAyMywgMzFdLCBbMjQsLCAyNiwgMzBdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ0YWtlV2hpbGVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAsIF9kaWRJdGVyYXRvckVycm9yMjAsIF9pdGVyYXRvckVycm9yMjAsIF9pdGVyYXRvcjIwLCBfc3RlcDIwLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjAgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjAgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSAoX3N0ZXAyMCA9IF9pdGVyYXRvcjIwLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMjAudmFsdWU7XG5cblx0ICAgICAgICBpZiAoZm4oeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE0KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMDtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNjtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMCA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwICYmIF9pdGVyYXRvcjIwW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyMFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyMCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMDtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidGFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSkgOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxLCBfZGlkSXRlcmF0b3JFcnJvcjIxLCBfaXRlcmF0b3JFcnJvcjIxLCBfaXRlcmF0b3IyMSwgX3N0ZXAyMSwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjEgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIxID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjIxID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gKF9zdGVwMjEgPSBfaXRlcmF0b3IyMS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDIxLnZhbHVlO1xuXG5cdCAgICAgICAgZm4oeCk7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIxICYmIF9pdGVyYXRvcjIxW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyMVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyMSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwidW5pcXVlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzZWVuLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIsIF9kaWRJdGVyYXRvckVycm9yMjIsIF9pdGVyYXRvckVycm9yMjIsIF9pdGVyYXRvcjIyLCBfc3RlcDIyLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHNlZW4gPSBuZXcgX1NldCgpO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMiA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjIgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjIgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSAoX3N0ZXAyMiA9IF9pdGVyYXRvcjIyLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMjIudmFsdWU7XG5cblx0ICAgICAgICBpZiAoc2Vlbi5oYXMoeCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMTtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIHNlZW4uYWRkKHgpO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE3OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNztcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNCk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMiA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyICYmIF9pdGVyYXRvcjIyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyMltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyMikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI3O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMjtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjQpO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICBzZWVuLmNsZWFyKCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s0LCAxNywgMjEsIDI5XSwgWzIyLCwgMjQsIDI4XV0pO1xuXHR9KSk7XG5cblx0dmFyIF96aXAgPSByZXdyYXAoX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoaXRlcmFibGVzKSB7XG5cdCAgdmFyIGxvbmdlc3QgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciBpdGVycywgbnVtSXRlcnMsIG51bUZpbmlzaGVkLCBmaW5pc2hlZCwgemlwcGVkLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMsIF9kaWRJdGVyYXRvckVycm9yMjMsIF9pdGVyYXRvckVycm9yMjMsIF9pdGVyYXRvcjIzLCBfc3RlcDIzLCBpdCwgX2l0JG5leHQsIHZhbHVlLCBkb25lO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmIChpdGVyYWJsZXMubGVuZ3RoKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIGl0ZXJzID0gaXRlcmFibGVzLm1hcChnZXRJdGVyYXRvcik7XG5cdCAgICAgICAgbnVtSXRlcnMgPSBpdGVyYWJsZXMubGVuZ3RoO1xuXHQgICAgICAgIG51bUZpbmlzaGVkID0gMDtcblx0ICAgICAgICBmaW5pc2hlZCA9IGZhbHNlO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBpZiAoZmluaXNoZWQpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0NDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHppcHBlZCA9IFtdO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjMgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDExO1xuXHQgICAgICAgIF9pdGVyYXRvcjIzID0gX2dldEl0ZXJhdG9yKGl0ZXJzKTtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSAoX3N0ZXAyMyA9IF9pdGVyYXRvcjIzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaXQgPSBfc3RlcDIzLnZhbHVlO1xuXHQgICAgICAgIF9pdCRuZXh0ID0gaXQubmV4dCgpO1xuXHQgICAgICAgIHZhbHVlID0gX2l0JG5leHQudmFsdWU7XG5cdCAgICAgICAgZG9uZSA9IF9pdCRuZXh0LmRvbmU7XG5cblx0ICAgICAgICBpZiAoIWRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChsb25nZXN0KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgaWYgKCsrbnVtRmluaXNoZWQgPT0gbnVtSXRlcnMpIHtcblx0ICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMjpcblx0ICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgLy8gTGVhdmUgYSBob2xlIGluIHRoZSBhcnJheSBzbyB0aGF0IHlvdSBjYW4gZGlzdGluZ3Vpc2ggYW4gaXRlcmFibGVcblx0ICAgICAgICAgIC8vIHRoYXQncyBkb25lICh2aWEgYGluZGV4IGluIGFycmF5ID09IGZhbHNlYCkgZnJvbSBhbiBpdGVyYWJsZVxuXHQgICAgICAgICAgLy8geWllbGRpbmcgYHVuZGVmaW5lZGAuXG5cdCAgICAgICAgICB6aXBwZWQubGVuZ3RoKys7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHppcHBlZC5wdXNoKHZhbHVlKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjMgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMTEpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjMgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDMyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzM7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyAmJiBfaXRlcmF0b3IyM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjNbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzU7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMjMpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjM7XG5cblx0ICAgICAgY2FzZSAzODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDM1KTtcblxuXHQgICAgICBjYXNlIDM5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMzIpO1xuXG5cdCAgICAgIGNhc2UgNDA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQyO1xuXHQgICAgICAgIHJldHVybiB6aXBwZWQ7XG5cblx0ICAgICAgY2FzZSA0Mjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDQ0OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzExLCAyOCwgMzIsIDQwXSwgWzMzLCwgMzUsIDM5XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiemlwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIGZvciAodmFyIF9sZW43ID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjcpLCBfa2V5NyA9IDA7IF9rZXk3IDwgX2xlbjc7IF9rZXk3KyspIHtcblx0ICAgIGl0ZXJhYmxlc1tfa2V5N10gPSBhcmd1bWVudHNbX2tleTddO1xuXHQgIH1cblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKGl0ZXJhYmxlcyksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcInppcExvbmdlc3RcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgZm9yICh2YXIgX2xlbjggPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuOCksIF9rZXk4ID0gMDsgX2tleTggPCBfbGVuODsgX2tleTgrKykge1xuXHQgICAgaXRlcmFibGVzW19rZXk4XSA9IGFyZ3VtZW50c1tfa2V5OF07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoaXRlcmFibGVzLCB0cnVlKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiemlwV2l0aFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIGZvciAodmFyIF9sZW45ID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlcmFibGVzID0gQXJyYXkoX2xlbjkgPiAxID8gX2xlbjkgLSAxIDogMCksIF9rZXk5ID0gMTsgX2tleTkgPCBfbGVuOTsgX2tleTkrKykge1xuXHQgICAgaXRlcmFibGVzW19rZXk5IC0gMV0gPSBhcmd1bWVudHNbX2tleTldO1xuXHQgIH1cblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKGl0ZXJhYmxlcykuc3ByZWFkTWFwKGZuKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0Lypcblx0ICogRnVuY3Rpb25zIHRoYXQgZm9yY2UgaXRlcmF0aW9uIHRvIGNvbXBsZXRpb24gYW5kIHJldHVybiBhIHZhbHVlLlxuXHQgKi9cblxuXHQvLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHdlIHdpbGwgYmxvY2sgdGhlIG1haW4gdGhyZWFkIGF0IGEgdGltZVxuXHQvLyB3aGlsZSBpbiBgYXN5bmNFYWNoYC5cblx0d3UuTUFYX0JMT0NLID0gMTU7XG5cdC8vIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHlpZWxkIHRvIHRoZSBtYWluIHRocmVhZCBiZXR3ZWVuIGJ1cnN0cyBvZlxuXHQvLyB3b3JrLlxuXHR3dS5USU1FT1VUID0gMTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJhc3luY0VhY2hcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIG1heEJsb2NrID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gd3UuTUFYX0JMT0NLIDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciB0aW1lb3V0ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gd3UuVElNRU9VVCA6IGFyZ3VtZW50c1syXTtcblxuXHQgIHZhciBpdGVyID0gZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICByZXR1cm4gbmV3IF9Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgIChmdW5jdGlvbiBsb29wKCkge1xuXHQgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuXG5cdCAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSB0cnVlO1xuXHQgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNCA9IGZhbHNlO1xuXHQgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyNCA9IHVuZGVmaW5lZDtcblxuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjI0ID0gX2dldEl0ZXJhdG9yKGl0ZXIpLCBfc3RlcDI0OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IChfc3RlcDI0ID0gX2l0ZXJhdG9yMjQubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gdHJ1ZSkge1xuXHQgICAgICAgICAgdmFyIHggPSBfc3RlcDI0LnZhbHVlO1xuXG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBmbih4KTtcblx0ICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICAgICAgcmVqZWN0KGUpO1xuXHQgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnQgPiBtYXhCbG9jaykge1xuXHQgICAgICAgICAgICBzZXRUaW1lb3V0KGxvb3AsIHRpbWVvdXQpO1xuXHQgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjI0ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjI0ID0gZXJyO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCAmJiBfaXRlcmF0b3IyNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgICBfaXRlcmF0b3IyNFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNCkge1xuXHQgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI0O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIHJlc29sdmUoKTtcblx0ICAgIH0pKCk7XG5cdCAgfSk7XG5cdH0sIDMpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImV2ZXJ5XCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI1ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjUgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjUgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjU7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ID0gKF9zdGVwMjUgPSBfaXRlcmF0b3IyNS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyNS52YWx1ZTtcblxuXHQgICAgICBpZiAoIWZuKHgpKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI1ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjUgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI1ICYmIF9pdGVyYXRvcjI1W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjVbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjUpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI1O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcmV0dXJuIHRydWU7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImZpbmRcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjYgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyNiA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyNiA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyNjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgPSAoX3N0ZXAyNiA9IF9pdGVyYXRvcjI2Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI2LnZhbHVlO1xuXG5cdCAgICAgIGlmIChmbih4KSkge1xuXHQgICAgICAgIHJldHVybiB4O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI2ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjYgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ICYmIF9pdGVyYXRvcjI2W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjZbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjYpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI2O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJmb3JFYWNoXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI3ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjcgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjcgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjc7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI3ID0gKF9zdGVwMjcgPSBfaXRlcmF0b3IyNy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyNy52YWx1ZTtcblxuXHQgICAgICBmbih4KTtcblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjcgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyNyA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgJiYgX2l0ZXJhdG9yMjdbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyN1tcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNykge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH0pO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImhhc1wiLCBmdW5jdGlvbiAodGhpbmcpIHtcblx0ICByZXR1cm4gdGhpcy5zb21lKGZ1bmN0aW9uICh4KSB7XG5cdCAgICByZXR1cm4geCA9PT0gdGhpbmc7XG5cdCAgfSk7XG5cdH0pO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInJlZHVjZVwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgaW5pdGlhbCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcblxuXHQgIHZhciB2YWwgPSBpbml0aWFsO1xuXHQgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IHRydWU7XG5cdCAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyOCA9IGZhbHNlO1xuXHQgICAgdmFyIF9pdGVyYXRvckVycm9yMjggPSB1bmRlZmluZWQ7XG5cblx0ICAgIHRyeSB7XG5cdCAgICAgIGZvciAodmFyIF9pdGVyYXRvcjI4ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI4OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCA9IChfc3RlcDI4ID0gX2l0ZXJhdG9yMjgubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gdHJ1ZSkge1xuXHQgICAgICAgIHZhciB4ID0gX3N0ZXAyOC52YWx1ZTtcblxuXHQgICAgICAgIHZhbCA9IHg7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICBfZGlkSXRlcmF0b3JFcnJvcjI4ID0gdHJ1ZTtcblx0ICAgICAgX2l0ZXJhdG9yRXJyb3IyOCA9IGVycjtcblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggJiYgX2l0ZXJhdG9yMjhbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjI4W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI4KSB7XG5cdCAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI4O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgPSB0cnVlO1xuXHQgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI5ID0gZmFsc2U7XG5cdCAgdmFyIF9pdGVyYXRvckVycm9yMjkgPSB1bmRlZmluZWQ7XG5cblx0ICB0cnkge1xuXHQgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjkgPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjk7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ID0gKF9zdGVwMjkgPSBfaXRlcmF0b3IyOS5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgPSB0cnVlKSB7XG5cdCAgICAgIHZhciB4ID0gX3N0ZXAyOS52YWx1ZTtcblxuXHQgICAgICB2YWwgPSBmbih2YWwsIHgpO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyOSA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI5ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSAmJiBfaXRlcmF0b3IyOVtcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI5W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI5KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyOTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIHJldHVybiB2YWw7XG5cdH0sIDIpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInNvbWVcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMzAgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IzMCA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IzMCA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAzMDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgPSAoX3N0ZXAzMCA9IF9pdGVyYXRvcjMwLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDMwLnZhbHVlO1xuXG5cdCAgICAgIGlmIChmbih4KSkge1xuXHQgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjMwID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMzAgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwICYmIF9pdGVyYXRvcjMwW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMzBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMzApIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjMwO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGZhbHNlO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJ0b0FycmF5XCIsIGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheSh0aGlzKSk7XG5cdH0pO1xuXG5cdC8qXG5cdCAqIE1ldGhvZHMgdGhhdCByZXR1cm4gYW4gYXJyYXkgb2YgaXRlcmFibGVzLlxuXHQgKi9cblxuXHR2YXIgTUFYX0NBQ0hFID0gNTAwO1xuXG5cdHZhciBfdGVlID0gcmV3cmFwKF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGl0ZXJhdG9yLCBjYWNoZSkge1xuXHQgIHZhciBpdGVtcywgaW5kZXgsIF9pdGVyYXRvciRuZXh0LCBkb25lLCB2YWx1ZTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpdGVtcyA9IGNhY2hlLml0ZW1zO1xuXHQgICAgICAgIGluZGV4ID0gMDtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gaXRlbXMubGVuZ3RoKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yJG5leHQgPSBpdGVyYXRvci5uZXh0KCk7XG5cdCAgICAgICAgZG9uZSA9IF9pdGVyYXRvciRuZXh0LmRvbmU7XG5cdCAgICAgICAgdmFsdWUgPSBfaXRlcmF0b3IkbmV4dC52YWx1ZTtcblxuXHQgICAgICAgIGlmICghZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGNhY2hlLnJldHVybmVkID09PSBNSVNTSU5HKSB7XG5cdCAgICAgICAgICBjYWNoZS5yZXR1cm5lZCA9IHZhbHVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMjUpO1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiBpdGVtc1tpbmRleCsrXSA9IHZhbHVlO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IGNhY2hlLnRhaWwpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjE7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB2YWx1ZSA9IGl0ZW1zW2luZGV4XTtcblxuXHQgICAgICAgIGlmIChpbmRleCA9PT0gTUFYX0NBQ0hFKSB7XG5cdCAgICAgICAgICBpdGVtcyA9IGNhY2hlLml0ZW1zID0gaXRlbXMuc2xpY2UoaW5kZXgpO1xuXHQgICAgICAgICAgaW5kZXggPSAwO1xuXHQgICAgICAgICAgY2FjaGUudGFpbCA9IDA7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGl0ZW1zW2luZGV4XSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIGNhY2hlLnRhaWwgPSArK2luZGV4O1xuXHQgICAgICAgIH1cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTk7XG5cdCAgICAgICAgcmV0dXJuIHZhbHVlO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIzO1xuXHQgICAgICAgIHJldHVybiBpdGVtc1tpbmRleCsrXTtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cblx0ICAgICAgICBpZiAoY2FjaGUudGFpbCA9PT0gaW5kZXgpIHtcblx0ICAgICAgICAgIGl0ZW1zLmxlbmd0aCA9IDA7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiLCBjYWNoZS5yZXR1cm5lZCk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblx0X3RlZS5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwidGVlXCIsIGZ1bmN0aW9uICgpIHtcblx0ICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDIgOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgaXRlcmFibGVzID0gbmV3IEFycmF5KG4pO1xuXHQgIHZhciBjYWNoZSA9IHsgdGFpbDogMCwgaXRlbXM6IFtdLCByZXR1cm5lZDogTUlTU0lORyB9O1xuXG5cdCAgd2hpbGUgKG4tLSkge1xuXHQgICAgaXRlcmFibGVzW25dID0gX3RlZSh0aGlzLCBjYWNoZSk7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGl0ZXJhYmxlcztcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwidW56aXBcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHJldHVybiB0aGlzLnRlZShuKS5tYXAoZnVuY3Rpb24gKGl0ZXIsIGkpIHtcblx0ICAgIHJldHVybiBpdGVyLnBsdWNrKGkpO1xuXHQgIH0pO1xuXHR9LCAxKTtcblxuXHQvKlxuXHQgKiBOdW1iZXIgb2YgY2hhbWJlcnMuXG5cdCAqL1xuXG5cdHd1LnRhbmcgPSB7IGNsYW46IDM2IH07XG5cblx0Ly8gV2UgZG9uJ3QgaGF2ZSBhIGNhY2hlZCBpdGVtIGZvciB0aGlzIGluZGV4LCB3ZSBuZWVkIHRvIGZvcmNlIGl0c1xuXHQvLyBldmFsdWF0aW9uLlxuXG5cdC8vIElmIHdlIGFyZSB0aGUgbGFzdCBpdGVyYXRvciB0byB1c2UgYSBjYWNoZWQgdmFsdWUsIGNsZWFuIHVwIGFmdGVyXG5cdC8vIG91cnNlbHZlcy5cblxuXHQvLyBXZSBoYXZlIGFuIGl0ZW0gaW4gdGhlIGNhY2hlIGZvciB0aGlzIGluZGV4LCBzbyB5aWVsZCBpdC5cblxuLyoqKi8gfSxcbi8qIDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfQXJyYXkkZnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oMilbXCJkZWZhdWx0XCJdO1xuXG5cdGV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZnVuY3Rpb24gKGFycikge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcblx0ICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cblx0ICAgIHJldHVybiBhcnIyO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gX0FycmF5JGZyb20oYXJyKTtcblx0ICB9XG5cdH07XG5cblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXygzKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXygyNik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuQXJyYXkuZnJvbTtcblxuLyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICRhdCAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpKHRydWUpO1xuXG5cdC8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4KShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbihpdGVyYXRlZCl7XG5cdCAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuXHQgIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG5cdC8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcblx0fSwgZnVuY3Rpb24oKXtcblx0ICB2YXIgTyAgICAgPSB0aGlzLl90XG5cdCAgICAsIGluZGV4ID0gdGhpcy5faVxuXHQgICAgLCBwb2ludDtcblx0ICBpZihpbmRleCA+PSBPLmxlbmd0aClyZXR1cm4ge3ZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWV9O1xuXHQgIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcblx0ICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcblx0ICByZXR1cm4ge3ZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2V9O1xuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHRydWUgIC0+IFN0cmluZyNhdFxuXHQvLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcblx0dmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNilcblx0ICAsIGRlZmluZWQgICA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oVE9fU1RSSU5HKXtcblx0ICByZXR1cm4gZnVuY3Rpb24odGhhdCwgcG9zKXtcblx0ICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpXG5cdCAgICAgICwgaSA9IHRvSW50ZWdlcihwb3MpXG5cdCAgICAgICwgbCA9IHMubGVuZ3RoXG5cdCAgICAgICwgYSwgYjtcblx0ICAgIGlmKGkgPCAwIHx8IGkgPj0gbClyZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG5cdCAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuXHQgICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbFxuXHQgICAgICB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcblx0ICAgICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuXHQgICAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyA3LjEuNCBUb0ludGVnZXJcblx0dmFyIGNlaWwgID0gTWF0aC5jZWlsXG5cdCAgLCBmbG9vciA9IE1hdGguZmxvb3I7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBMSUJSQVJZICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpXG5cdCAgLCAkZGVmICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgJHJlZGVmICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMylcblx0ICAsIGhpZGUgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBoYXMgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgU1lNQk9MX0lURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIEl0ZXJhdG9ycyAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpXG5cdCAgLCBCVUdHWSAgICAgICAgICAgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSkgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxuXHQgICwgRkZfSVRFUkFUT1IgICAgID0gJ0BAaXRlcmF0b3InXG5cdCAgLCBLRVlTICAgICAgICAgICAgPSAna2V5cydcblx0ICAsIFZBTFVFUyAgICAgICAgICA9ICd2YWx1ZXMnO1xuXHR2YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9O1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEJhc2UsIE5BTUUsIENvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFKXtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cdCAgdmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uKGtpbmQpe1xuXHQgICAgc3dpdGNoKGtpbmQpe1xuXHQgICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG5cdCAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG5cdCAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG5cdCAgfTtcblx0ICB2YXIgVEFHICAgICAgPSBOQU1FICsgJyBJdGVyYXRvcidcblx0ICAgICwgcHJvdG8gICAgPSBCYXNlLnByb3RvdHlwZVxuXHQgICAgLCBfbmF0aXZlICA9IHByb3RvW1NZTUJPTF9JVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF1cblx0ICAgICwgX2RlZmF1bHQgPSBfbmF0aXZlIHx8IGNyZWF0ZU1ldGhvZChERUZBVUxUKVxuXHQgICAgLCBtZXRob2RzLCBrZXk7XG5cdCAgLy8gRml4IG5hdGl2ZVxuXHQgIGlmKF9uYXRpdmUpe1xuXHQgICAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZ2V0UHJvdG8oX2RlZmF1bHQuY2FsbChuZXcgQmFzZSkpO1xuXHQgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG5cdCAgICAvLyBGRiBmaXhcblx0ICAgIGlmKCFMSUJSQVJZICYmIGhhcyhwcm90bywgRkZfSVRFUkFUT1IpKWhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIFNZTUJPTF9JVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG5cdCAgfVxuXHQgIC8vIERlZmluZSBpdGVyYXRvclxuXHQgIGlmKCFMSUJSQVJZIHx8IEZPUkNFKWhpZGUocHJvdG8sIFNZTUJPTF9JVEVSQVRPUiwgX2RlZmF1bHQpO1xuXHQgIC8vIFBsdWcgZm9yIGxpYnJhcnlcblx0ICBJdGVyYXRvcnNbTkFNRV0gPSBfZGVmYXVsdDtcblx0ICBJdGVyYXRvcnNbVEFHXSAgPSByZXR1cm5UaGlzO1xuXHQgIGlmKERFRkFVTFQpe1xuXHQgICAgbWV0aG9kcyA9IHtcblx0ICAgICAga2V5czogICAgSVNfU0VUICAgICAgICAgICAgPyBfZGVmYXVsdCA6IGNyZWF0ZU1ldGhvZChLRVlTKSxcblx0ICAgICAgdmFsdWVzOiAgREVGQVVMVCA9PSBWQUxVRVMgPyBfZGVmYXVsdCA6IGNyZWF0ZU1ldGhvZChWQUxVRVMpLFxuXHQgICAgICBlbnRyaWVzOiBERUZBVUxUICE9IFZBTFVFUyA/IF9kZWZhdWx0IDogY3JlYXRlTWV0aG9kKCdlbnRyaWVzJylcblx0ICAgIH07XG5cdCAgICBpZihGT1JDRSlmb3Ioa2V5IGluIG1ldGhvZHMpe1xuXHQgICAgICBpZighKGtleSBpbiBwcm90bykpJHJlZGVmKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG5cdCAgICB9IGVsc2UgJGRlZigkZGVmLlAgKyAkZGVmLkYgKiBCVUdHWSwgTkFNRSwgbWV0aG9kcyk7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgY29yZSAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMilcblx0ICAsIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXHR2YXIgY3R4ID0gZnVuY3Rpb24oZm4sIHRoYXQpe1xuXHQgIHJldHVybiBmdW5jdGlvbigpe1xuXHQgICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG5cdCAgfTtcblx0fTtcblx0dmFyICRkZWYgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCBzb3VyY2Upe1xuXHQgIHZhciBrZXksIG93biwgb3V0LCBleHBcblx0ICAgICwgaXNHbG9iYWwgPSB0eXBlICYgJGRlZi5HXG5cdCAgICAsIGlzUHJvdG8gID0gdHlwZSAmICRkZWYuUFxuXHQgICAgLCB0YXJnZXQgICA9IGlzR2xvYmFsID8gZ2xvYmFsIDogdHlwZSAmICRkZWYuU1xuXHQgICAgICAgID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuXHQgICAgLCBleHBvcnRzICA9IGlzR2xvYmFsID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG5cdCAgaWYoaXNHbG9iYWwpc291cmNlID0gbmFtZTtcblx0ICBmb3Ioa2V5IGluIHNvdXJjZSl7XG5cdCAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcblx0ICAgIG93biA9ICEodHlwZSAmICRkZWYuRikgJiYgdGFyZ2V0ICYmIGtleSBpbiB0YXJnZXQ7XG5cdCAgICBpZihvd24gJiYga2V5IGluIGV4cG9ydHMpY29udGludWU7XG5cdCAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuXHQgICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcblx0ICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuXHQgICAgaWYoaXNHbG9iYWwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicpZXhwID0gc291cmNlW2tleV07XG5cdCAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuXHQgICAgZWxzZSBpZih0eXBlICYgJGRlZi5CICYmIG93billeHAgPSBjdHgob3V0LCBnbG9iYWwpO1xuXHQgICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcblx0ICAgIGVsc2UgaWYodHlwZSAmICRkZWYuVyAmJiB0YXJnZXRba2V5XSA9PSBvdXQpIWZ1bmN0aW9uKEMpe1xuXHQgICAgICBleHAgPSBmdW5jdGlvbihwYXJhbSl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBDID8gbmV3IEMocGFyYW0pIDogQyhwYXJhbSk7XG5cdCAgICAgIH07XG5cdCAgICAgIGV4cFtQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuXHQgICAgfShvdXQpO1xuXHQgICAgZWxzZSBleHAgPSBpc1Byb3RvICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuXHQgICAgLy8gZXhwb3J0XG5cdCAgICBleHBvcnRzW2tleV0gPSBleHA7XG5cdCAgICBpZihpc1Byb3RvKShleHBvcnRzW1BST1RPVFlQRV0gfHwgKGV4cG9ydHNbUFJPVE9UWVBFXSA9IHt9KSlba2V5XSA9IG91dDtcblx0ICB9XG5cdH07XG5cdC8vIHR5cGUgYml0bWFwXG5cdCRkZWYuRiA9IDE7ICAvLyBmb3JjZWRcblx0JGRlZi5HID0gMjsgIC8vIGdsb2JhbFxuXHQkZGVmLlMgPSA0OyAgLy8gc3RhdGljXG5cdCRkZWYuUCA9IDg7ICAvLyBwcm90b1xuXHQkZGVmLkIgPSAxNjsgLy8gYmluZFxuXHQkZGVmLlcgPSAzMjsgLy8gd3JhcFxuXHRtb2R1bGUuZXhwb3J0cyA9ICRkZWY7XG5cbi8qKiovIH0sXG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcblx0dmFyIFVOREVGSU5FRCA9ICd1bmRlZmluZWQnO1xuXHR2YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9IFVOREVGSU5FRCAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG5cdCAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSBVTkRFRklORUQgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0aWYodHlwZW9mIF9fZyA9PSAnbnVtYmVyJylfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuLyoqKi8gfSxcbi8qIDEyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0ge3ZlcnNpb246ICcxLjIuMCd9O1xuXHRpZih0eXBlb2YgX19lID09ICdudW1iZXInKV9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuLyoqKi8gfSxcbi8qIDEzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuXG4vKioqLyB9LFxuLyogMTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSA/IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG5cdCAgcmV0dXJuICQuc2V0RGVzYyhvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xuXHR9IDogZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKXtcblx0ICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuXHQgIHJldHVybiBvYmplY3Q7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyICRPYmplY3QgPSBPYmplY3Q7XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGNyZWF0ZTogICAgICRPYmplY3QuY3JlYXRlLFxuXHQgIGdldFByb3RvOiAgICRPYmplY3QuZ2V0UHJvdG90eXBlT2YsXG5cdCAgaXNFbnVtOiAgICAge30ucHJvcGVydHlJc0VudW1lcmFibGUsXG5cdCAgZ2V0RGVzYzogICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG5cdCAgc2V0RGVzYzogICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eSxcblx0ICBzZXREZXNjczogICAkT2JqZWN0LmRlZmluZVByb3BlcnRpZXMsXG5cdCAgZ2V0S2V5czogICAgJE9iamVjdC5rZXlzLFxuXHQgIGdldE5hbWVzOiAgICRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxcblx0ICBnZXRTeW1ib2xzOiAkT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxcblx0ICBlYWNoOiAgICAgICBbXS5mb3JFYWNoXG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihiaXRtYXAsIHZhbHVlKXtcblx0ICByZXR1cm4ge1xuXHQgICAgZW51bWVyYWJsZSAgOiAhKGJpdG1hcCAmIDEpLFxuXHQgICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuXHQgICAgd3JpdGFibGUgICAgOiAhKGJpdG1hcCAmIDQpLFxuXHQgICAgdmFsdWUgICAgICAgOiB2YWx1ZVxuXHQgIH07XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxuXHRtb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KShmdW5jdGlvbigpe1xuXHQgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogMTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZXhlYyl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiAhIWV4ZWMoKTtcblx0ICB9IGNhdGNoKGUpe1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuXHQgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBzdG9yZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKSgnd2tzJylcblx0ICAsIFN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpLlN5bWJvbDtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKXtcblx0ICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cblx0ICAgIFN5bWJvbCAmJiBTeW1ib2xbbmFtZV0gfHwgKFN5bWJvbCB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKSkoJ1N5bWJvbC4nICsgbmFtZSkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXydcblx0ICAsIHN0b3JlICA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuXHQgIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciBpZCA9IDBcblx0ICAsIHB4ID0gTWF0aC5yYW5kb20oKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuXHQgIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLyoqKi8gfSxcbi8qIDI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cblx0Ly8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcblx0X193ZWJwYWNrX3JlcXVpcmVfXygxNCkoSXRlcmF0b3JQcm90b3R5cGUsIF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpLCBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCl7XG5cdCAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gJC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHtuZXh0OiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KSgxLG5leHQpfSk7XG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGhhcyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KVxuXHQgICwgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBUQUcgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3RvU3RyaW5nVGFnJyk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgdGFnLCBzdGF0KXtcblx0ICBpZihpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKWhpZGUoaXQsIFRBRywgdGFnKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDI2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBjdHggICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCAkZGVmICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCB0b09iamVjdCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpXG5cdCAgLCBjYWxsICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzApXG5cdCAgLCBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpXG5cdCAgLCB0b0xlbmd0aCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpXG5cdCAgLCBnZXRJdGVyRm4gICA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KShmdW5jdGlvbihpdGVyKXsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcblx0ICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG5cdCAgZnJvbTogZnVuY3Rpb24gZnJvbShhcnJheUxpa2UvKiwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQqLyl7XG5cdCAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KGFycmF5TGlrZSlcblx0ICAgICAgLCBDICAgICAgID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheVxuXHQgICAgICAsIG1hcGZuICAgPSBhcmd1bWVudHNbMV1cblx0ICAgICAgLCBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZFxuXHQgICAgICAsIGluZGV4ICAgPSAwXG5cdCAgICAgICwgaXRlckZuICA9IGdldEl0ZXJGbihPKVxuXHQgICAgICAsIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcblx0ICAgIGlmKG1hcHBpbmcpbWFwZm4gPSBjdHgobWFwZm4sIGFyZ3VtZW50c1syXSwgMik7XG5cdCAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2Vcblx0ICAgIGlmKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKXtcblx0ICAgICAgZm9yKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4Kyspe1xuXHQgICAgICAgIHJlc3VsdFtpbmRleF0gPSBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuXHQgICAgICBmb3IocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4Kyspe1xuXHQgICAgICAgIHJlc3VsdFtpbmRleF0gPSBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG5cdCAgICByZXR1cm4gcmVzdWx0O1xuXHQgIH1cblx0fSk7XG5cblxuLyoqKi8gfSxcbi8qIDI3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcblx0dmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuXHQgIGFGdW5jdGlvbihmbik7XG5cdCAgaWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjtcblx0ICBzd2l0Y2gobGVuZ3RoKXtcblx0ICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uKGEpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcblx0ICAgIH07XG5cdCAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG5cdCAgICB9O1xuXHQgICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24oYSwgYiwgYyl7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuXHQgICAgfTtcblx0ICB9XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKC8qIC4uLmFyZ3MgKi8pe1xuXHQgICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDI4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZih0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG5cdHZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxuXHR2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcblx0ICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuXHQgICAgaWYocmV0ICE9PSB1bmRlZmluZWQpYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcblx0ICAgIHRocm93IGU7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZighaXNPYmplY3QoaXQpKXRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5cdHZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKVxuXHQgICwgSVRFUkFUT1IgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiAoSXRlcmF0b3JzLkFycmF5IHx8IEFycmF5LnByb3RvdHlwZVtJVEVSQVRPUl0pID09PSBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyA3LjEuMTUgVG9MZW5ndGhcblx0dmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNilcblx0ICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxuXHR9O1xuXG4vKioqLyB9LFxuLyogMzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBjbGFzc29mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgSVRFUkFUT1IgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKGl0ICE9IHVuZGVmaW5lZClyZXR1cm4gaXRbSVRFUkFUT1JdIHx8IGl0WydAQGl0ZXJhdG9yJ10gfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxuXHR2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNylcblx0ICAsIFRBRyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCd0b1N0cmluZ1RhZycpXG5cdCAgLy8gRVMzIHdyb25nIGhlcmVcblx0ICAsIEFSRyA9IGNvZihmdW5jdGlvbigpeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBPLCBULCBCO1xuXHQgIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuXHQgICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG5cdCAgICA6IHR5cGVvZiAoVCA9IChPID0gT2JqZWN0KGl0KSlbVEFHXSkgPT0gJ3N0cmluZycgPyBUXG5cdCAgICAvLyBidWlsdGluVGFnIGNhc2Vcblx0ICAgIDogQVJHID8gY29mKE8pXG5cdCAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG5cdCAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBTWU1CT0xfSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgU0FGRV9DTE9TSU5HICAgID0gZmFsc2U7XG5cdHRyeSB7XG5cdCAgdmFyIHJpdGVyID0gWzddW1NZTUJPTF9JVEVSQVRPUl0oKTtcblx0ICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbigpeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuXHQgIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uKCl7IHRocm93IDI7IH0pO1xuXHR9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZXhlYyl7XG5cdCAgaWYoIVNBRkVfQ0xPU0lORylyZXR1cm4gZmFsc2U7XG5cdCAgdmFyIHNhZmUgPSBmYWxzZTtcblx0ICB0cnkge1xuXHQgICAgdmFyIGFyciAgPSBbN11cblx0ICAgICAgLCBpdGVyID0gYXJyW1NZTUJPTF9JVEVSQVRPUl0oKTtcblx0ICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uKCl7IHNhZmUgPSB0cnVlOyB9O1xuXHQgICAgYXJyW1NZTUJPTF9JVEVSQVRPUl0gPSBmdW5jdGlvbigpeyByZXR1cm4gaXRlcjsgfTtcblx0ICAgIGV4ZWMoYXJyKTtcblx0ICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG5cdCAgcmV0dXJuIHNhZmU7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9nZXRJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNDApW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX2lzSXRlcmFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KVtcImRlZmF1bHRcIl07XG5cblx0ZXhwb3J0c1tcImRlZmF1bHRcIl0gPSAoZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIHNsaWNlSXRlcmF0b3IoYXJyLCBpKSB7XG5cdCAgICB2YXIgX2FyciA9IFtdO1xuXHQgICAgdmFyIF9uID0gdHJ1ZTtcblx0ICAgIHZhciBfZCA9IGZhbHNlO1xuXHQgICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG5cdCAgICB0cnkge1xuXHQgICAgICBmb3IgKHZhciBfaSA9IF9nZXRJdGVyYXRvcihhcnIpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuXHQgICAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7XG5cblx0ICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICBfZCA9IHRydWU7XG5cdCAgICAgIF9lID0gZXJyO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgcmV0dXJuIF9hcnI7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIGZ1bmN0aW9uIChhcnIsIGkpIHtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcblx0ICAgICAgcmV0dXJuIGFycjtcblx0ICAgIH0gZWxzZSBpZiAoX2lzSXRlcmFibGUoT2JqZWN0KGFycikpKSB7XG5cdCAgICAgIHJldHVybiBzbGljZUl0ZXJhdG9yKGFyciwgaSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZVwiKTtcblx0ICAgIH1cblx0ICB9O1xuXHR9KSgpO1xuXG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiA0MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpO1xuXG4vKioqLyB9LFxuLyogNDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNDMpO1xuXHR2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdEl0ZXJhdG9ycy5Ob2RlTGlzdCA9IEl0ZXJhdG9ycy5IVE1MQ29sbGVjdGlvbiA9IEl0ZXJhdG9ycy5BcnJheTtcblxuLyoqKi8gfSxcbi8qIDQzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBzZXRVbnNjb3BlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NClcblx0ICAsIHN0ZXAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ1KVxuXHQgICwgSXRlcmF0b3JzICA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpXG5cdCAgLCB0b0lPYmplY3QgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cblx0Ly8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuXHQvLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuXHQvLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG5cdC8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG5cdCAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuXHQgIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG5cdCAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcblx0Ly8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG5cdH0sIGZ1bmN0aW9uKCl7XG5cdCAgdmFyIE8gICAgID0gdGhpcy5fdFxuXHQgICAgLCBraW5kICA9IHRoaXMuX2tcblx0ICAgICwgaW5kZXggPSB0aGlzLl9pKys7XG5cdCAgaWYoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpe1xuXHQgICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcblx0ICAgIHJldHVybiBzdGVwKDEpO1xuXHQgIH1cblx0ICBpZihraW5kID09ICdrZXlzJyAgKXJldHVybiBzdGVwKDAsIGluZGV4KTtcblx0ICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcblx0ICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG5cdH0sICd2YWx1ZXMnKTtcblxuXHQvLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5cdEl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cblx0c2V0VW5zY29wZSgna2V5cycpO1xuXHRzZXRVbnNjb3BlKCd2YWx1ZXMnKTtcblx0c2V0VW5zY29wZSgnZW50cmllcycpO1xuXG4vKioqLyB9LFxuLyogNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfTtcblxuLyoqKi8gfSxcbi8qIDQ1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGRvbmUsIHZhbHVlKXtcblx0ICByZXR1cm4ge3ZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcclxuXHR2YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDcpXHJcblx0ICAsIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xyXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xyXG5cdCAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xyXG5cdH07XG5cbi8qKiovIH0sXG4vKiA0NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaW5kZXhlZCBvYmplY3QsIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xuXHR2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7XG5cdG1vZHVsZS5leHBvcnRzID0gMCBpbiBPYmplY3QoJ3onKSA/IE9iamVjdCA6IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIGdldCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIGl0ZXJGbiA9IGdldChpdCk7XG5cdCAgaWYodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuXHQgIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg1MCksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDUwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcblxuLyoqKi8gfSxcbi8qIDUxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgY2xhc3NvZiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsIElURVJBVE9SICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciBPID0gT2JqZWN0KGl0KTtcblx0ICByZXR1cm4gSVRFUkFUT1IgaW4gTyB8fCAnQEBpdGVyYXRvcicgaW4gTyB8fCBJdGVyYXRvcnMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihPKSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA1MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDUzKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpO1xuXG4vKioqLyB9LFxuLyogNTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsvLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmVcblx0Ly8ga2VwdCBpZGVudGljYWwgdG8gdGhlIHdheSBpdCBpcyBvYnRhaW5lZCBpbiBydW50aW1lLmpzXG5cdHZhciBnID1cblx0ICB0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDpcblx0ICB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDpcblx0ICB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOiB0aGlzO1xuXG5cdC8vIFVzZSBgZ2V0T3duUHJvcGVydHlOYW1lc2AgYmVjYXVzZSBub3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgY2FsbGluZ1xuXHQvLyBgaGFzT3duUHJvcGVydHlgIG9uIHRoZSBnbG9iYWwgYHNlbGZgIG9iamVjdCBpbiBhIHdvcmtlci4gU2VlICMxODMuXG5cdHZhciBoYWRSdW50aW1lID0gZy5yZWdlbmVyYXRvclJ1bnRpbWUgJiZcblx0ICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnKS5pbmRleE9mKFwicmVnZW5lcmF0b3JSdW50aW1lXCIpID49IDA7XG5cblx0Ly8gU2F2ZSB0aGUgb2xkIHJlZ2VuZXJhdG9yUnVudGltZSBpbiBjYXNlIGl0IG5lZWRzIHRvIGJlIHJlc3RvcmVkIGxhdGVyLlxuXHR2YXIgb2xkUnVudGltZSA9IGhhZFJ1bnRpbWUgJiYgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cblx0Ly8gRm9yY2UgcmVldmFsdXRhdGlvbiBvZiBydW50aW1lLmpzLlxuXHRnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNTUpO1xuXG5cdGlmIChoYWRSdW50aW1lKSB7XG5cdCAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgcnVudGltZS5cblx0ICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IG9sZFJ1bnRpbWU7XG5cdH0gZWxzZSB7XG5cdCAgLy8gUmVtb3ZlIHRoZSBnbG9iYWwgcHJvcGVydHkgYWRkZWQgYnkgcnVudGltZS5qcy5cblx0ICB0cnkge1xuXHQgICAgZGVsZXRlIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXHQgIH0gY2F0Y2goZSkge1xuXHQgICAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cdCAgfVxuXHR9XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBtb2R1bGUuZXhwb3J0cywgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSlcblxuLyoqKi8gfSxcbi8qIDU1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsLCBwcm9jZXNzKSB7LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxNCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIGh0dHBzOi8vcmF3LmdpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvbWFzdGVyL0xJQ0VOU0UgZmlsZS4gQW5cblx0ICogYWRkaXRpb25hbCBncmFudCBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluXG5cdCAqIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU3KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TeW1ib2wkaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9PYmplY3QkY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MylbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpW1wiZGVmYXVsdFwiXTtcblxuXHQhKGZ1bmN0aW9uIChnbG9iYWwpIHtcblx0ICBcInVzZSBzdHJpY3RcIjtcblxuXHQgIHZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHQgIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuXHQgIHZhciBpdGVyYXRvclN5bWJvbCA9IHR5cGVvZiBfU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgX1N5bWJvbCRpdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcblxuXHQgIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG5cdCAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuXHQgIGlmIChydW50aW1lKSB7XG5cdCAgICBpZiAoaW5Nb2R1bGUpIHtcblx0ICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuXHQgICAgICAvLyBtYWtlIHRoZSBleHBvcnRzIG9iamVjdCBpZGVudGljYWwgdG8gcmVnZW5lcmF0b3JSdW50aW1lLlxuXHQgICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG5cdCAgICB9XG5cdCAgICAvLyBEb24ndCBib3RoZXIgZXZhbHVhdGluZyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgaWYgdGhlIHJ1bnRpbWUgd2FzXG5cdCAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG5cdCAgICByZXR1cm47XG5cdCAgfVxuXG5cdCAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG5cdCAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuXHQgIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9O1xuXG5cdCAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuXHQgICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cblx0ICAgIHZhciBnZW5lcmF0b3IgPSBfT2JqZWN0JGNyZWF0ZSgob3V0ZXJGbiB8fCBHZW5lcmF0b3IpLnByb3RvdHlwZSk7XG5cblx0ICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmIHx8IG51bGwsIG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKSk7XG5cblx0ICAgIHJldHVybiBnZW5lcmF0b3I7XG5cdCAgfVxuXHQgIHJ1bnRpbWUud3JhcCA9IHdyYXA7XG5cblx0ICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cblx0ICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcblx0ICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcblx0ICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG5cdCAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuXHQgIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcblx0ICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuXHQgIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuXHQgIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcblx0ICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG5cdCAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG5cdCAgICB0cnkge1xuXHQgICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuXHQgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuXHQgIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG5cdCAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuXHQgIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcblx0ICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG5cdCAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuXHQgIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuXHQgIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuXHQgIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG5cdCAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cblx0ICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuXHQgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cblx0ICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cblx0ICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPSBHZW5lcmF0b3IucHJvdG90eXBlO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcblx0ICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuXHQgIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG5cdCAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cblx0ICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG5cdCAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG5cdCAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGFyZykge1xuXHQgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuXHQgICAgICB9O1xuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuXHQgICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuXHQgICAgcmV0dXJuIGN0b3IgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuXHQgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuXHQgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuXHQgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiIDogZmFsc2U7XG5cdCAgfTtcblxuXHQgIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcblx0ICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcblx0ICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBfT2JqZWN0JGNyZWF0ZShHcCk7XG5cdCAgICByZXR1cm4gZ2VuRnVuO1xuXHQgIH07XG5cblx0ICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cblx0ICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuXHQgIC8vIGB2YWx1ZSBpbnN0YW5jZW9mIEF3YWl0QXJndW1lbnRgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuXHQgIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuIFNvbWUgbWF5IGNvbnNpZGVyIHRoZSBuYW1lIG9mIHRoaXMgbWV0aG9kIHRvb1xuXHQgIC8vIGN1dGVzeSwgYnV0IHRoZXkgYXJlIGN1cm11ZGdlb25zLlxuXHQgIHJ1bnRpbWUuYXdyYXAgPSBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICByZXR1cm4gbmV3IEF3YWl0QXJndW1lbnQoYXJnKTtcblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gQXdhaXRBcmd1bWVudChhcmcpIHtcblx0ICAgIHRoaXMuYXJnID0gYXJnO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG5cdCAgICAvLyBUaGlzIGludm9rZSBmdW5jdGlvbiBpcyB3cml0dGVuIGluIGEgc3R5bGUgdGhhdCBhc3N1bWVzIHNvbWVcblx0ICAgIC8vIGNhbGxpbmcgZnVuY3Rpb24gKG9yIFByb21pc2UpIHdpbGwgaGFuZGxlIGV4Y2VwdGlvbnMuXG5cdCAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcblx0ICAgICAgdmFyIHJlc3VsdCA9IGdlbmVyYXRvclttZXRob2RdKGFyZyk7XG5cdCAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcblx0ICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgQXdhaXRBcmd1bWVudCA/IF9Qcm9taXNlLnJlc29sdmUodmFsdWUuYXJnKS50aGVuKGludm9rZU5leHQsIGludm9rZVRocm93KSA6IF9Qcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuXHQgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG5cdCAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG5cdCAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcblx0ICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuXHQgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG5cdCAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuXHQgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cblx0ICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcblx0ICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcblx0ICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuXHQgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuXHQgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcblx0ICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG5cdCAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG5cdCAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG5cdCAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuXHQgICAgICAgIHJldHVybiByZXN1bHQ7XG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXG5cdCAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgcHJvY2Vzcy5kb21haW4pIHtcblx0ICAgICAgaW52b2tlID0gcHJvY2Vzcy5kb21haW4uYmluZChpbnZva2UpO1xuXHQgICAgfVxuXG5cdCAgICB2YXIgaW52b2tlTmV4dCA9IGludm9rZS5iaW5kKGdlbmVyYXRvciwgXCJuZXh0XCIpO1xuXHQgICAgdmFyIGludm9rZVRocm93ID0gaW52b2tlLmJpbmQoZ2VuZXJhdG9yLCBcInRocm93XCIpO1xuXHQgICAgdmFyIGludm9rZVJldHVybiA9IGludm9rZS5iaW5kKGdlbmVyYXRvciwgXCJyZXR1cm5cIik7XG5cdCAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG5cdCAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG5cdCAgICAgIHZhciBlbnF1ZXVlUmVzdWx0ID1cblx0ICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuXHQgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcblx0ICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuXHQgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuXHQgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcblx0ICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cblx0ICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuXHQgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuXHQgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuXHQgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuXHQgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuXHQgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG5cdCAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gaW52b2tlKG1ldGhvZCwgYXJnKTtcblx0ICAgICAgfSkgOiBuZXcgX1Byb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcblx0ICAgICAgICByZXNvbHZlKGludm9rZShtZXRob2QsIGFyZykpO1xuXHQgICAgICB9KTtcblxuXHQgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBlbnF1ZXVlUmVzdWx0IGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5XG5cdCAgICAgIC8vIGxhdGVyIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cblx0ICAgICAgcHJldmlvdXNQcm9taXNlID0gZW5xdWV1ZVJlc3VsdFtcImNhdGNoXCJdKGZ1bmN0aW9uIChpZ25vcmVkKSB7fSk7XG5cblx0ICAgICAgcmV0dXJuIGVucXVldWVSZXN1bHQ7XG5cdCAgICB9XG5cblx0ICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG5cdCAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cblx0ICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG5cdCAgfVxuXG5cdCAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcblxuXHQgIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2Zcblx0ICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2Zcblx0ICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cblx0ICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24gKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG5cdCAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpKTtcblxuXHQgICAgcmV0dXJuIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKSA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuXHQgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcblx0ICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG5cdCAgICB9KTtcblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG5cdCAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuXHQgICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgdGhyb3cgYXJnO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG5cdCAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuXHQgICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG5cdCAgICAgIH1cblxuXHQgICAgICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG5cdCAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG5cdCAgICAgICAgICBpZiAobWV0aG9kID09PSBcInJldHVyblwiIHx8IG1ldGhvZCA9PT0gXCJ0aHJvd1wiICYmIGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZF0gPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgICAgICAvLyBBIHJldHVybiBvciB0aHJvdyAod2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIHRocm93XG5cdCAgICAgICAgICAgIC8vIG1ldGhvZCkgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuXHQgICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuXHQgICAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG5cdCAgICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cblx0ICAgICAgICAgICAgdmFyIHJldHVybk1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdO1xuXHQgICAgICAgICAgICBpZiAocmV0dXJuTWV0aG9kKSB7XG5cdCAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKHJldHVybk1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGFyZyk7XG5cdCAgICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZXR1cm4gbWV0aG9kIHRocmV3IGFuIGV4Y2VwdGlvbiwgbGV0IHRoYXRcblx0ICAgICAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiBwcmV2YWlsIG92ZXIgdGhlIG9yaWdpbmFsIHJldHVybiBvciB0aHJvdy5cblx0ICAgICAgICAgICAgICAgIG1ldGhvZCA9IFwidGhyb3dcIjtcblx0ICAgICAgICAgICAgICAgIGFyZyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAgIH1cblxuXHQgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcInJldHVyblwiKSB7XG5cdCAgICAgICAgICAgICAgLy8gQ29udGludWUgd2l0aCB0aGUgb3V0ZXIgcmV0dXJuLCBub3cgdGhhdCB0aGUgZGVsZWdhdGVcblx0ICAgICAgICAgICAgICAvLyBpdGVyYXRvciBoYXMgYmVlbiB0ZXJtaW5hdGVkLlxuXHQgICAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChkZWxlZ2F0ZS5pdGVyYXRvclttZXRob2RdLCBkZWxlZ2F0ZS5pdGVyYXRvciwgYXJnKTtcblxuXHQgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cblx0ICAgICAgICAgICAgLy8gTGlrZSByZXR1cm5pbmcgZ2VuZXJhdG9yLnRocm93KHVuY2F1Z2h0KSwgYnV0IHdpdGhvdXQgdGhlXG5cdCAgICAgICAgICAgIC8vIG92ZXJoZWFkIG9mIGFuIGV4dHJhIGZ1bmN0aW9uIGNhbGwuXG5cdCAgICAgICAgICAgIG1ldGhvZCA9IFwidGhyb3dcIjtcblx0ICAgICAgICAgICAgYXJnID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIC8vIERlbGVnYXRlIGdlbmVyYXRvciByYW4gYW5kIGhhbmRsZWQgaXRzIG93biBleGNlcHRpb25zIHNvXG5cdCAgICAgICAgICAvLyByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIG1ldGhvZCB3YXMsIHdlIGNvbnRpbnVlIGFzIGlmIGl0IGlzXG5cdCAgICAgICAgICAvLyBcIm5leHRcIiB3aXRoIGFuIHVuZGVmaW5lZCBhcmcuXG5cdCAgICAgICAgICBtZXRob2QgPSBcIm5leHRcIjtcblx0ICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZDtcblxuXHQgICAgICAgICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgaWYgKGluZm8uZG9uZSkge1xuXHQgICAgICAgICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblx0ICAgICAgICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblx0ICAgICAgICAgICAgcmV0dXJuIGluZm87XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChtZXRob2QgPT09IFwibmV4dFwiKSB7XG5cdCAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkWWllbGQpIHtcblx0ICAgICAgICAgICAgY29udGV4dC5zZW50ID0gYXJnO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgY29udGV4dC5zZW50ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuXHQgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuXHQgICAgICAgICAgICB0aHJvdyBhcmc7XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIGlmIChjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGFyZykpIHtcblx0ICAgICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcblx0ICAgICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cblx0ICAgICAgICAgICAgbWV0aG9kID0gXCJuZXh0XCI7XG5cdCAgICAgICAgICAgIGFyZyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuXHQgICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgYXJnKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG5cdCAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXHQgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuXHQgICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuXHQgICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuXHQgICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmUgPyBHZW5TdGF0ZUNvbXBsZXRlZCA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cblx0ICAgICAgICAgIHZhciBpbmZvID0ge1xuXHQgICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcblx0ICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG5cdCAgICAgICAgICB9O1xuXG5cdCAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuXHQgICAgICAgICAgICBpZiAoY29udGV4dC5kZWxlZ2F0ZSAmJiBtZXRob2QgPT09IFwibmV4dFwiKSB7XG5cdCAgICAgICAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3Rcblx0ICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG5cdCAgICAgICAgICAgICAgYXJnID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICByZXR1cm4gaW5mbztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcblx0ICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG5cdCAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG5cdCAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGFyZykgY2FsbCBhYm92ZS5cblx0ICAgICAgICAgIG1ldGhvZCA9IFwidGhyb3dcIjtcblx0ICAgICAgICAgIGFyZyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH1cblxuXHQgIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG5cdCAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuXHQgIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cblx0ICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gdGhpcztcblx0ICB9O1xuXG5cdCAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcblx0ICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cblx0ICAgIGlmICgxIGluIGxvY3MpIHtcblx0ICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuXHQgICAgfVxuXG5cdCAgICBpZiAoMiBpbiBsb2NzKSB7XG5cdCAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuXHQgICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG5cdCAgICB9XG5cblx0ICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG5cdCAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcblx0ICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcblx0ICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuXHQgICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcblx0ICB9XG5cblx0ICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG5cdCAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcblx0ICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cblx0ICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cblx0ICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG5cdCAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG5cdCAgICB0aGlzLnJlc2V0KHRydWUpO1xuXHQgIH1cblxuXHQgIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uIChvYmplY3QpIHtcblx0ICAgIHZhciBrZXlzID0gW107XG5cdCAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG5cdCAgICAgIGtleXMucHVzaChrZXkpO1xuXHQgICAgfVxuXHQgICAga2V5cy5yZXZlcnNlKCk7XG5cblx0ICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG5cdCAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG5cdCAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuXHQgICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuXHQgICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG5cdCAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuXHQgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG5cdCAgICAgICAgICByZXR1cm4gbmV4dDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcblx0ICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcblx0ICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG5cdCAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cdCAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgfTtcblx0ICB9O1xuXG5cdCAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG5cdCAgICBpZiAoaXRlcmFibGUpIHtcblx0ICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuXHQgICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcblx0ICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuXHQgICAgICAgIHJldHVybiBpdGVyYWJsZTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuXHQgICAgICAgIHZhciBpID0gLTEsXG5cdCAgICAgICAgICAgIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuXHQgICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuXHQgICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG5cdCAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuXHQgICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuXHQgICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cblx0ICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG5cdCAgICAgICAgICByZXR1cm4gbmV4dDtcblx0ICAgICAgICB9O1xuXG5cdCAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuXHQgICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuXHQgIH1cblx0ICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuXHQgIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG5cdCAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG5cdCAgfVxuXG5cdCAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG5cdCAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuXHQgICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KHNraXBUZW1wUmVzZXQpIHtcblx0ICAgICAgdGhpcy5wcmV2ID0gMDtcblx0ICAgICAgdGhpcy5uZXh0ID0gMDtcblx0ICAgICAgdGhpcy5zZW50ID0gdW5kZWZpbmVkO1xuXHQgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcblx0ICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cblx0ICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cblx0ICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG5cdCAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG5cdCAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuXHQgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJiBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJiAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG5cdCAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge1xuXHQgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG5cdCAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG5cdCAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG5cdCAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuXHQgICAgICB9XG5cblx0ICAgICAgcmV0dXJuIHRoaXMucnZhbDtcblx0ICAgIH0sXG5cblx0ICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbiBkaXNwYXRjaEV4Y2VwdGlvbihleGNlcHRpb24pIHtcblx0ICAgICAgaWYgKHRoaXMuZG9uZSkge1xuXHQgICAgICAgIHRocm93IGV4Y2VwdGlvbjtcblx0ICAgICAgfVxuXG5cdCAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcblx0ICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG5cdCAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG5cdCAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcblx0ICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cdCAgICAgICAgcmV0dXJuICEhY2F1Z2h0O1xuXHQgICAgICB9XG5cblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuXHQgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG5cdCAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuXHQgICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG5cdCAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuXHQgICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuXHQgICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG5cdCAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cblx0ICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuXHQgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG5cdCAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIGFicnVwdDogZnVuY3Rpb24gYWJydXB0KHR5cGUsIGFyZykge1xuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiYgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJiAodHlwZSA9PT0gXCJicmVha1wiIHx8IHR5cGUgPT09IFwiY29udGludWVcIikgJiYgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiYgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuXHQgICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cblx0ICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuXHQgICAgICB9XG5cblx0ICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG5cdCAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcblx0ICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuXHQgICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG5cdCAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuXHQgICAgICB9XG5cblx0ICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG5cdCAgICB9LFxuXG5cdCAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVjb3JkLCBhZnRlckxvYykge1xuXHQgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgIHRocm93IHJlY29yZC5hcmc7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fCByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG5cdCAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcblx0ICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuXHQgICAgICAgIHRoaXMucnZhbCA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcblx0ICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuXHQgICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXG5cdCAgICBmaW5pc2g6IGZ1bmN0aW9uIGZpbmlzaChmaW5hbGx5TG9jKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuXHQgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG5cdCAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24gX2NhdGNoKHRyeUxvYykge1xuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuXHQgICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cdCAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICByZXR1cm4gdGhyb3duO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuXHQgICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG5cdCAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcblx0ICAgIH0sXG5cblx0ICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIGRlbGVnYXRlWWllbGQoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcblx0ICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcblx0ICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcblx0ICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuXHQgICAgICAgIG5leHRMb2M6IG5leHRMb2Ncblx0ICAgICAgfTtcblxuXHQgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcblx0ICAgIH1cblx0ICB9O1xuXHR9KShcblx0Ly8gQW1vbmcgdGhlIHZhcmlvdXMgdHJpY2tzIGZvciBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbFxuXHQvLyBvYmplY3QsIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vc3QgcmVsaWFibGUgdGVjaG5pcXVlIHRoYXQgZG9lcyBub3Rcblx0Ly8gdXNlIGluZGlyZWN0IGV2YWwgKHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5KS5cblx0dHlwZW9mIGdsb2JhbCA9PT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6IHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiA/IHNlbGYgOiB1bmRlZmluZWQpO1xuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSwgX193ZWJwYWNrX3JlcXVpcmVfXyg1NikpKVxuXG4vKioqLyB9LFxuLyogNTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxuXG5cdHZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblx0dmFyIHF1ZXVlID0gW107XG5cdHZhciBkcmFpbmluZyA9IGZhbHNlO1xuXHR2YXIgY3VycmVudFF1ZXVlO1xuXHR2YXIgcXVldWVJbmRleCA9IC0xO1xuXG5cdGZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcblx0ICAgIH1cblx0ICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBkcmFpblF1ZXVlKCk7XG5cdCAgICB9XG5cdH1cblxuXHRmdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuXHQgICAgaWYgKGRyYWluaW5nKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG5cdCAgICBkcmFpbmluZyA9IHRydWU7XG5cblx0ICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB3aGlsZShsZW4pIHtcblx0ICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcblx0ICAgICAgICBxdWV1ZSA9IFtdO1xuXHQgICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcblx0ICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuXHQgICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcblx0ICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG5cdCAgICB9XG5cdCAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblx0fVxuXG5cdHByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG5cdCAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0ICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcblx0ICAgICAgICBzZXRUaW1lb3V0KGRyYWluUXVldWUsIDApO1xuXHQgICAgfVxuXHR9O1xuXG5cdC8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcblx0ZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG5cdCAgICB0aGlzLmZ1biA9IGZ1bjtcblx0ICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcblx0fVxuXHRJdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcblx0fTtcblx0cHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcblx0cHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcblx0cHJvY2Vzcy5lbnYgPSB7fTtcblx0cHJvY2Vzcy5hcmd2ID0gW107XG5cdHByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xuXHRwcm9jZXNzLnZlcnNpb25zID0ge307XG5cblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cblx0cHJvY2Vzcy5vbiA9IG5vb3A7XG5cdHByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xuXHRwcm9jZXNzLm9uY2UgPSBub29wO1xuXHRwcm9jZXNzLm9mZiA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuXHRwcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5cdHByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cblx0cHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcblx0fTtcblxuXHRwcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xuXHRwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcblx0fTtcblx0cHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG4vKioqLyB9LFxuLyogNTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg1OCksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDU4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5TeW1ib2w7XG5cbi8qKiovIH0sXG4vKiA1OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHQvLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG5cdHZhciAkICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBnbG9iYWwgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBoYXMgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBTVVBQT1JUX0RFU0MgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpXG5cdCAgLCAkZGVmICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCAkcmVkZWYgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpXG5cdCAgLCAkZmFpbHMgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpXG5cdCAgLCBzaGFyZWQgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpXG5cdCAgLCBzZXRUYWcgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpXG5cdCAgLCB1aWQgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpXG5cdCAgLCB3a3MgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApXG5cdCAgLCBrZXlPZiAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjApXG5cdCAgLCAkbmFtZXMgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpXG5cdCAgLCBlbnVtS2V5cyAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpXG5cdCAgLCBpc09iamVjdCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBhbk9iamVjdCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCB0b0lPYmplY3QgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpXG5cdCAgLCBjcmVhdGVEZXNjICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpXG5cdCAgLCBnZXREZXNjICAgICAgICA9ICQuZ2V0RGVzY1xuXHQgICwgc2V0RGVzYyAgICAgICAgPSAkLnNldERlc2Ncblx0ICAsIF9jcmVhdGUgICAgICAgID0gJC5jcmVhdGVcblx0ICAsIGdldE5hbWVzICAgICAgID0gJG5hbWVzLmdldFxuXHQgICwgJFN5bWJvbCAgICAgICAgPSBnbG9iYWwuU3ltYm9sXG5cdCAgLCBzZXR0ZXIgICAgICAgICA9IGZhbHNlXG5cdCAgLCBISURERU4gICAgICAgICA9IHdrcygnX2hpZGRlbicpXG5cdCAgLCBpc0VudW0gICAgICAgICA9ICQuaXNFbnVtXG5cdCAgLCBTeW1ib2xSZWdpc3RyeSA9IHNoYXJlZCgnc3ltYm9sLXJlZ2lzdHJ5Jylcblx0ICAsIEFsbFN5bWJvbHMgICAgID0gc2hhcmVkKCdzeW1ib2xzJylcblx0ICAsIHVzZU5hdGl2ZSAgICAgID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJ1xuXHQgICwgT2JqZWN0UHJvdG8gICAgPSBPYmplY3QucHJvdG90eXBlO1xuXG5cdC8vIGZhbGxiYWNrIGZvciBvbGQgQW5kcm9pZCwgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTY4N1xuXHR2YXIgc2V0U3ltYm9sRGVzYyA9IFNVUFBPUlRfREVTQyAmJiAkZmFpbHMoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gX2NyZWF0ZShzZXREZXNjKHt9LCAnYScsIHtcblx0ICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHNldERlc2ModGhpcywgJ2EnLCB7dmFsdWU6IDd9KS5hOyB9XG5cdCAgfSkpLmEgIT0gNztcblx0fSkgPyBmdW5jdGlvbihpdCwga2V5LCBEKXtcblx0ICB2YXIgcHJvdG9EZXNjID0gZ2V0RGVzYyhPYmplY3RQcm90bywga2V5KTtcblx0ICBpZihwcm90b0Rlc2MpZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG5cdCAgc2V0RGVzYyhpdCwga2V5LCBEKTtcblx0ICBpZihwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKXNldERlc2MoT2JqZWN0UHJvdG8sIGtleSwgcHJvdG9EZXNjKTtcblx0fSA6IHNldERlc2M7XG5cblx0dmFyIHdyYXAgPSBmdW5jdGlvbih0YWcpe1xuXHQgIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2wucHJvdG90eXBlKTtcblx0ICBzeW0uX2sgPSB0YWc7XG5cdCAgU1VQUE9SVF9ERVNDICYmIHNldHRlciAmJiBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHtcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0ICAgIHNldDogZnVuY3Rpb24odmFsdWUpe1xuXHQgICAgICBpZihoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKXRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7XG5cdCAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG5cdCAgICB9XG5cdCAgfSk7XG5cdCAgcmV0dXJuIHN5bTtcblx0fTtcblxuXHR2YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCl7XG5cdCAgaWYoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSl7XG5cdCAgICBpZighRC5lbnVtZXJhYmxlKXtcblx0ICAgICAgaWYoIWhhcyhpdCwgSElEREVOKSlzZXREZXNjKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcblx0ICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGlmKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0paXRbSElEREVOXVtrZXldID0gZmFsc2U7XG5cdCAgICAgIEQgPSBfY3JlYXRlKEQsIHtlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKX0pO1xuXHQgICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcblx0ICB9IHJldHVybiBzZXREZXNjKGl0LCBrZXksIEQpO1xuXHR9O1xuXHR2YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKXtcblx0ICBhbk9iamVjdChpdCk7XG5cdCAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKVxuXHQgICAgLCBpICAgID0gMFxuXHQgICAgLCBsID0ga2V5cy5sZW5ndGhcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKGwgPiBpKSRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblx0dmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApe1xuXHQgIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcblx0fTtcblx0dmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSl7XG5cdCAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkpO1xuXHQgIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV1cblx0ICAgID8gRSA6IHRydWU7XG5cdH07XG5cdHZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuXHQgIHZhciBEID0gZ2V0RGVzYyhpdCA9IHRvSU9iamVjdChpdCksIGtleSk7XG5cdCAgaWYoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKUQuZW51bWVyYWJsZSA9IHRydWU7XG5cdCAgcmV0dXJuIEQ7XG5cdH07XG5cdHZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuXHQgIHZhciBuYW1lcyAgPSBnZXROYW1lcyh0b0lPYmplY3QoaXQpKVxuXHQgICAgLCByZXN1bHQgPSBbXVxuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKWlmKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTilyZXN1bHQucHVzaChrZXkpO1xuXHQgIHJldHVybiByZXN1bHQ7XG5cdH07XG5cdHZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KXtcblx0ICB2YXIgbmFtZXMgID0gZ2V0TmFtZXModG9JT2JqZWN0KGl0KSlcblx0ICAgICwgcmVzdWx0ID0gW11cblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkpcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcblx0ICByZXR1cm4gcmVzdWx0O1xuXHR9O1xuXG5cdC8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuXHRpZighdXNlTmF0aXZlKXtcblx0ICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCl7XG5cdCAgICBpZih0aGlzIGluc3RhbmNlb2YgJFN5bWJvbCl0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xuXHQgICAgcmV0dXJuIHdyYXAodWlkKGFyZ3VtZW50c1swXSkpO1xuXHQgIH07XG5cdCAgJHJlZGVmKCRTeW1ib2wucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpe1xuXHQgICAgcmV0dXJuIHRoaXMuX2s7XG5cdCAgfSk7XG5cblx0ICAkLmNyZWF0ZSAgICAgPSAkY3JlYXRlO1xuXHQgICQuaXNFbnVtICAgICA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcblx0ICAkLmdldERlc2MgICAgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXHQgICQuc2V0RGVzYyAgICA9ICRkZWZpbmVQcm9wZXJ0eTtcblx0ICAkLnNldERlc2NzICAgPSAkZGVmaW5lUHJvcGVydGllcztcblx0ICAkLmdldE5hbWVzICAgPSAkbmFtZXMuZ2V0ID0gJGdldE93blByb3BlcnR5TmFtZXM7XG5cdCAgJC5nZXRTeW1ib2xzID0gJGdldE93blByb3BlcnR5U3ltYm9scztcblxuXHQgIGlmKFNVUFBPUlRfREVTQyAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXyg5KSl7XG5cdCAgICAkcmVkZWYoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG5cdCAgfVxuXHR9XG5cblx0Ly8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cblx0aWYoIXVzZU5hdGl2ZSB8fCAkZmFpbHMoZnVuY3Rpb24oKXtcblx0ICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoWyRTeW1ib2woKV0pICE9ICdbbnVsbF0nO1xuXHR9KSkkcmVkZWYoJFN5bWJvbC5wcm90b3R5cGUsICd0b0pTT04nLCBmdW5jdGlvbiB0b0pTT04oKXtcblx0ICBpZih1c2VOYXRpdmUgJiYgaXNPYmplY3QodGhpcykpcmV0dXJuIHRoaXM7XG5cdH0pO1xuXG5cdHZhciBzeW1ib2xTdGF0aWNzID0ge1xuXHQgIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuXHQgICdmb3InOiBmdW5jdGlvbihrZXkpe1xuXHQgICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuXHQgICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cblx0ICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuXHQgIH0sXG5cdCAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG5cdCAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioa2V5KXtcblx0ICAgIHJldHVybiBrZXlPZihTeW1ib2xSZWdpc3RyeSwga2V5KTtcblx0ICB9LFxuXHQgIHVzZVNldHRlcjogZnVuY3Rpb24oKXsgc2V0dGVyID0gdHJ1ZTsgfSxcblx0ICB1c2VTaW1wbGU6IGZ1bmN0aW9uKCl7IHNldHRlciA9IGZhbHNlOyB9XG5cdH07XG5cdC8vIDE5LjQuMi4yIFN5bWJvbC5oYXNJbnN0YW5jZVxuXHQvLyAxOS40LjIuMyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXG5cdC8vIDE5LjQuMi40IFN5bWJvbC5pdGVyYXRvclxuXHQvLyAxOS40LjIuNiBTeW1ib2wubWF0Y2hcblx0Ly8gMTkuNC4yLjggU3ltYm9sLnJlcGxhY2Vcblx0Ly8gMTkuNC4yLjkgU3ltYm9sLnNlYXJjaFxuXHQvLyAxOS40LjIuMTAgU3ltYm9sLnNwZWNpZXNcblx0Ly8gMTkuNC4yLjExIFN5bWJvbC5zcGxpdFxuXHQvLyAxOS40LjIuMTIgU3ltYm9sLnRvUHJpbWl0aXZlXG5cdC8vIDE5LjQuMi4xMyBTeW1ib2wudG9TdHJpbmdUYWdcblx0Ly8gMTkuNC4yLjE0IFN5bWJvbC51bnNjb3BhYmxlc1xuXHQkLmVhY2guY2FsbCgoXG5cdCAgICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLCcgK1xuXHQgICAgJ3NwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMnXG5cdCAgKS5zcGxpdCgnLCcpLCBmdW5jdGlvbihpdCl7XG5cdCAgICB2YXIgc3ltID0gd2tzKGl0KTtcblx0ICAgIHN5bWJvbFN0YXRpY3NbaXRdID0gdXNlTmF0aXZlID8gc3ltIDogd3JhcChzeW0pO1xuXHQgIH1cblx0KTtcblxuXHRzZXR0ZXIgPSB0cnVlO1xuXG5cdCRkZWYoJGRlZi5HICsgJGRlZi5XLCB7U3ltYm9sOiAkU3ltYm9sfSk7XG5cblx0JGRlZigkZGVmLlMsICdTeW1ib2wnLCBzeW1ib2xTdGF0aWNzKTtcblxuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICF1c2VOYXRpdmUsICdPYmplY3QnLCB7XG5cdCAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuXHQgIGNyZWF0ZTogJGNyZWF0ZSxcblx0ICAvLyAxOS4xLjIuNCBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcblx0ICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuXHQgIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG5cdCAgZGVmaW5lUHJvcGVydGllczogJGRlZmluZVByb3BlcnRpZXMsXG5cdCAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuXHQgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblx0ICAvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxuXHQgIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuXHQgIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcblx0ICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcblx0fSk7XG5cblx0Ly8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuXHRzZXRUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuXHQvLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5cdHNldFRhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuXHQvLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuXHRzZXRUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG5cbi8qKiovIH0sXG4vKiA2MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGVsKXtcblx0ICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcblx0ICAgICwga2V5cyAgID0gJC5nZXRLZXlzKE8pXG5cdCAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG5cdCAgICAsIGluZGV4ICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKGxlbmd0aCA+IGluZGV4KWlmKE9ba2V5ID0ga2V5c1tpbmRleCsrXV0gPT09IGVsKXJldHVybiBrZXk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xuXHR2YXIgdG9TdHJpbmcgID0ge30udG9TdHJpbmdcblx0ICAsIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpXG5cdCAgLCBnZXROYW1lcyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5nZXROYW1lcztcblxuXHR2YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG5cdCAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cblx0dmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZ2V0TmFtZXMoaXQpO1xuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcblx0ICB9XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMuZ2V0ID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCl7XG5cdCAgaWYod2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScpcmV0dXJuIGdldFdpbmRvd05hbWVzKGl0KTtcblx0ICByZXR1cm4gZ2V0TmFtZXModG9JT2JqZWN0KGl0KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIGtleXMgICAgICAgPSAkLmdldEtleXMoaXQpXG5cdCAgICAsIGdldFN5bWJvbHMgPSAkLmdldFN5bWJvbHM7XG5cdCAgaWYoZ2V0U3ltYm9scyl7XG5cdCAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG5cdCAgICAgICwgaXNFbnVtICA9ICQuaXNFbnVtXG5cdCAgICAgICwgaSAgICAgICA9IDBcblx0ICAgICAgLCBrZXk7XG5cdCAgICB3aGlsZShzeW1ib2xzLmxlbmd0aCA+IGkpaWYoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpa2V5cy5wdXNoKGtleSk7XG5cdCAgfVxuXHQgIHJldHVybiBrZXlzO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg2NCksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDY0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKXtcblx0ICByZXR1cm4gJC5jcmVhdGUoUCwgRCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDY2KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNjcpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg2OCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuUHJvbWlzZTtcblxuLyoqKi8gfSxcbi8qIDY3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcblxuLyoqKi8gfSxcbi8qIDY4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIExJQlJBUlkgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpXG5cdCAgLCBnbG9iYWwgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGN0eCAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgY2xhc3NvZiAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCAkZGVmICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsIGlzT2JqZWN0ICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgYW5PYmplY3QgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCBhRnVuY3Rpb24gID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KVxuXHQgICwgZm9yT2YgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBzZXRQcm90byAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSkuc2V0XG5cdCAgLCBzYW1lICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Milcblx0ICAsIHNwZWNpZXMgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKVxuXHQgICwgU1BFQ0lFUyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdzcGVjaWVzJylcblx0ICAsIFJFQ09SRCAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKSgncmVjb3JkJylcblx0ICAsIGFzYXAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KVxuXHQgICwgUFJPTUlTRSAgICA9ICdQcm9taXNlJ1xuXHQgICwgcHJvY2VzcyAgICA9IGdsb2JhbC5wcm9jZXNzXG5cdCAgLCBpc05vZGUgICAgID0gY2xhc3NvZihwcm9jZXNzKSA9PSAncHJvY2Vzcydcblx0ICAsIFAgICAgICAgICAgPSBnbG9iYWxbUFJPTUlTRV1cblx0ICAsIFdyYXBwZXI7XG5cblx0dmFyIHRlc3RSZXNvbHZlID0gZnVuY3Rpb24oc3ViKXtcblx0ICB2YXIgdGVzdCA9IG5ldyBQKGZ1bmN0aW9uKCl7fSk7XG5cdCAgaWYoc3ViKXRlc3QuY29uc3RydWN0b3IgPSBPYmplY3Q7XG5cdCAgcmV0dXJuIFAucmVzb2x2ZSh0ZXN0KSA9PT0gdGVzdDtcblx0fTtcblxuXHR2YXIgdXNlTmF0aXZlID0gZnVuY3Rpb24oKXtcblx0ICB2YXIgd29ya3MgPSBmYWxzZTtcblx0ICBmdW5jdGlvbiBQMih4KXtcblx0ICAgIHZhciBzZWxmID0gbmV3IFAoeCk7XG5cdCAgICBzZXRQcm90byhzZWxmLCBQMi5wcm90b3R5cGUpO1xuXHQgICAgcmV0dXJuIHNlbGY7XG5cdCAgfVxuXHQgIHRyeSB7XG5cdCAgICB3b3JrcyA9IFAgJiYgUC5yZXNvbHZlICYmIHRlc3RSZXNvbHZlKCk7XG5cdCAgICBzZXRQcm90byhQMiwgUCk7XG5cdCAgICBQMi5wcm90b3R5cGUgPSAkLmNyZWF0ZShQLnByb3RvdHlwZSwge2NvbnN0cnVjdG9yOiB7dmFsdWU6IFAyfX0pO1xuXHQgICAgLy8gYWN0dWFsIEZpcmVmb3ggaGFzIGJyb2tlbiBzdWJjbGFzcyBzdXBwb3J0LCB0ZXN0IHRoYXRcblx0ICAgIGlmKCEoUDIucmVzb2x2ZSg1KS50aGVuKGZ1bmN0aW9uKCl7fSkgaW5zdGFuY2VvZiBQMikpe1xuXHQgICAgICB3b3JrcyA9IGZhbHNlO1xuXHQgICAgfVxuXHQgICAgLy8gYWN0dWFsIFY4IGJ1ZywgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxNjJcblx0ICAgIGlmKHdvcmtzICYmIF9fd2VicGFja19yZXF1aXJlX18oMTcpKXtcblx0ICAgICAgdmFyIHRoZW5hYmxlVGhlbkdvdHRlbiA9IGZhbHNlO1xuXHQgICAgICBQLnJlc29sdmUoJC5zZXREZXNjKHt9LCAndGhlbicsIHtcblx0ICAgICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHRoZW5hYmxlVGhlbkdvdHRlbiA9IHRydWU7IH1cblx0ICAgICAgfSkpO1xuXHQgICAgICB3b3JrcyA9IHRoZW5hYmxlVGhlbkdvdHRlbjtcblx0ICAgIH1cblx0ICB9IGNhdGNoKGUpeyB3b3JrcyA9IGZhbHNlOyB9XG5cdCAgcmV0dXJuIHdvcmtzO1xuXHR9KCk7XG5cblx0Ly8gaGVscGVyc1xuXHR2YXIgaXNQcm9taXNlID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpc09iamVjdChpdCkgJiYgKHVzZU5hdGl2ZSA/IGNsYXNzb2YoaXQpID09ICdQcm9taXNlJyA6IFJFQ09SRCBpbiBpdCk7XG5cdH07XG5cdHZhciBzYW1lQ29uc3RydWN0b3IgPSBmdW5jdGlvbihhLCBiKXtcblx0ICAvLyBsaWJyYXJ5IHdyYXBwZXIgc3BlY2lhbCBjYXNlXG5cdCAgaWYoTElCUkFSWSAmJiBhID09PSBQICYmIGIgPT09IFdyYXBwZXIpcmV0dXJuIHRydWU7XG5cdCAgcmV0dXJuIHNhbWUoYSwgYik7XG5cdH07XG5cdHZhciBnZXRDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKEMpe1xuXHQgIHZhciBTID0gYW5PYmplY3QoQylbU1BFQ0lFU107XG5cdCAgcmV0dXJuIFMgIT0gdW5kZWZpbmVkID8gUyA6IEM7XG5cdH07XG5cdHZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24oaXQpe1xuXHQgIHZhciB0aGVuO1xuXHQgIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcblx0fTtcblx0dmFyIG5vdGlmeSA9IGZ1bmN0aW9uKHJlY29yZCwgaXNSZWplY3Qpe1xuXHQgIGlmKHJlY29yZC5uKXJldHVybjtcblx0ICByZWNvcmQubiA9IHRydWU7XG5cdCAgdmFyIGNoYWluID0gcmVjb3JkLmM7XG5cdCAgYXNhcChmdW5jdGlvbigpe1xuXHQgICAgdmFyIHZhbHVlID0gcmVjb3JkLnZcblx0ICAgICAgLCBvayAgICA9IHJlY29yZC5zID09IDFcblx0ICAgICAgLCBpICAgICA9IDA7XG5cdCAgICB2YXIgcnVuID0gZnVuY3Rpb24ocmVhY3Qpe1xuXHQgICAgICB2YXIgY2IgPSBvayA/IHJlYWN0Lm9rIDogcmVhY3QuZmFpbFxuXHQgICAgICAgICwgcmV0LCB0aGVuO1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmKGNiKXtcblx0ICAgICAgICAgIGlmKCFvaylyZWNvcmQuaCA9IHRydWU7XG5cdCAgICAgICAgICByZXQgPSBjYiA9PT0gdHJ1ZSA/IHZhbHVlIDogY2IodmFsdWUpO1xuXHQgICAgICAgICAgaWYocmV0ID09PSByZWFjdC5QKXtcblx0ICAgICAgICAgICAgcmVhY3QucmVqKFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcblx0ICAgICAgICAgIH0gZWxzZSBpZih0aGVuID0gaXNUaGVuYWJsZShyZXQpKXtcblx0ICAgICAgICAgICAgdGhlbi5jYWxsKHJldCwgcmVhY3QucmVzLCByZWFjdC5yZWopO1xuXHQgICAgICAgICAgfSBlbHNlIHJlYWN0LnJlcyhyZXQpO1xuXHQgICAgICAgIH0gZWxzZSByZWFjdC5yZWoodmFsdWUpO1xuXHQgICAgICB9IGNhdGNoKGVycil7XG5cdCAgICAgICAgcmVhY3QucmVqKGVycik7XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgICB3aGlsZShjaGFpbi5sZW5ndGggPiBpKXJ1bihjaGFpbltpKytdKTsgLy8gdmFyaWFibGUgbGVuZ3RoIC0gY2FuJ3QgdXNlIGZvckVhY2hcblx0ICAgIGNoYWluLmxlbmd0aCA9IDA7XG5cdCAgICByZWNvcmQubiA9IGZhbHNlO1xuXHQgICAgaWYoaXNSZWplY3Qpc2V0VGltZW91dChmdW5jdGlvbigpe1xuXHQgICAgICB2YXIgcHJvbWlzZSA9IHJlY29yZC5wXG5cdCAgICAgICAgLCBoYW5kbGVyLCBjb25zb2xlO1xuXHQgICAgICBpZihpc1VuaGFuZGxlZChwcm9taXNlKSl7XG5cdCAgICAgICAgaWYoaXNOb2RlKXtcblx0ICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuXHQgICAgICAgIH0gZWxzZSBpZihoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKXtcblx0ICAgICAgICAgIGhhbmRsZXIoe3Byb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWV9KTtcblx0ICAgICAgICB9IGVsc2UgaWYoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcil7XG5cdCAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB2YWx1ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IHJlY29yZC5hID0gdW5kZWZpbmVkO1xuXHQgICAgfSwgMSk7XG5cdCAgfSk7XG5cdH07XG5cdHZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uKHByb21pc2Upe1xuXHQgIHZhciByZWNvcmQgPSBwcm9taXNlW1JFQ09SRF1cblx0ICAgICwgY2hhaW4gID0gcmVjb3JkLmEgfHwgcmVjb3JkLmNcblx0ICAgICwgaSAgICAgID0gMFxuXHQgICAgLCByZWFjdDtcblx0ICBpZihyZWNvcmQuaClyZXR1cm4gZmFsc2U7XG5cdCAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSl7XG5cdCAgICByZWFjdCA9IGNoYWluW2krK107XG5cdCAgICBpZihyZWFjdC5mYWlsIHx8ICFpc1VuaGFuZGxlZChyZWFjdC5QKSlyZXR1cm4gZmFsc2U7XG5cdCAgfSByZXR1cm4gdHJ1ZTtcblx0fTtcblx0dmFyICRyZWplY3QgPSBmdW5jdGlvbih2YWx1ZSl7XG5cdCAgdmFyIHJlY29yZCA9IHRoaXM7XG5cdCAgaWYocmVjb3JkLmQpcmV0dXJuO1xuXHQgIHJlY29yZC5kID0gdHJ1ZTtcblx0ICByZWNvcmQgPSByZWNvcmQuciB8fCByZWNvcmQ7IC8vIHVud3JhcFxuXHQgIHJlY29yZC52ID0gdmFsdWU7XG5cdCAgcmVjb3JkLnMgPSAyO1xuXHQgIHJlY29yZC5hID0gcmVjb3JkLmMuc2xpY2UoKTtcblx0ICBub3RpZnkocmVjb3JkLCB0cnVlKTtcblx0fTtcblx0dmFyICRyZXNvbHZlID0gZnVuY3Rpb24odmFsdWUpe1xuXHQgIHZhciByZWNvcmQgPSB0aGlzXG5cdCAgICAsIHRoZW47XG5cdCAgaWYocmVjb3JkLmQpcmV0dXJuO1xuXHQgIHJlY29yZC5kID0gdHJ1ZTtcblx0ICByZWNvcmQgPSByZWNvcmQuciB8fCByZWNvcmQ7IC8vIHVud3JhcFxuXHQgIHRyeSB7XG5cdCAgICBpZih0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpe1xuXHQgICAgICBhc2FwKGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgdmFyIHdyYXBwZXIgPSB7cjogcmVjb3JkLCBkOiBmYWxzZX07IC8vIHdyYXBcblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuXHQgICAgICAgIH0gY2F0Y2goZSl7XG5cdCAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJlY29yZC52ID0gdmFsdWU7XG5cdCAgICAgIHJlY29yZC5zID0gMTtcblx0ICAgICAgbm90aWZ5KHJlY29yZCwgZmFsc2UpO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICAkcmVqZWN0LmNhbGwoe3I6IHJlY29yZCwgZDogZmFsc2V9LCBlKTsgLy8gd3JhcFxuXHQgIH1cblx0fTtcblxuXHQvLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuXHRpZighdXNlTmF0aXZlKXtcblx0ICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuXHQgIFAgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKXtcblx0ICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG5cdCAgICB2YXIgcmVjb3JkID0ge1xuXHQgICAgICBwOiBzdHJpY3ROZXcodGhpcywgUCwgUFJPTUlTRSksICAgICAgICAgLy8gPC0gcHJvbWlzZVxuXHQgICAgICBjOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG5cdCAgICAgIGE6IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuXHQgICAgICBzOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcblx0ICAgICAgZDogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGRvbmVcblx0ICAgICAgdjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgIGg6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBoYW5kbGVkIHJlamVjdGlvblxuXHQgICAgICBuOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gbm90aWZ5XG5cdCAgICB9O1xuXHQgICAgdGhpc1tSRUNPUkRdID0gcmVjb3JkO1xuXHQgICAgdHJ5IHtcblx0ICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCByZWNvcmQsIDEpLCBjdHgoJHJlamVjdCwgcmVjb3JkLCAxKSk7XG5cdCAgICB9IGNhdGNoKGVycil7XG5cdCAgICAgICRyZWplY3QuY2FsbChyZWNvcmQsIGVycik7XG5cdCAgICB9XG5cdCAgfTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShQLnByb3RvdHlwZSwge1xuXHQgICAgLy8gMjUuNC41LjMgUHJvbWlzZS5wcm90b3R5cGUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClcblx0ICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpe1xuXHQgICAgICB2YXIgUyA9IGFuT2JqZWN0KGFuT2JqZWN0KHRoaXMpLmNvbnN0cnVjdG9yKVtTUEVDSUVTXTtcblx0ICAgICAgdmFyIHJlYWN0ID0ge1xuXHQgICAgICAgIG9rOiAgIHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlLFxuXHQgICAgICAgIGZhaWw6IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgID8gb25SZWplY3RlZCAgOiBmYWxzZVxuXHQgICAgICB9O1xuXHQgICAgICB2YXIgcHJvbWlzZSA9IHJlYWN0LlAgPSBuZXcgKFMgIT0gdW5kZWZpbmVkID8gUyA6IFApKGZ1bmN0aW9uKHJlcywgcmVqKXtcblx0ICAgICAgICByZWFjdC5yZXMgPSByZXM7XG5cdCAgICAgICAgcmVhY3QucmVqID0gcmVqO1xuXHQgICAgICB9KTtcblx0ICAgICAgYUZ1bmN0aW9uKHJlYWN0LnJlcyk7XG5cdCAgICAgIGFGdW5jdGlvbihyZWFjdC5yZWopO1xuXHQgICAgICB2YXIgcmVjb3JkID0gdGhpc1tSRUNPUkRdO1xuXHQgICAgICByZWNvcmQuYy5wdXNoKHJlYWN0KTtcblx0ICAgICAgaWYocmVjb3JkLmEpcmVjb3JkLmEucHVzaChyZWFjdCk7XG5cdCAgICAgIGlmKHJlY29yZC5zKW5vdGlmeShyZWNvcmQsIGZhbHNlKTtcblx0ICAgICAgcmV0dXJuIHByb21pc2U7XG5cdCAgICB9LFxuXHQgICAgLy8gMjUuNC41LjEgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2gob25SZWplY3RlZClcblx0ICAgICdjYXRjaCc6IGZ1bmN0aW9uKG9uUmVqZWN0ZWQpe1xuXHQgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG5cdCAgICB9XG5cdCAgfSk7XG5cdH1cblxuXHQvLyBleHBvcnRcblx0JGRlZigkZGVmLkcgKyAkZGVmLlcgKyAkZGVmLkYgKiAhdXNlTmF0aXZlLCB7UHJvbWlzZTogUH0pO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShQLCBQUk9NSVNFKTtcblx0c3BlY2llcyhQKTtcblx0c3BlY2llcyhXcmFwcGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMilbUFJPTUlTRV0pO1xuXG5cdC8vIHN0YXRpY3Ncblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAhdXNlTmF0aXZlLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3Qocilcblx0ICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKXtcblx0ICAgIHJldHVybiBuZXcgdGhpcyhmdW5jdGlvbihyZXMsIHJlail7IHJlaihyKTsgfSk7XG5cdCAgfVxuXHR9KTtcblx0JGRlZigkZGVmLlMgKyAkZGVmLkYgKiAoIXVzZU5hdGl2ZSB8fCB0ZXN0UmVzb2x2ZSh0cnVlKSksIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcblx0ICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpe1xuXHQgICAgcmV0dXJuIGlzUHJvbWlzZSh4KSAmJiBzYW1lQ29uc3RydWN0b3IoeC5jb25zdHJ1Y3RvciwgdGhpcylcblx0ICAgICAgPyB4IDogbmV3IHRoaXMoZnVuY3Rpb24ocmVzKXsgcmVzKHgpOyB9KTtcblx0ICB9XG5cdH0pO1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICEodXNlTmF0aXZlICYmIF9fd2VicGFja19yZXF1aXJlX18oMzgpKGZ1bmN0aW9uKGl0ZXIpe1xuXHQgIFAuYWxsKGl0ZXIpWydjYXRjaCddKGZ1bmN0aW9uKCl7fSk7XG5cdH0pKSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuXHQgIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKXtcblx0ICAgIHZhciBDICAgICAgPSBnZXRDb25zdHJ1Y3Rvcih0aGlzKVxuXHQgICAgICAsIHZhbHVlcyA9IFtdO1xuXHQgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uKHJlcywgcmVqKXtcblx0ICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCB2YWx1ZXMucHVzaCwgdmFsdWVzKTtcblx0ICAgICAgdmFyIHJlbWFpbmluZyA9IHZhbHVlcy5sZW5ndGhcblx0ICAgICAgICAsIHJlc3VsdHMgICA9IEFycmF5KHJlbWFpbmluZyk7XG5cdCAgICAgIGlmKHJlbWFpbmluZykkLmVhY2guY2FsbCh2YWx1ZXMsIGZ1bmN0aW9uKHByb21pc2UsIGluZGV4KXtcblx0ICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbih2YWx1ZSl7XG5cdCAgICAgICAgICByZXN1bHRzW2luZGV4XSA9IHZhbHVlO1xuXHQgICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzKHJlc3VsdHMpO1xuXHQgICAgICAgIH0sIHJlaik7XG5cdCAgICAgIH0pO1xuXHQgICAgICBlbHNlIHJlcyhyZXN1bHRzKTtcblx0ICAgIH0pO1xuXHQgIH0sXG5cdCAgLy8gMjUuNC40LjQgUHJvbWlzZS5yYWNlKGl0ZXJhYmxlKVxuXHQgIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpe1xuXHQgICAgdmFyIEMgPSBnZXRDb25zdHJ1Y3Rvcih0aGlzKTtcblx0ICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbihyZXMsIHJlail7XG5cdCAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24ocHJvbWlzZSl7XG5cdCAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4ocmVzLCByZWopO1xuXHQgICAgICB9KTtcblx0ICAgIH0pO1xuXHQgIH1cblx0fSk7XG5cbi8qKiovIH0sXG4vKiA2OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgQ29uc3RydWN0b3IsIG5hbWUpe1xuXHQgIGlmKCEoaXQgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpdGhyb3cgVHlwZUVycm9yKG5hbWUgKyBcIjogdXNlIHRoZSAnbmV3JyBvcGVyYXRvciFcIik7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBjdHggICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBjYWxsICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzApXG5cdCAgLCBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpXG5cdCAgLCBhbk9iamVjdCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpXG5cdCAgLCB0b0xlbmd0aCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpXG5cdCAgLCBnZXRJdGVyRm4gICA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCl7XG5cdCAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihpdGVyYWJsZSlcblx0ICAgICwgZiAgICAgID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpXG5cdCAgICAsIGluZGV4ICA9IDBcblx0ICAgICwgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvcjtcblx0ICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG5cdCAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG5cdCAgaWYoaXNBcnJheUl0ZXIoaXRlckZuKSlmb3IobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4Kyspe1xuXHQgICAgZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuXHQgIH0gZWxzZSBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChpdGVyYWJsZSk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgKXtcblx0ICAgIGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDcxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cblx0LyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblx0dmFyIGdldERlc2MgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuZ2V0RGVzY1xuXHQgICwgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0dmFyIGNoZWNrID0gZnVuY3Rpb24oTywgcHJvdG8pe1xuXHQgIGFuT2JqZWN0KE8pO1xuXHQgIGlmKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xuXHR9O1xuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvXG5cdCAgICBmdW5jdGlvbih0ZXN0LCBidWdneSwgc2V0KXtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBzZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KShGdW5jdGlvbi5jYWxsLCBnZXREZXNjKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQsIDIpO1xuXHQgICAgICAgIHNldCh0ZXN0LCBbXSk7XG5cdCAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG5cdCAgICAgIH0gY2F0Y2goZSl7IGJ1Z2d5ID0gdHJ1ZTsgfVxuXHQgICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pe1xuXHQgICAgICAgIGNoZWNrKE8sIHByb3RvKTtcblx0ICAgICAgICBpZihidWdneSlPLl9fcHJvdG9fXyA9IHByb3RvO1xuXHQgICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTtcblx0ICAgICAgICByZXR1cm4gTztcblx0ICAgICAgfTtcblx0ICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksXG5cdCAgY2hlY2s6IGNoZWNrXG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaXMgfHwgZnVuY3Rpb24gaXMoeCwgeSl7XG5cdCAgcmV0dXJuIHggPT09IHkgPyB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSA6IHggIT0geCAmJiB5ICE9IHk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBTUEVDSUVTID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3NwZWNpZXMnKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihDKXtcblx0ICBpZihfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSAmJiAhKFNQRUNJRVMgaW4gQykpJC5zZXREZXNjKEMsIFNQRUNJRVMsIHtcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0ICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH1cblx0ICB9KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgZ2xvYmFsICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcclxuXHQgICwgbWFjcm90YXNrID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSkuc2V0XHJcblx0ICAsIE9ic2VydmVyICA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyXHJcblx0ICAsIHByb2Nlc3MgICA9IGdsb2JhbC5wcm9jZXNzXHJcblx0ICAsIGlzTm9kZSAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpKHByb2Nlc3MpID09ICdwcm9jZXNzJ1xyXG5cdCAgLCBoZWFkLCBsYXN0LCBub3RpZnk7XHJcblxyXG5cdHZhciBmbHVzaCA9IGZ1bmN0aW9uKCl7XHJcblx0ICB2YXIgcGFyZW50LCBkb21haW47XHJcblx0ICBpZihpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSl7XHJcblx0ICAgIHByb2Nlc3MuZG9tYWluID0gbnVsbDtcclxuXHQgICAgcGFyZW50LmV4aXQoKTtcclxuXHQgIH1cclxuXHQgIHdoaWxlKGhlYWQpe1xyXG5cdCAgICBkb21haW4gPSBoZWFkLmRvbWFpbjtcclxuXHQgICAgaWYoZG9tYWluKWRvbWFpbi5lbnRlcigpO1xyXG5cdCAgICBoZWFkLmZuLmNhbGwoKTsgLy8gPC0gY3VycmVudGx5IHdlIHVzZSBpdCBvbmx5IGZvciBQcm9taXNlIC0gdHJ5IC8gY2F0Y2ggbm90IHJlcXVpcmVkXHJcblx0ICAgIGlmKGRvbWFpbilkb21haW4uZXhpdCgpO1xyXG5cdCAgICBoZWFkID0gaGVhZC5uZXh0O1xyXG5cdCAgfSBsYXN0ID0gdW5kZWZpbmVkO1xyXG5cdCAgaWYocGFyZW50KXBhcmVudC5lbnRlcigpO1xyXG5cdH1cclxuXHJcblx0Ly8gTm9kZS5qc1xyXG5cdGlmKGlzTm9kZSl7XHJcblx0ICBub3RpZnkgPSBmdW5jdGlvbigpe1xyXG5cdCAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcclxuXHQgIH07XHJcblx0Ly8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyXHJcblx0fSBlbHNlIGlmKE9ic2VydmVyKXtcclxuXHQgIHZhciB0b2dnbGUgPSAxXHJcblx0ICAgICwgbm9kZSAgID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xyXG5cdCAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XHJcblx0ICBub3RpZnkgPSBmdW5jdGlvbigpe1xyXG5cdCAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAtdG9nZ2xlO1xyXG5cdCAgfTtcclxuXHQvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxyXG5cdC8vIC0gc2V0SW1tZWRpYXRlXHJcblx0Ly8gLSBNZXNzYWdlQ2hhbm5lbFxyXG5cdC8vIC0gd2luZG93LnBvc3RNZXNzYWdcclxuXHQvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxyXG5cdC8vIC0gc2V0VGltZW91dFxyXG5cdH0gZWxzZSB7XHJcblx0ICBub3RpZnkgPSBmdW5jdGlvbigpe1xyXG5cdCAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXHJcblx0ICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xyXG5cdCAgfTtcclxuXHR9XHJcblxyXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYXNhcChmbil7XHJcblx0ICB2YXIgdGFzayA9IHtmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCwgZG9tYWluOiBpc05vZGUgJiYgcHJvY2Vzcy5kb21haW59O1xyXG5cdCAgaWYobGFzdClsYXN0Lm5leHQgPSB0YXNrO1xyXG5cdCAgaWYoIWhlYWQpe1xyXG5cdCAgICBoZWFkID0gdGFzaztcclxuXHQgICAgbm90aWZ5KCk7XHJcblx0ICB9IGxhc3QgPSB0YXNrO1xyXG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgY3R4ICAgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGludm9rZSAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpXG5cdCAgLCBodG1sICAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KVxuXHQgICwgY2VsICAgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OClcblx0ICAsIGdsb2JhbCAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBwcm9jZXNzICAgICAgICAgICAgPSBnbG9iYWwucHJvY2Vzc1xuXHQgICwgc2V0VGFzayAgICAgICAgICAgID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuXHQgICwgY2xlYXJUYXNrICAgICAgICAgID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlXG5cdCAgLCBNZXNzYWdlQ2hhbm5lbCAgICAgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWxcblx0ICAsIGNvdW50ZXIgICAgICAgICAgICA9IDBcblx0ICAsIHF1ZXVlICAgICAgICAgICAgICA9IHt9XG5cdCAgLCBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJ1xuXHQgICwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG5cdHZhciBydW4gPSBmdW5jdGlvbigpe1xuXHQgIHZhciBpZCA9ICt0aGlzO1xuXHQgIGlmKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSl7XG5cdCAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG5cdCAgICBkZWxldGUgcXVldWVbaWRdO1xuXHQgICAgZm4oKTtcblx0ICB9XG5cdH07XG5cdHZhciBsaXN0bmVyID0gZnVuY3Rpb24oZXZlbnQpe1xuXHQgIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xuXHR9O1xuXHQvLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5cdGlmKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spe1xuXHQgIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pe1xuXHQgICAgdmFyIGFyZ3MgPSBbXSwgaSA9IDE7XG5cdCAgICB3aGlsZShhcmd1bWVudHMubGVuZ3RoID4gaSlhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuXHQgICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uKCl7XG5cdCAgICAgIGludm9rZSh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pLCBhcmdzKTtcblx0ICAgIH07XG5cdCAgICBkZWZlcihjb3VudGVyKTtcblx0ICAgIHJldHVybiBjb3VudGVyO1xuXHQgIH07XG5cdCAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpe1xuXHQgICAgZGVsZXRlIHF1ZXVlW2lkXTtcblx0ICB9O1xuXHQgIC8vIE5vZGUuanMgMC44LVxuXHQgIGlmKF9fd2VicGFja19yZXF1aXJlX18oMzcpKHByb2Nlc3MpID09ICdwcm9jZXNzJyl7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuXHQgICAgfTtcblx0ICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG5cdCAgfSBlbHNlIGlmKE1lc3NhZ2VDaGFubmVsKXtcblx0ICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7XG5cdCAgICBwb3J0ICAgID0gY2hhbm5lbC5wb3J0Mjtcblx0ICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdG5lcjtcblx0ICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuXHQgIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuXHQgIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG5cdCAgfSBlbHNlIGlmKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmIHR5cGVvZiBwb3N0TWVzc2FnZSA9PSAnZnVuY3Rpb24nICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0KXtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoaWQgKyAnJywgJyonKTtcblx0ICAgIH07XG5cdCAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RuZXIsIGZhbHNlKTtcblx0ICAvLyBJRTgtXG5cdCAgfSBlbHNlIGlmKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjZWwoJ3NjcmlwdCcpKXtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbigpe1xuXHQgICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG5cdCAgICAgICAgcnVuLmNhbGwoaWQpO1xuXHQgICAgICB9O1xuXHQgICAgfTtcblx0ICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuXHQgIH0gZWxzZSB7XG5cdCAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcblx0ICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuXHQgICAgfTtcblx0ICB9XG5cdH1cblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgc2V0OiAgIHNldFRhc2ssXG5cdCAgY2xlYXI6IGNsZWFyVGFza1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCBhcmdzLCB0aGF0KXtcblx0ICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG5cdCAgc3dpdGNoKGFyZ3MubGVuZ3RoKXtcblx0ICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuXHQgICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuXHQgICAgY2FzZSAxOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdKVxuXHQgICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuXHQgICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuXHQgICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuXHQgICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuXHQgICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuXHQgICAgY2FzZSA0OiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKVxuXHQgICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuXHQgIH0gcmV0dXJuICAgICAgICAgICAgICBmbi5hcHBseSh0aGF0LCBhcmdzKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpLmRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuLyoqKi8gfSxcbi8qIDc4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKS5kb2N1bWVudFxuXHQgIC8vIGluIG9sZCBJRSB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0J1xuXHQgICwgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICRyZWRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHRhcmdldCwgc3JjKXtcblx0ICBmb3IodmFyIGtleSBpbiBzcmMpJHJlZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG5cdCAgcmV0dXJuIHRhcmdldDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDgwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oODEpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA4MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuT2JqZWN0LmtleXM7XG5cbi8qKiovIH0sXG4vKiA4MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG5cdHZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oODMpKCdrZXlzJywgZnVuY3Rpb24oJGtleXMpe1xuXHQgIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KXtcblx0ICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuXHQgIH07XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogODMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIG1vc3QgT2JqZWN0IG1ldGhvZHMgYnkgRVM2IHNob3VsZCBhY2NlcHQgcHJpbWl0aXZlc1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgZXhlYyl7XG5cdCAgdmFyICRkZWYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICAgLCBmbiAgID0gKF9fd2VicGFja19yZXF1aXJlX18oMTIpLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXVxuXHQgICAgLCBleHAgID0ge307XG5cdCAgZXhwW0tFWV0gPSBleGVjKGZuKTtcblx0ICAkZGVmKCRkZWYuUyArICRkZWYuRiAqIF9fd2VicGFja19yZXF1aXJlX18oMTgpKGZ1bmN0aW9uKCl7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogODUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNjcpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4Nik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oODkpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlNldDtcblxuLyoqKi8gfSxcbi8qIDg2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBzdHJvbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KTtcblxuXHQvLyAyMy4yIFNldCBPYmplY3RzXG5cdF9fd2VicGFja19yZXF1aXJlX18oODgpKCdTZXQnLCBmdW5jdGlvbihnZXQpe1xuXHQgIHJldHVybiBmdW5jdGlvbiBTZXQoKXsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHNbMF0pOyB9O1xuXHR9LCB7XG5cdCAgLy8gMjMuMi4zLjEgU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG5cdCAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpe1xuXHQgICAgcmV0dXJuIHN0cm9uZy5kZWYodGhpcywgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpO1xuXHQgIH1cblx0fSwgc3Ryb25nKTtcblxuLyoqKi8gfSxcbi8qIDg3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgaGlkZSAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIGN0eCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBzcGVjaWVzICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDczKVxuXHQgICwgc3RyaWN0TmV3ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSlcblx0ICAsIGRlZmluZWQgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNylcblx0ICAsIGZvck9mICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBzdGVwICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ1KVxuXHQgICwgSUQgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMikoJ2lkJylcblx0ICAsICRoYXMgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBpc09iamVjdCAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKVxuXHQgICwgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBpc09iamVjdFxuXHQgICwgU1VQUE9SVF9ERVNDID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNylcblx0ICAsIFNJWkUgICAgICAgICA9IFNVUFBPUlRfREVTQyA/ICdfcycgOiAnc2l6ZSdcblx0ICAsIGlkICAgICAgICAgICA9IDA7XG5cblx0dmFyIGZhc3RLZXkgPSBmdW5jdGlvbihpdCwgY3JlYXRlKXtcblx0ICAvLyByZXR1cm4gcHJpbWl0aXZlIHdpdGggcHJlZml4XG5cdCAgaWYoIWlzT2JqZWN0KGl0KSlyZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiAodHlwZW9mIGl0ID09ICdzdHJpbmcnID8gJ1MnIDogJ1AnKSArIGl0O1xuXHQgIGlmKCEkaGFzKGl0LCBJRCkpe1xuXHQgICAgLy8gY2FuJ3Qgc2V0IGlkIHRvIGZyb3plbiBvYmplY3Rcblx0ICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiAnRic7XG5cdCAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBpZFxuXHQgICAgaWYoIWNyZWF0ZSlyZXR1cm4gJ0UnO1xuXHQgICAgLy8gYWRkIG1pc3Npbmcgb2JqZWN0IGlkXG5cdCAgICBoaWRlKGl0LCBJRCwgKytpZCk7XG5cdCAgLy8gcmV0dXJuIG9iamVjdCBpZCB3aXRoIHByZWZpeFxuXHQgIH0gcmV0dXJuICdPJyArIGl0W0lEXTtcblx0fTtcblxuXHR2YXIgZ2V0RW50cnkgPSBmdW5jdGlvbih0aGF0LCBrZXkpe1xuXHQgIC8vIGZhc3QgY2FzZVxuXHQgIHZhciBpbmRleCA9IGZhc3RLZXkoa2V5KSwgZW50cnk7XG5cdCAgaWYoaW5kZXggIT09ICdGJylyZXR1cm4gdGhhdC5faVtpbmRleF07XG5cdCAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG5cdCAgZm9yKGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG5cdCAgICBpZihlbnRyeS5rID09IGtleSlyZXR1cm4gZW50cnk7XG5cdCAgfVxuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKXtcblx0ICAgIHZhciBDID0gd3JhcHBlcihmdW5jdGlvbih0aGF0LCBpdGVyYWJsZSl7XG5cdCAgICAgIHN0cmljdE5ldyh0aGF0LCBDLCBOQU1FKTtcblx0ICAgICAgdGhhdC5faSA9ICQuY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuXHQgICAgICB0aGF0Ll9mID0gdW5kZWZpbmVkOyAgICAgIC8vIGZpcnN0IGVudHJ5XG5cdCAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgICAgLy8gbGFzdCBlbnRyeVxuXHQgICAgICB0aGF0W1NJWkVdID0gMDsgICAgICAgICAgIC8vIHNpemVcblx0ICAgICAgaWYoaXRlcmFibGUgIT0gdW5kZWZpbmVkKWZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcblx0ICAgIH0pO1xuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoQy5wcm90b3R5cGUsIHtcblx0ICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG5cdCAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKVxuXHQgICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKXtcblx0ICAgICAgICBmb3IodmFyIHRoYXQgPSB0aGlzLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcblx0ICAgICAgICAgIGVudHJ5LnIgPSB0cnVlO1xuXHQgICAgICAgICAgaWYoZW50cnkucCllbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHRoYXRbU0laRV0gPSAwO1xuXHQgICAgICB9LFxuXHQgICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG5cdCAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuXHQgICAgICAnZGVsZXRlJzogZnVuY3Rpb24oa2V5KXtcblx0ICAgICAgICB2YXIgdGhhdCAgPSB0aGlzXG5cdCAgICAgICAgICAsIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcblx0ICAgICAgICBpZihlbnRyeSl7XG5cdCAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm5cblx0ICAgICAgICAgICAgLCBwcmV2ID0gZW50cnkucDtcblx0ICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldO1xuXHQgICAgICAgICAgZW50cnkuciA9IHRydWU7XG5cdCAgICAgICAgICBpZihwcmV2KXByZXYubiA9IG5leHQ7XG5cdCAgICAgICAgICBpZihuZXh0KW5leHQucCA9IHByZXY7XG5cdCAgICAgICAgICBpZih0aGF0Ll9mID09IGVudHJ5KXRoYXQuX2YgPSBuZXh0O1xuXHQgICAgICAgICAgaWYodGhhdC5fbCA9PSBlbnRyeSl0aGF0Ll9sID0gcHJldjtcblx0ICAgICAgICAgIHRoYXRbU0laRV0tLTtcblx0ICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuXHQgICAgICB9LFxuXHQgICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcblx0ICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG5cdCAgICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiwgdGhhdCA9IHVuZGVmaW5lZCAqLyl7XG5cdCAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdLCAzKVxuXHQgICAgICAgICAgLCBlbnRyeTtcblx0ICAgICAgICB3aGlsZShlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2Ype1xuXHQgICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTtcblx0ICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuXHQgICAgICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgICAgfVxuXHQgICAgICB9LFxuXHQgICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG5cdCAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuXHQgICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpe1xuXHQgICAgICAgIHJldHVybiAhIWdldEVudHJ5KHRoaXMsIGtleSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgaWYoU1VQUE9SVF9ERVNDKSQuc2V0RGVzYyhDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG5cdCAgICAgIGdldDogZnVuY3Rpb24oKXtcblx0ICAgICAgICByZXR1cm4gZGVmaW5lZCh0aGlzW1NJWkVdKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgICByZXR1cm4gQztcblx0ICB9LFxuXHQgIGRlZjogZnVuY3Rpb24odGhhdCwga2V5LCB2YWx1ZSl7XG5cdCAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpXG5cdCAgICAgICwgcHJldiwgaW5kZXg7XG5cdCAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcblx0ICAgIGlmKGVudHJ5KXtcblx0ICAgICAgZW50cnkudiA9IHZhbHVlO1xuXHQgICAgLy8gY3JlYXRlIG5ldyBlbnRyeVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuXHQgICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleFxuXHQgICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcblx0ICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcblx0ICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnlcblx0ICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuXHQgICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG5cdCAgICAgIH07XG5cdCAgICAgIGlmKCF0aGF0Ll9mKXRoYXQuX2YgPSBlbnRyeTtcblx0ICAgICAgaWYocHJldilwcmV2Lm4gPSBlbnRyeTtcblx0ICAgICAgdGhhdFtTSVpFXSsrO1xuXHQgICAgICAvLyBhZGQgdG8gaW5kZXhcblx0ICAgICAgaWYoaW5kZXggIT09ICdGJyl0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuXHQgICAgfSByZXR1cm4gdGhhdDtcblx0ICB9LFxuXHQgIGdldEVudHJ5OiBnZXRFbnRyeSxcblx0ICBzZXRTdHJvbmc6IGZ1bmN0aW9uKEMsIE5BTUUsIElTX01BUCl7XG5cdCAgICAvLyBhZGQgLmtleXMsIC52YWx1ZXMsIC5lbnRyaWVzLCBbQEBpdGVyYXRvcl1cblx0ICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oOCkoQywgTkFNRSwgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuXHQgICAgICB0aGlzLl90ID0gaXRlcmF0ZWQ7ICAvLyB0YXJnZXRcblx0ICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgLy8ga2luZFxuXHQgICAgICB0aGlzLl9sID0gdW5kZWZpbmVkOyAvLyBwcmV2aW91c1xuXHQgICAgfSwgZnVuY3Rpb24oKXtcblx0ICAgICAgdmFyIHRoYXQgID0gdGhpc1xuXHQgICAgICAgICwga2luZCAgPSB0aGF0Ll9rXG5cdCAgICAgICAgLCBlbnRyeSA9IHRoYXQuX2w7XG5cdCAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuXHQgICAgICB3aGlsZShlbnRyeSAmJiBlbnRyeS5yKWVudHJ5ID0gZW50cnkucDtcblx0ICAgICAgLy8gZ2V0IG5leHQgZW50cnlcblx0ICAgICAgaWYoIXRoYXQuX3QgfHwgISh0aGF0Ll9sID0gZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGF0Ll90Ll9mKSl7XG5cdCAgICAgICAgLy8gb3IgZmluaXNoIHRoZSBpdGVyYXRpb25cblx0ICAgICAgICB0aGF0Ll90ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIHJldHVybiBzdGVwKDEpO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcblx0ICAgICAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcblx0ICAgICAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcblx0ICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcblx0ICAgIH0sIElTX01BUCA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnICwgIUlTX01BUCwgdHJ1ZSk7XG5cblx0ICAgIC8vIGFkZCBbQEBzcGVjaWVzXSwgMjMuMS4yLjIsIDIzLjIuMi4yXG5cdCAgICBzcGVjaWVzKEMpO1xuXHQgICAgc3BlY2llcyhfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKVtOQU1FXSk7IC8vIGZvciB3cmFwcGVyXG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogODggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgJGRlZiAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCBoaWRlICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIGZvck9mICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgc3RyaWN0TmV3ICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSwgd3JhcHBlciwgbWV0aG9kcywgY29tbW9uLCBJU19NQVAsIElTX1dFQUspe1xuXHQgIHZhciBCYXNlICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpW05BTUVdXG5cdCAgICAsIEMgICAgID0gQmFzZVxuXHQgICAgLCBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCdcblx0ICAgICwgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlXG5cdCAgICAsIE8gICAgID0ge307XG5cdCAgaWYoIV9fd2VicGFja19yZXF1aXJlX18oMTcpIHx8IHR5cGVvZiBDICE9ICdmdW5jdGlvbidcblx0ICAgIHx8ICEoSVNfV0VBSyB8fCBwcm90by5mb3JFYWNoICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KShmdW5jdGlvbigpeyBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7IH0pKVxuXHQgICl7XG5cdCAgICAvLyBjcmVhdGUgY29sbGVjdGlvbiBjb25zdHJ1Y3RvclxuXHQgICAgQyA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKTtcblx0ICAgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKEMucHJvdG90eXBlLCBtZXRob2RzKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGFyZ2V0LCBpdGVyYWJsZSl7XG5cdCAgICAgIHN0cmljdE5ldyh0YXJnZXQsIEMsIE5BTUUpO1xuXHQgICAgICB0YXJnZXQuX2MgPSBuZXcgQmFzZTtcblx0ICAgICAgaWYoaXRlcmFibGUgIT0gdW5kZWZpbmVkKWZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRhcmdldFtBRERFUl0sIHRhcmdldCk7XG5cdCAgICB9KTtcblx0ICAgICQuZWFjaC5jYWxsKCdhZGQsY2xlYXIsZGVsZXRlLGZvckVhY2gsZ2V0LGhhcyxzZXQsa2V5cyx2YWx1ZXMsZW50cmllcycuc3BsaXQoJywnKSxmdW5jdGlvbihLRVkpe1xuXHQgICAgICB2YXIgY2hhaW4gPSBLRVkgPT0gJ2FkZCcgfHwgS0VZID09ICdzZXQnO1xuXHQgICAgICBpZihLRVkgaW4gcHJvdG8gJiYgIShJU19XRUFLICYmIEtFWSA9PSAnY2xlYXInKSloaWRlKEMucHJvdG90eXBlLCBLRVksIGZ1bmN0aW9uKGEsIGIpe1xuXHQgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTtcblx0ICAgICAgICByZXR1cm4gY2hhaW4gPyB0aGlzIDogcmVzdWx0O1xuXHQgICAgICB9KTtcblx0ICAgIH0pO1xuXHQgICAgaWYoJ3NpemUnIGluIHByb3RvKSQuc2V0RGVzYyhDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG5cdCAgICAgIGdldDogZnVuY3Rpb24oKXtcblx0ICAgICAgICByZXR1cm4gdGhpcy5fYy5zaXplO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShDLCBOQU1FKTtcblxuXHQgIE9bTkFNRV0gPSBDO1xuXHQgICRkZWYoJGRlZi5HICsgJGRlZi5XICsgJGRlZi5GLCBPKTtcblxuXHQgIGlmKCFJU19XRUFLKWNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuXHQgIHJldHVybiBDO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cblx0dmFyICRkZWYgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cblx0JGRlZigkZGVmLlAsICdTZXQnLCB7dG9KU09OOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDkwKSgnU2V0Jyl9KTtcblxuLyoqKi8gfSxcbi8qIDkwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciBmb3JPZiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihOQU1FKXtcblx0ICByZXR1cm4gZnVuY3Rpb24gdG9KU09OKCl7XG5cdCAgICBpZihjbGFzc29mKHRoaXMpICE9IE5BTUUpdGhyb3cgVHlwZUVycm9yKE5BTUUgKyBcIiN0b0pTT04gaXNuJ3QgZ2VuZXJpY1wiKTtcblx0ICAgIHZhciBhcnIgPSBbXTtcblx0ICAgIGZvck9mKHRoaXMsIGZhbHNlLCBhcnIucHVzaCwgYXJyKTtcblx0ICAgIHJldHVybiBhcnI7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfVxuLyoqKioqKi8gXSlcbn0pO1xuOyIsIm1vZHVsZS5leHBvcnRzID0gREc7IiwibW9kdWxlLmV4cG9ydHMgPSBncm9rOyIsIm1vZHVsZS5leHBvcnRzID0gcnhqczsiLCJtb2R1bGUuZXhwb3J0cyA9IHVpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmNcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSBzY3JpcHRVcmwgPSBzY3JpcHRzW3NjcmlwdHMubGVuZ3RoIC0gMV0uc3JjXG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdFwicGFja2FnZVwiOiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG4vLyBubyBvbiBjaHVua3MgbG9hZGVkXG5cbi8vIG5vIGpzb25wIGZ1bmN0aW9uIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuZXhwb3J0IGNvbnN0IF9wYWNrYWdlID0gbmV3IERHLlBhY2thZ2UoKTtcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgeyBWZFJlZ2lvbnNWaWV3ZXIgfSBmcm9tICcuL3ZpZXdlcnMvdmQtcmVnaW9ucy12aWV3ZXInO1xuaW1wb3J0IHsgcnVuS2FsaWduIH0gZnJvbSAnLi91dGlscy9tdWx0aXBsZS1zZXF1ZW5jZS1hbGlnbm1lbnQnO1xuaW1wb3J0IHsgU2VxdWVuY2VBbGlnbm1lbnQgfSBmcm9tICcuL3NlcV9hbGlnbic7XG5pbXBvcnQgeyBnZXRFbWJlZGRpbmdDb2xzTmFtZXMsIHNlcXVlbmNlU3BhY2UgfSBmcm9tICcuL3V0aWxzL3NlcXVlbmNlLXNwYWNlJztcbmltcG9ydCB7IGdldEFjdGl2aXR5Q2xpZmZzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdmlld2Vycy9hY3Rpdml0eS1jbGlmZnMnO1xuaW1wb3J0IHsgc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMsIGRyYXdUb29sdGlwIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1hY3Rpdml0eS1jbGlmZnMnO1xuaW1wb3J0IHsgY3JlYXRlSnNvbk1vbm9tZXJMaWJGcm9tU2RmLCBnZXRNb2xmaWxlc0Zyb21TZXEsIEhFTE1fQ09SRV9MSUJfRklMRU5BTUUgfSBmcm9tICcuL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IGdldE1hY3JvTW9sIH0gZnJvbSAnLi91dGlscy9hdG9taWMtd29ya3MnO1xuaW1wb3J0IHsgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi91dGlscy9jZWxsLXJlbmRlcmVyJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuL3V0aWxzL2NvbnZlcnQnO1xuLy90YWdzOiBpbml0XG5leHBvcnQgZnVuY3Rpb24gaW5pdEJpbygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBhcHBhcmVudGx5IEhFTE1XZWJFZGl0b3IgcmVxdWlyZXMgZG9qbyB0byBiZSBpbml0aWFsaXplZCBmaXJzdFxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgZG9qby5yZWFkeShmdW5jdGlvbiAoKSB7IHJlc29sdmUobnVsbCk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8vbmFtZTogbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBNYWNyb21vbGVjdWxlXG4vL291dHB1dDogZ3JpZF9jZWxsX3JlbmRlcmVyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIG1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpIHtcbiAgICByZXR1cm4gbmV3IE1hY3JvbW9sZWN1bGVTZXF1ZW5jZUNlbGxSZW5kZXJlcigpO1xufVxuZnVuY3Rpb24gY2hlY2tJbnB1dENvbHVtbihjb2wsIG5hbWUsIGFsbG93ZWROb3RhdGlvbnMgPSBbXSwgYWxsb3dlZEFscGhhYmV0cyA9IFtdKSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhuYW1lICsgJyBhbmFseXNpcyBpcyBhbGxvd2VkIGZvciBNYWNyb21vbGVjdWxlcyBzZW1hbnRpYyB0eXBlJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKGFsbG93ZWRBbHBoYWJldHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhYWxsb3dlZEFscGhhYmV0cy5zb21lKChhKSA9PiB1bml0cy50b1VwcGVyQ2FzZSgpLmVuZHNXaXRoKGEudG9VcHBlckNhc2UoKSkpKSB8fFxuICAgICAgICAoYWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhYWxsb3dlZE5vdGF0aW9ucy5zb21lKChuKSA9PiB1bml0cy50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgobi50b1VwcGVyQ2FzZSgpKSkpKSB7XG4gICAgICAgIGNvbnN0IG5vdGF0aW9uQWRkID0gYWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPT0gMCA/ICdhbnkgbm90YXRpb24nIDpcbiAgICAgICAgICAgIChgbm90YXRpb24ke2FsbG93ZWROb3RhdGlvbnMubGVuZ3RoID4gMSA/ICdzJyA6ICcnfSAke2FsbG93ZWROb3RhdGlvbnMubWFwKChuKSA9PiBgXCIke259XCJgKS5qb2luKCcsICcpfSBgKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRBZGQgPSBhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA9PSAwID8gJ2FueSBhbHBoYWJldCcgOlxuICAgICAgICAgICAgKGBhbHBoYWJldCR7YWxsb3dlZEFscGhhYmV0cy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZEFscGhhYmV0cy5tYXAoKGEpID0+IGBcIiR7YX1cImApLmpvaW4oJywgJyl9LmApO1xuICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcobmFtZSArICcgYW5hbHlzaXMgaXMgYWxsb3dlZCBmb3IgTWFjcm9tb2xlY3VsZXMgd2l0aCAnICsgbm90YXRpb25BZGQgKyAnIGFuZCAnICsgYWxwaGFiZXRBZGQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy9uYW1lOiBzZXF1ZW5jZUFsaWdubWVudFxuLy9pbnB1dDogc3RyaW5nIGFsaWduVHlwZSB7Y2hvaWNlczogWydMb2NhbCBhbGlnbm1lbnQnLCAnR2xvYmFsIGFsaWdubWVudCddfVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUFsaWdubWVudChhbGlnblR5cGUsIGFsaWduVGFibGUsIGdhcCwgc2VxMSwgc2VxMikge1xuICAgIGNvbnN0IHRvQWxpZ24gPSBuZXcgU2VxdWVuY2VBbGlnbm1lbnQoc2VxMSwgc2VxMiwgZ2FwLCBhbGlnblRhYmxlKTtcbiAgICBjb25zdCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4vL25hbWU6IFZkUmVnaW9uc1xuLy9kZXNjcmlwdGlvbjogVi1Eb21haW4gcmVnaW9ucyB2aWV3ZXJcbi8vdGFnczogdmlld2VyLCBwYW5lbFxuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiB2ZFJlZ2lvblZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFZkUmVnaW9uc1ZpZXdlcigpO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzLi4uXG4vL25hbWU6IFNlcXVlbmNlIEFjdGl2aXR5IENsaWZmc1xuLy9kZXNjcmlwdGlvbjogZGV0ZWN0IGFjdGl2aXR5IGNsaWZmc1xuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIG1hY3JvTW9sZWN1bGUge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL2lucHV0OiBjb2x1bW4gYWN0aXZpdGllc1xuLy9pbnB1dDogZG91YmxlIHNpbWlsYXJpdHkgPSA4MCBbU2ltaWxhcml0eSBjdXRvZmZdXG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpdml0eUNsaWZmcyhkZiwgbWFjcm9Nb2xlY3VsZSwgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgbWV0aG9kTmFtZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihtYWNyb01vbGVjdWxlLCAnQWN0aXZpdHkgQ2xpZmZzJykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGF4ZXNOYW1lcyA9IGdldEVtYmVkZGluZ0NvbHNOYW1lcyhkZik7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAnU1BFJzogeyBjeWNsZXM6IDIwMDAsIGxhbWJkYTogMS4wLCBkbGFtYmRhOiAwLjAwMDUgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBtYWNyb01vbGVjdWxlLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIHlpZWxkIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBtYWNyb01vbGVjdWxlLCBheGVzTmFtZXMsICdBY3Rpdml0eSBjbGlmZnMnLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCAnTGV2ZW5zaHRlaW4nLCBtZXRob2ROYW1lLCBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUsIHVuaXRzLCBzZXF1ZW5jZVNwYWNlLCBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcywgZHJhd1Rvb2x0aXAsIG9wdGlvbnNbbWV0aG9kTmFtZV0pO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgU3BhY2UuLi5cbi8vbmFtZTogU2VxdWVuY2UgU3BhY2Vcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIG1hY3JvTW9sZWN1bGUgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vaW5wdXQ6IHN0cmluZyBtZXRob2ROYW1lIHsgY2hvaWNlczpbXCJVTUFQXCIsIFwidC1TTkVcIiwgXCJTUEVcIl0gfVxuLy9pbnB1dDogc3RyaW5nIHNpbWlsYXJpdHlNZXRyaWMgeyBjaG9pY2VzOltcIkxldmVuc2h0ZWluXCIsIFwiVGFuaW1vdG9cIl0gfVxuLy9pbnB1dDogYm9vbCBwbG90RW1iZWRkaW5ncyA9IHRydWVcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZVNwYWNlVG9wTWVudSh0YWJsZSwgbWFjcm9Nb2xlY3VsZSwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYyA9ICdMZXZlbnNodGVpbicsIHBsb3RFbWJlZGRpbmdzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdBY3Rpdml0eSBDbGlmZnMnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZW1iZWRDb2xzTmFtZXMgPSBnZXRFbWJlZGRpbmdDb2xzTmFtZXModGFibGUpO1xuICAgICAgICBjb25zdCBjaGVtU3BhY2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBzZXFDb2w6IG1hY3JvTW9sZWN1bGUsXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICAgICAgICAgIGVtYmVkQXhlc05hbWVzOiBlbWJlZENvbHNOYW1lc1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZXF1ZW5jZVNwYWNlUmVzID0geWllbGQgc2VxdWVuY2VTcGFjZShjaGVtU3BhY2VQYXJhbXMpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmdzID0gc2VxdWVuY2VTcGFjZVJlcy5jb29yZGluYXRlcztcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgZW1iZWRkaW5ncylcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnMuYWRkKGNvbCk7XG4gICAgICAgIGlmIChwbG90RW1iZWRkaW5ncykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIGdyb2suc2hlbGwudmlld3MpIHtcbiAgICAgICAgICAgICAgICBpZiAodi5uYW1lID09PSB0YWJsZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICB2LnNjYXR0ZXJQbG90KHsgeDogZW1iZWRDb2xzTmFtZXNbMF0sIHk6IGVtYmVkQ29sc05hbWVzWzFdLCB0aXRsZTogJ1NlcXVlbmNlIHNwYWNlJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuO1xuLy90b3AtbWVudTogQmlvIHwgVG8gQXRvbWljIExldmVsLi4uXG4vL25hbWU6IFRvIEF0b21pYyBMZXZlbFxuLy9kZXNjcmlwdGlvbjogcmV0dXJucyBtb2xmaWxlcyBmb3IgZWFjaCBtb25vbWVyIGZyb20gSEVMTSBsaWJyYXJ5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGYgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbmV4cG9ydCBmdW5jdGlvbiB0b0F0b21pY0xldmVsKGRmLCBtYWNyb01vbGVjdWxlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKERHLkZ1bmMuZmluZCh7IHBhY2thZ2U6ICdDaGVtJywgbmFtZTogJ2dldFJkS2l0TW9kdWxlJyB9KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZygnVHJhbnNmb3JtYXRpb24gdG8gYXRvbWljIGxldmVsIHJlcXVpcmVzIHBhY2thZ2UgXCJDaGVtXCIgaW5zdGFsbGVkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihtYWNyb01vbGVjdWxlLCAnVG8gQXRvbWljIExldmVsJykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBjdXJyZW50VmlldztcbiAgICAgICAgZm9yIChjb25zdCB2aWV3IG9mIGdyb2suc2hlbGwudGFibGVWaWV3cykge1xuICAgICAgICAgICAgaWYgKGRmLm5hbWUgPT09IHZpZXcubmFtZSlcbiAgICAgICAgICAgICAgICBjdXJyZW50VmlldyA9IHZpZXc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29tZSBoYWNrIHRvIGFjdGl2YXRlIENoZW0gTW9sZWN1bGUgcmVuZGVyaW5nXG4gICAgICAgIGNvbnN0IGZpbGUyID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dCgndGVzdHMvc2FyLXNtYWxsLmNzdicpO1xuICAgICAgICBjb25zdCBkZjIgPSBERy5EYXRhRnJhbWUuZnJvbUNzdihmaWxlMik7XG4gICAgICAgIGNvbnN0IHYyID0gZ3Jvay5zaGVsbC5hZGRUYWJsZVZpZXcoZGYyKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBncm9rLnNoZWxsLmNsb3NlVGFibGUoZGYyKTtcbiAgICAgICAgICAgIHYyLmNsb3NlKCk7XG4gICAgICAgICAgICBncm9rLnNoZWxsLnYgPSBjdXJyZW50VmlldztcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJGaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dChIRUxNX0NPUkVfTElCX0ZJTEVOQU1FKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJPYmplY3QgPSBKU09OLnBhcnNlKG1vbm9tZXJzTGliRmlsZSk7XG4gICAgICAgIGNvbnN0IGF0b21pY0NvZGVzID0gZ2V0TW9sZmlsZXNGcm9tU2VxKG1hY3JvTW9sZWN1bGUsIG1vbm9tZXJzTGliT2JqZWN0KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgZ2V0TWFjcm9Nb2woYXRvbWljQ29kZXMpO1xuICAgICAgICBjb25zdCBjb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ3JlZ2VuZXJhdGVkJywgcmVzdWx0KTtcbiAgICAgICAgY29sLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1PTEVDVUxFO1xuICAgICAgICBjb2wudGFnc1tERy5UQUdTLlVOSVRTXSA9ICdtb2xibG9jayc7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKGNvbCwgdHJ1ZSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBNU0EuLi5cbi8vbmFtZTogTVNBXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbiBzZXF1ZW5jZSB7IHNlbVR5cGU6IE1hY3JvbW9sZWN1bGUgfVxuLy9vdXRwdXQ6IGNvbHVtbiByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBsZVNlcXVlbmNlQWxpZ25tZW50QW55KHRhYmxlLCBjb2wpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoIWNoZWNrSW5wdXRDb2x1bW4oY29sLCAnTVNBJywgWydmYXN0YSddLCBbJ0ROQScsICdSTkEnLCAnUFQnXSkpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgdW5Vc2VkTmFtZSA9IHRhYmxlLmNvbHVtbnMuZ2V0VW51c2VkTmFtZShgbXNhKCR7Y29sLm5hbWV9KWApO1xuICAgICAgICBjb25zdCBtc2FDb2wgPSB5aWVsZCBydW5LYWxpZ24oY29sLCBmYWxzZSwgdW5Vc2VkTmFtZSk7XG4gICAgICAgIHRhYmxlLmNvbHVtbnMuYWRkKG1zYUNvbCk7XG4gICAgICAgIC8vIFRoaXMgY2FsbCBpcyByZXF1aXJlZCB0byBlbmFibGUgY2VsbCByZW5kZXJlciBhY3RpdmF0aW9uXG4gICAgICAgIHlpZWxkIGdyb2suZGF0YS5kZXRlY3RTZW1hbnRpY1R5cGVzKHRhYmxlKTtcbiAgICAgICAgLy8gY29uc3QgdHY6IERHLlRhYmxlVmlldyA9IGdyb2suc2hlbGwudHY7XG4gICAgICAgIC8vIHR2LmdyaWQuaW52YWxpZGF0ZSgpO1xuICAgICAgICByZXR1cm4gbXNhQ29sO1xuICAgIH0pO1xufVxuLy9uYW1lOiBDb21wb3NpdGlvbiBBbmFseXNpc1xuLy90b3AtbWVudTogQmlvIHwgQ29tcG9zaXRpb24gQW5hbHlzaXNcbi8vb3V0cHV0OiB2aWV3ZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zaXRpb25BbmFseXNpcygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBIaWdoZXIgcHJpb3JpdHkgZm9yIGNvbHVtbnMgd2l0aCBNU0EgZGF0YSB0byBzaG93IHdpdGggV2ViTG9nby5cbiAgICAgICAgY29uc3QgdHYgPSBncm9rLnNoZWxsLnR2O1xuICAgICAgICBjb25zdCBkZiA9IHR2LmRhdGFGcmFtZTtcbiAgICAgICAgY29uc3QgY29sID0gV2ViTG9nby5waWNrVXBTZXFDb2wyKGRmKTtcbiAgICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwuZXJyb3IoJ0N1cnJlbnQgdGFibGUgZG9lcyBub3QgY29udGFpbiBzZXF1ZW5jZXMnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoZWNrSW5wdXRDb2x1bW4oY29sLCAnQ29tcG9zaXRpb24nKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgYWxsb3dlZE5vdGF0aW9ucyA9IFsnZmFzdGEnLCAnc2VwYXJhdG9yJ107XG4gICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgaWYgKCFhbGxvd2VkTm90YXRpb25zLnNvbWUoKG4pID0+IHVuaXRzLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aChuLnRvVXBwZXJDYXNlKCkpKSkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKCdDb21wb3NpdGlvbiBhbmFseXNpcyBpcyBhbGxvd2VkIGZvciAnICtcbiAgICAgICAgICAgICAgICBgbm90YXRpb24ke2FsbG93ZWROb3RhdGlvbnMubGVuZ3RoID4gMSA/ICdzJyA6ICcnfSAke2FsbG93ZWROb3RhdGlvbnMubWFwKChuKSA9PiBgXCIke259XCJgKS5qb2luKCcsICcpfS5gKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3bFZpZXdlciA9IHR2LmFkZFZpZXdlcignV2ViTG9nbycsIHsgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2wubmFtZSB9KTtcbiAgICAgICAgZ3Jvay5zaGVsbC50di5kb2NrTWFuYWdlci5kb2NrKHdsVmlld2VyLCBERy5ET0NLX1RZUEUuRE9XTiwgbnVsbCwgJ0NvbXBvc2l0aW9uIGFuYWx5c2lzJywgMC4yNSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZGYgdG8gSnNvbiBsaWIuLi5cbi8vbmFtZTogc2RmVG9Kc29uTGliXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbmV4cG9ydCBmdW5jdGlvbiBzZGZUb0pzb25MaWIodGFibGUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBqc29uTW9ub21lckxpYnJhcnkgPSBjcmVhdGVKc29uTW9ub21lckxpYkZyb21TZGYodGFibGUpO1xuICAgIH0pO1xufVxuLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBpbXBvcnRGYXN0YVxuZnVuY3Rpb24gcGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpIHtcbiAgICBjb25zdCBzZXEgPSBmaWxlQ29udGVudC5zbGljZShzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpO1xuICAgIGNvbnN0IHNlcUFycmF5ID0gc2VxLnNwbGl0KC9cXHMvKTtcbiAgICByZXR1cm4gc2VxQXJyYXkuam9pbignJyk7XG59XG4vL25hbWU6IGltcG9ydEZhc3RhXG4vL2Rlc2NyaXB0aW9uOiBPcGVucyBGQVNUQSBmaWxlXG4vL3RhZ3M6IGZpbGUtaGFuZGxlclxuLy9tZXRhLmV4dDogZmFzdGEsIGZuYSwgZmZuLCBmYWEsIGZybiwgZmEsIGZzdFxuLy9pbnB1dDogc3RyaW5nIGZpbGVDb250ZW50XG4vL291dHB1dDogbGlzdCB0YWJsZXNcbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRGYXN0YShmaWxlQ29udGVudCkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14+KC4qKSQvZ207IC8vIG1hdGNoIGxpbmVzIHN0YXJ0aW5nIHdpdGggPlxuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5ID0gW107XG4gICAgY29uc3Qgc2VxdWVuY2VzQXJyYXkgPSBbXTtcbiAgICBsZXQgc3RhcnRPZlNlcXVlbmNlID0gMDtcbiAgICBsZXQgbWF0Y2g7IC8vIG1hdGNoLmluZGV4IGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1hdGNoZWQgbGluZVxuICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4LmV4ZWMoZmlsZUNvbnRlbnQpKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZmlsZUNvbnRlbnQuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgMSwgcmVnZXgubGFzdEluZGV4KTtcbiAgICAgICAgZGVzY3JpcHRpb25zQXJyYXkucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIGlmIChzdGFydE9mU2VxdWVuY2UgIT09IDApXG4gICAgICAgICAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBzdGFydE9mU2VxdWVuY2UgPSByZWdleC5sYXN0SW5kZXggKyAxO1xuICAgIH1cbiAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCAtMSkpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uc0FycmF5KTtcbiAgICBjb25zdCBzZXF1ZW5jZUNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnc2VxdWVuY2UnLCBzZXF1ZW5jZXNBcnJheSk7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICBjb25zdCBzdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxdWVuY2VDb2wsIDUsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICBjb25zdCBzZXFUeXBlID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIGNvbnN0IFBlcHRpZGVGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbXG4gICAgICAgICdHJywgJ0wnLCAnWScsICdTJywgJ0UnLCAnUScsICdEJywgJ04nLCAnRicsICdBJyxcbiAgICAgICAgJ0snLCAnUicsICdIJywgJ0MnLCAnVicsICdQJywgJ1cnLCAnSScsICdNJywgJ1QnLFxuICAgIF0pO1xuICAgIGNvbnN0IERuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVCddKTtcbiAgICBjb25zdCBSbmFGYXN0YUFscGhhYmV0ID0gbmV3IFNldChbJ0EnLCAnQycsICdHJywgJ1UnXSk7XG4gICAgLy9jb25zdCBTbWlsZXNSYXdBbHBoYWJldCA9IG5ldyBTZXQoW1xuICAgIC8vICAnTycsICdDJywgJ2MnLCAnTicsICdTJywgJ0YnLCAnKCcsICcpJyxcbiAgICAvLyAgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLFxuICAgIC8vICAnKycsICctJywgJ0AnLCAnWycsICddJywgJy8nLCAnXFxcXCcsICcjJywgJz0nXSk7XG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICBbJ1BUJywgUGVwdGlkZUZhc3RhQWxwaGFiZXRdLFxuICAgICAgICBbJ0ROQScsIERuYUZhc3RhQWxwaGFiZXRdLFxuICAgICAgICBbJ1JOQScsIFJuYUZhc3RhQWxwaGFiZXRdLFxuICAgIF07XG4gICAgLy9jb25zdCBhbHBoYWJldENhbmRpZGF0ZXM6IFtzdHJpbmcsIFNldDxzdHJpbmc+XVtdID0gW1xuICAgIC8vICBbJ05UJywgbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpXSxcbiAgICAvLyAgWydQVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpXSxcbiAgICAvL107XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1sxXSkpO1xuICAgIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gICAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgIGNvbnN0IHVuaXRzID0gYGZhc3RhOiR7c2VxVHlwZX06JHthbHBoYWJldH1gO1xuICAgIHNlcXVlbmNlQ29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgcmV0dXJuIFtERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgZGVzY3JpcHRpb25zQXJyYXlDb2wsXG4gICAgICAgICAgICBzZXF1ZW5jZUNvbCxcbiAgICAgICAgXSldO1xufVxuLy9uYW1lOiBCaW8gfCBDb252ZXJ0IC4uLlxuLy9mcmllbmRseS1uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL3RhZ3M6IHBhbmVsLCBiaW9cbi8vaW5wdXQ6IGNvbHVtbiBjb2wge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFBhbmVsKGNvbCkge1xuICAgIGNvbnZlcnQoY29sKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
11145
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUF3RSxlQUFlO0FBQ3ZGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRFQUE0RSxlQUFlO0FBQzNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSxlQUFlO0FBQ3pGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLEtBQUssRUFBRSxFQUdWOztBQUVWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsS0FBSyxFQUFFLEVBR1Y7O0FBRVY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMkZBQTJGLGVBQWU7QUFDMUc7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQSwyRUFBMkUsZUFBZTtBQUMxRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQSwyRUFBMkUsZUFBZTtBQUMxRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQSwrRkFBK0YsZUFBZTtBQUM5RztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZEQUE2RCxzRUFBc0U7QUFDbkk7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNB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QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnREFBZ0QsUUFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7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QUNBLG1DQUFtQyx5RUFBMkI7QUFDOUQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsK0RBQXFCO0FBQ3RELHdCQUF3QiwrREFBcUI7QUFDN0M7QUFDQSxrQkFBa0IsMEZBQWdCLGlCQUFpQixpR0FBdUI7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLHVHQUE2QjtBQUM3RjtBQUNBO0FBQ0EsMEJBQTBCLGtFQUF3QjtBQUNsRCwyQkFBMkIsUUFBUSxHQUFHLFNBQVM7QUFDL0MsdUJBQXVCLHVEQUFhO0FBQ3BDLFlBQVksa0VBQXdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ2Q7QUFDUCxJQUFJLHdEQUFPO0FBQ1giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGJpb3dhc20vYWlvbGkvZGlzdC9haW9saS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL2FtaW5vYWNpZHMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcS1wYWxldHRlcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXIuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmQtcmVnaW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3NlcXVlbmNlLXNwYWNlLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy92aWV3ZXJzL2FjdGl2aXR5LWNsaWZmcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvd29ya2Vycy9kaW1lbnNpb25hbGl0eS1yZWR1Y2luZy13b3JrZXItY3JlYXRvci5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvZmFzdGVzdC1sZXZlbnNodGVpbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvamFyby13aW5rbGVyLXR5cGVzY3JpcHQvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jpby8uL3NyYy9jb25zdC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvc2VxX2FsaWduLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9hdG9taWMtd29ya3MudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29udmVydC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9zZXF1ZW5jZS1hY3Rpdml0eS1jbGlmZnMudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLXNwYWNlLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy91dGlscy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlci50cyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvd3UvZGlzdC93dS5qcyIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiJFwiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJncm9rXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInJ4anNcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jpby8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgKGdsb2JhbCA9IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuQWlvbGkgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cbiAgdmFyIG5hbWUgPSBcIkBiaW93YXNtL2Fpb2xpXCI7XG4gIHZhciB2ZXJzaW9uID0gXCIyLjQuMC1yYzJcIjtcbiAgdmFyIGRlc2NyaXB0aW9uID0gXCJBIGZyYW1ld29yayBmb3IgYnVpbGRpbmcgV2ViQXNzZW1ibHktYmFzZWQgZ2Vub21pY3MgdG9vbHNcIjtcbiAgdmFyIGJyb3dzZXIgPSBcImRpc3QvYWlvbGkuanNcIjtcbiAgdmFyIHdvcmtlciA9IFwiZGlzdC9haW9saS53b3JrZXIuanNcIjtcbiAgdmFyIG1haW4gPSBcImFpb2xpLmpzXCI7XG4gIHZhciByZXBvc2l0b3J5ID0ge1xuICBcdHR5cGU6IFwiZ2l0XCIsXG4gIFx0dXJsOiBcImdpdCtodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9haW9saS5naXRcIlxuICB9O1xuICB2YXIgYXV0aG9yID0gXCJSb2JlcnQgQWJvdWtoYWxpbFwiO1xuICB2YXIgbGljZW5zZSA9IFwiTUlUXCI7XG4gIHZhciBkZXBlbmRlbmNpZXMgPSB7XG4gIFx0Y29tbGluazogXCJeNC4zLjFcIixcbiAgXHRcIndhc20tZmVhdHVyZS1kZXRlY3RcIjogXCJeMS4yLjExXCJcbiAgfTtcbiAgdmFyIGRldkRlcGVuZGVuY2llcyA9IHtcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI6IFwiXjExLjAuMVwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tanNvblwiOiBcIl40LjEuMFwiLFxuICBcdFwiQHJvbGx1cC9wbHVnaW4tbm9kZS1yZXNvbHZlXCI6IFwiXjcuMC4wXCIsXG4gIFx0Y3lwcmVzczogXCJeOC4wLjBcIixcbiAgXHRyb2xsdXA6IFwiXjEuMjkuMFwiLFxuICBcdFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIlxuICB9O1xuICB2YXIgc2NyaXB0cyA9IHtcbiAgXHRidWlsZDogXCJyb2xsdXAgLWNcIixcbiAgXHRkZXY6IFwicm9sbHVwIC1jIC13XCIsXG4gIFx0dGVzdDogXCJjeXByZXNzIHJ1blwiLFxuICBcdFwidGVzdC1vcGVuXCI6IFwiY3lwcmVzcyBvcGVuXCJcbiAgfTtcbiAgdmFyIGZpbGVzID0gW1xuICBcdFwiZGlzdFwiXG4gIF07XG4gIHZhciBwa2cgPSB7XG4gIFx0bmFtZTogbmFtZSxcbiAgXHR2ZXJzaW9uOiB2ZXJzaW9uLFxuICBcdGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgXHRicm93c2VyOiBicm93c2VyLFxuICBcdHdvcmtlcjogd29ya2VyLFxuICBcdG1haW46IG1haW4sXG4gIFx0cmVwb3NpdG9yeTogcmVwb3NpdG9yeSxcbiAgXHRhdXRob3I6IGF1dGhvcixcbiAgXHRsaWNlbnNlOiBsaWNlbnNlLFxuICBcdGRlcGVuZGVuY2llczogZGVwZW5kZW5jaWVzLFxuICBcdGRldkRlcGVuZGVuY2llczogZGV2RGVwZW5kZW5jaWVzLFxuICBcdHNjcmlwdHM6IHNjcmlwdHMsXG4gIFx0ZmlsZXM6IGZpbGVzXG4gIH07XG5cbiAgLyoqXHJcbiAgICogQ29weXJpZ2h0IDIwMTkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xyXG4gICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnByb3h5XCIpO1xyXG4gIGNvbnN0IGNyZWF0ZUVuZHBvaW50ID0gU3ltYm9sKFwiQ29tbGluay5lbmRwb2ludFwiKTtcclxuICBjb25zdCByZWxlYXNlUHJveHkgPSBTeW1ib2woXCJDb21saW5rLnJlbGVhc2VQcm94eVwiKTtcclxuICBjb25zdCB0aHJvd01hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsudGhyb3duXCIpO1xyXG4gIGNvbnN0IGlzT2JqZWN0ID0gKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIgJiYgdmFsICE9PSBudWxsKSB8fCB0eXBlb2YgdmFsID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlIHRvIGhhbmRsZSBvYmplY3RzIG1hcmtlZCB0byBwcm94eS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eVRyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIHZhbFtwcm94eU1hcmtlcl0sXHJcbiAgICAgIHNlcmlhbGl6ZShvYmopIHtcclxuICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQxKTtcclxuICAgICAgICAgIHJldHVybiBbcG9ydDIsIFtwb3J0Ml1dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShwb3J0KSB7XHJcbiAgICAgICAgICBwb3J0LnN0YXJ0KCk7XHJcbiAgICAgICAgICByZXR1cm4gd3JhcChwb3J0KTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZXIgdG8gaGFuZGxlIHRocm93biBleGNlcHRpb25zLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRocm93VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWx1ZSkgPT4gaXNPYmplY3QodmFsdWUpICYmIHRocm93TWFya2VyIGluIHZhbHVlLFxyXG4gICAgICBzZXJpYWxpemUoeyB2YWx1ZSB9KSB7XHJcbiAgICAgICAgICBsZXQgc2VyaWFsaXplZDtcclxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHtcclxuICAgICAgICAgICAgICAgICAgaXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc3RhY2s6IHZhbHVlLnN0YWNrLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0geyBpc0Vycm9yOiBmYWxzZSwgdmFsdWUgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBbc2VyaWFsaXplZCwgW11dO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXNlcmlhbGl6ZShzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICBpZiAoc2VyaWFsaXplZC5pc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3Ioc2VyaWFsaXplZC52YWx1ZS5tZXNzYWdlKSwgc2VyaWFsaXplZC52YWx1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBzZXJpYWxpemVkLnZhbHVlO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBzZXJpYWxpemF0aW9uIG9mIGNlcnRhaW4gdmFsdWVzLlxyXG4gICAqL1xyXG4gIGNvbnN0IHRyYW5zZmVySGFuZGxlcnMgPSBuZXcgTWFwKFtcclxuICAgICAgW1wicHJveHlcIiwgcHJveHlUcmFuc2ZlckhhbmRsZXJdLFxyXG4gICAgICBbXCJ0aHJvd1wiLCB0aHJvd1RyYW5zZmVySGFuZGxlcl0sXHJcbiAgXSk7XHJcbiAgZnVuY3Rpb24gZXhwb3NlKG9iaiwgZXAgPSBzZWxmKSB7XHJcbiAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGNhbGxiYWNrKGV2KSB7XHJcbiAgICAgICAgICBpZiAoIWV2IHx8ICFldi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgeyBpZCwgdHlwZSwgcGF0aCB9ID0gT2JqZWN0LmFzc2lnbih7IHBhdGg6IFtdIH0sIGV2LmRhdGEpO1xyXG4gICAgICAgICAgY29uc3QgYXJndW1lbnRMaXN0ID0gKGV2LmRhdGEuYXJndW1lbnRMaXN0IHx8IFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHBhdGguc2xpY2UoMCwgLTEpLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBwYXRoLnJlZHVjZSgob2JqLCBwcm9wKSA9PiBvYmpbcHJvcF0sIG9iaik7XHJcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJHRVRcIiAvKiBHRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiU0VUXCIgLyogU0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFtwYXRoLnNsaWNlKC0xKVswXV0gPSBmcm9tV2lyZVZhbHVlKGV2LmRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQVBQTFlcIiAvKiBBUFBMWSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlLmFwcGx5KHBhcmVudCwgYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IHJhd1ZhbHVlKC4uLmFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm94eSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9zZShvYmosIHBvcnQyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRyYW5zZmVyKHBvcnQxLCBbcG9ydDFdKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXRjaCAodmFsdWUpIHtcclxuICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXR1cm5WYWx1ZSlcclxuICAgICAgICAgICAgICAuY2F0Y2goKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWUsIFt0aHJvd01hcmtlcl06IDAgfTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3dpcmVWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB3aXJlVmFsdWUpLCB7IGlkIH0pLCB0cmFuc2ZlcmFibGVzKTtcclxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLykge1xyXG4gICAgICAgICAgICAgICAgICAvLyBkZXRhY2ggYW5kIGRlYWN0aXZlIGFmdGVyIHNlbmRpbmcgcmVsZWFzZSByZXNwb25zZSBhYm92ZS5cclxuICAgICAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgY2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSB7XHJcbiAgICAgIHJldHVybiBlbmRwb2ludC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk1lc3NhZ2VQb3J0XCI7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQoZW5kcG9pbnQpIHtcclxuICAgICAgaWYgKGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpKVxyXG4gICAgICAgICAgZW5kcG9pbnQuY2xvc2UoKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gd3JhcChlcCwgdGFyZ2V0KSB7XHJcbiAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgW10sIHRhcmdldCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUmVsZWFzZWQpIHtcclxuICAgICAgaWYgKGlzUmVsZWFzZWQpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3h5IGhhcyBiZWVuIHJlbGVhc2VkIGFuZCBpcyBub3QgdXNlYWJsZVwiKTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBjcmVhdGVQcm94eShlcCwgcGF0aCA9IFtdLCB0YXJnZXQgPSBmdW5jdGlvbiAoKSB7IH0pIHtcclxuICAgICAgbGV0IGlzUHJveHlSZWxlYXNlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0YXJnZXQsIHtcclxuICAgICAgICAgIGdldChfdGFyZ2V0LCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gcmVsZWFzZVByb3h5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUVuZFBvaW50KGVwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb3h5UmVsZWFzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSBcInRoZW5cIikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHRoZW46ICgpID0+IHByb3h5IH07XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIgLyogR0VUICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByLnRoZW4uYmluZChyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbLi4ucGF0aCwgcHJvcF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldChfdGFyZ2V0LCBwcm9wLCByYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgLy8gRklYTUU6IEVTNiBQcm94eSBIYW5kbGVyIGBzZXRgIG1ldGhvZHMgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBhXHJcbiAgICAgICAgICAgICAgLy8gYm9vbGVhbi4gVG8gc2hvdyBnb29kIHdpbGwsIHdlIHJldHVybiB0cnVlIGFzeW5jaHJvbm91c2x5IMKvXFxfKOODhClfL8KvXHJcbiAgICAgICAgICAgICAgY29uc3QgW3ZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJhd1ZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIlNFVFwiIC8qIFNFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhdGgsIHByb3BdLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZywgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBsYXN0ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBjcmVhdGVFbmRwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvLyBXZSBqdXN0IHByZXRlbmQgdGhhdCBgYmluZCgpYCBkaWRu4oCZdCBoYXBwZW4uXHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IFwiYmluZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgcGF0aC5zbGljZSgwLCAtMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkFQUExZXCIgLyogQVBQTFkgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJ1Y3QoX3RhcmdldCwgcmF3QXJndW1lbnRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICBjb25zdCBbYXJndW1lbnRMaXN0LCB0cmFuc2ZlcmFibGVzXSA9IHByb2Nlc3NBcmd1bWVudHMocmF3QXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBwcm94eTtcclxuICB9XHJcbiAgZnVuY3Rpb24gbXlGbGF0KGFycikge1xyXG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJyKTtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyhhcmd1bWVudExpc3QpIHtcclxuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gYXJndW1lbnRMaXN0Lm1hcCh0b1dpcmVWYWx1ZSk7XHJcbiAgICAgIHJldHVybiBbcHJvY2Vzc2VkLm1hcCgodikgPT4gdlswXSksIG15RmxhdChwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzFdKSldO1xyXG4gIH1cclxuICBjb25zdCB0cmFuc2ZlckNhY2hlID0gbmV3IFdlYWtNYXAoKTtcclxuICBmdW5jdGlvbiB0cmFuc2ZlcihvYmosIHRyYW5zZmVycykge1xyXG4gICAgICB0cmFuc2ZlckNhY2hlLnNldChvYmosIHRyYW5zZmVycyk7XHJcbiAgICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb3h5KG9iaikge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihvYmosIHsgW3Byb3h5TWFya2VyXTogdHJ1ZSB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdG9XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgZm9yIChjb25zdCBbbmFtZSwgaGFuZGxlcl0gb2YgdHJhbnNmZXJIYW5kbGVycykge1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXIuY2FuSGFuZGxlKHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtzZXJpYWxpemVkVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gaGFuZGxlci5zZXJpYWxpemUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNmZXJhYmxlcyxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogXCJSQVdcIiAvKiBSQVcgKi8sXHJcbiAgICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdHJhbnNmZXJDYWNoZS5nZXQodmFsdWUpIHx8IFtdLFxyXG4gICAgICBdO1xyXG4gIH1cclxuICBmdW5jdGlvbiBmcm9tV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0cmFuc2ZlckhhbmRsZXJzLmdldCh2YWx1ZS5uYW1lKS5kZXNlcmlhbGl6ZSh2YWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgICBjYXNlIFwiUkFXXCIgLyogUkFXICovOlxyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcclxuICAgICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCBtc2csIHRyYW5zZmVycykge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGlkID0gZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICAgICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBsKGV2KSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFldi5kYXRhIHx8ICFldi5kYXRhLmlkIHx8IGV2LmRhdGEuaWQgIT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZXAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShldi5kYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgZXAuc3RhcnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oeyBpZCB9LCBtc2cpLCB0cmFuc2ZlcnMpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5KDQpXHJcbiAgICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgICAgLm1hcCgoKSA9PiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKVxyXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xyXG4gIH1cbiAgLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tbGluay5tanMubWFwXG5cbiAgLy8gQ29uc3RhbnRzXG4gIGNvbnN0IFVSTF9DRE5fUk9PVCA9IFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjJcIjtcbiAgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBcdC8vIEJpb3dhc20gQ0ROIFVSTHNcbiAgXHR1cmxDRE46IFVSTF9DRE5fUk9PVCxcbiAgXHQvLyBHZXQgdGhlIFdvcmtlciBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgQWlvbGkgdmVyc2lvblxuICBcdHVybEFpb2xpOiBgJHtVUkxfQ0ROX1JPT1R9L2Fpb2xpLyR7cGtnLnZlcnNpb259L2Fpb2xpLndvcmtlci5qc2AsXG4gIFx0Ly8gV2hlcmUgd2UgY2FuIGZpbmQgdGhlIGJhc2UgYmlvd2FzbSBtb2R1bGUgKG9ubHkgbW9kaWZ5IHRoaXMgZm9yIGxvY2FsIGRldmVsb3BtZW50KVxuICBcdHVybEJhc2VNb2R1bGU6IG51bGwsXG5cbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyB0aGUgc2hhcmVkIGZpbGVzeXN0ZW1cbiAgXHRkaXJTaGFyZWQ6IFwiL3NoYXJlZFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIEZpbGUvQmxvYiBvYmplY3RzIHRvIHRoZSB2aXJ0dWFsIGZpbGUgc3lzdGVtXG4gIFx0ZGlyTW91bnRlZDogXCIvbW50XCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3Igc3ltbGlua3MgKGJhc2ljYWxseSwgd2UgbWFrZSBhIHN5bWxpbmsgdG8gZWFjaCBmaWxlIG1vdW50ZWQgb24gV09SS0VSRlNcbiAgXHQvLyBzbyB0aGF0IG9wZXJhdGlvbnMgbGlrZSBcInNhbXRvb2xzIGluZGV4XCIgZG9uJ3QgY3Jhc2ggZHVlIHRvIHRoZSByZWFkLW9ubHkgbmF0dXJlIG9mIFdPUktFUlMpLlxuICBcdC8vIEFsc28gbW91bnQgVVJMcyBsYXppbHkgaW4gdGhhdCBmb2xkZXIuXG4gIFx0ZGlyRGF0YTogXCIvZGF0YVwiLFxuICBcdC8vIEludGVybGVhdmUgc3Rkb3V0L3N0ZGVyci4gSWYgc2V0IHRvIGZhbHNlLCBgLmV4ZWMoKWAgcmV0dXJucyBhbiBvYmplY3QgeyBcInN0ZG91dFwiOiA8dGV4dD4sIFwic3RkZXJyXCI6IDx0ZXh0PiB9XG4gIFx0cHJpbnRJbnRlcmxlYXZlZDogdHJ1ZSxcblxuICBcdC8vIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJ1biB3aGVuZXZlciB3ZSByZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBXZWJXb3JrZXIgd2l0aCBwYXlsb2FkIHsgdHlwZTogXCJiaW93YXNtXCIsIHZhbHVlOiAuLi4gfS5cbiAgXHQvLyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Jpb3dhc20vdHJlZS9tYWluL3Rvb2xzL2JodHNuZT4gZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgY2FuIGJlIHVzZWQgdG8gc2VuZCByZWd1bGFyIHVwZGF0ZXNcbiAgXHQvLyBiYWNrIHRvIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbE1haW4oKSBpcyBkb25lIHJ1bm5pbmcuXG4gIFx0Y2FsbGJhY2s6IG51bGwsXG5cbiAgXHQvLyBEZWJ1Z2dpbmdcbiAgXHRkZWJ1ZzogZmFsc2UsXG4gIFx0ZW52OiBcInByZFwiXG4gIH07XG5cbiAgLy8gQ2xhc3M6IDEgb2JqZWN0ID0gMSB3b3JrZXI7IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV5IHdhbnQgdG9vbHMgcnVubmluZyBpbiBzZXBhcmF0ZSB0aHJlYWRzIG9yIGFsbCBvZiB0aGVtIGluIG9uZVxuICBjbGFzcyBBaW9saVxuICB7XG4gIFx0Y29uc3RydWN0b3IodG9vbHMsIGNvbmZpZz17fSlcbiAgXHR7XG4gIFx0XHRpZih0b29scyA9PSBudWxsKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyBhcnJheSBvZiB0b29scyBhcyBpbnB1dCB0byBBaW9saSBjb25zdHJ1Y3Rvci5cIjtcblxuICBcdFx0Ly8gUGFyc2UgdXNlciBpbnB1dFxuICBcdFx0aWYoIUFycmF5LmlzQXJyYXkodG9vbHMpKVxuICBcdFx0XHR0b29scyA9IFsgdG9vbHMgXTtcbiAgXHRcdC8vIE92ZXJ3cml0ZSBkZWZhdWx0IGNvbmZpZyBpZiBzcGVjaWZpZWRcbiAgXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIENPTkZJR19ERUZBVUxUUywgY29uZmlnKTtcbiAgXHRcdC8vIEZvciBjb252ZW5pZW5jZSwgc3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBvciBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW5zdGVhZCBvZiBvYmplY3QgY29uZmlnXG4gIFx0XHR0b29scyA9IHRvb2xzLm1hcCh0aGlzLl9wYXJzZVRvb2wpO1xuICBcdFx0Ly8gSWYgdGVzdGluZyB3aXRoIGRpZmZlcmVudCBlbnZpcm9ubWVudCBlLmcuIGNkbi1zdGcuYmlvd2FzbS5jb21cbiAgXHRcdGlmKGNvbmZpZy5lbnYgIT0gXCJwcmRcIikge1xuICBcdFx0XHRjb25maWcudXJsQ0ROID0gY29uZmlnLnVybENETi5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0XHRjb25maWcudXJsQWlvbGkgPSBjb25maWcudXJsQWlvbGkucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdH1cblxuICBcdFx0Ly8gQWRkIGJpb3dhc20gYmFzZSBtb2R1bGUgdG8gbGlzdCBvZiB0b29scyB0byBpbml0aWFsaXplIChuZWVkIHRoaXMgZm9yIHRoZSBzaGFyZWQgdmlydHVhbCBmaWxlc3lzdGVtKVxuICBcdFx0dG9vbHMgPSBbe1xuICBcdFx0XHR0b29sOiBcImJhc2VcIixcbiAgXHRcdFx0dmVyc2lvbjogcGtnLnZlcnNpb24sXG4gIFx0XHRcdHVybFByZWZpeDogY29uZmlnLnVybEJhc2VNb2R1bGVcbiAgXHRcdH0sIC4uLnRvb2xzXTtcblxuICBcdFx0Ly8gU2V0IHN0YXRlXG4gIFx0XHR0aGlzLnRvb2xzID0gdG9vbHM7XG4gIFx0XHR0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICBcdFx0Ly8gSGFuZGxlIGNhbGxiYWNrIChkZWxldGUgaXQgYmVjYXVzZSB3ZSBjYW4ndCBzZW5kIGEgZnVuY3Rpb24gdG8gdGhlIFdlYldvcmtlcilcbiAgXHRcdGlmKHRoaXMuY29uZmlnLmNhbGxiYWNrICE9IG51bGwpXG4gIFx0XHRcdHRoaXMuY2FsbGJhY2sgPSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcbiAgXHRcdGRlbGV0ZSB0aGlzLmNvbmZpZy5jYWxsYmFjaztcblxuICBcdFx0cmV0dXJuIHRoaXMuaW5pdCgpO1xuICBcdH1cblxuICBcdC8vIEluaXRpYWxpemUgdGhlIFdlYldvcmtlciBhbmQgdGhlIFdlYkFzc2VtYmx5IG1vZHVsZXMgd2l0aGluIGl0XG4gIFx0YXN5bmMgaW5pdCgpIHtcbiAgXHRcdC8vIE5vdGU6IFdlIGNhbiBvbmx5IGNyZWF0ZSBhIFdlYldvcmtlciB1c2luZyBhIFVSTCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGFwcCBydW5uaW5nIGl0LCBpLmUuIHdlXG4gIFx0XHQvLyBjYW4ndCBkbyBgbmV3IFdvcmtlcihcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyLy4uLlwiKWAsIHNvIGluc3RlYWQgd2UgbmVlZCB0byBmZXRjaCB0aGUgY29udGVudHMgb2YgdGhhdFxuICBcdFx0Ly8gVVJMIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhlIFdlYldvcmtlci4gU2VlIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjAwMTU4OTg+LlxuICBcdFx0Y29uc3QgbW9kdWxlSlMgPSBhd2FpdCAoYXdhaXQgZmV0Y2godGhpcy5jb25maWcudXJsQWlvbGkpKS50ZXh0KCk7XG4gIFx0XHRjb25zdCBtb2R1bGVCbG9iID0gbmV3IEJsb2IoW21vZHVsZUpTXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KTtcblxuICBcdFx0Ly8gQ3JlYXRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChtb2R1bGVCbG9iKSk7XG4gIFx0XHQvLyBMaXN0ZW4gZm9yIFwiYmlvd2FzbVwiIG1lc3NhZ2VzIGZyb20gdGhlIFdlYldvcmtlclxuICBcdFx0aWYodGhpcy5jYWxsYmFjaylcbiAgXHRcdFx0d29ya2VyLm9ubWVzc2FnZSA9IGUgPT4ge1xuICBcdFx0XHRcdGlmKGUuZGF0YS50eXBlID09IFwiYmlvd2FzbVwiKVxuICBcdFx0XHRcdFx0dGhpcy5jYWxsYmFjayhlLmRhdGEudmFsdWUpO1xuICBcdFx0XHR9O1xuXG4gIFx0XHRjb25zdCBhaW9saSA9IHdyYXAod29ya2VyKTtcbiAgXHRcdGFpb2xpLnRvb2xzID0gdGhpcy50b29scztcbiAgXHRcdGFpb2xpLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuXG4gIFx0XHQvLyBJbml0aWFsaXplIHRoZSB0b29scyBpbnNpZGUgdGhlIFdlYldvcmtlclxuICBcdFx0YXdhaXQgYWlvbGkuaW5pdCgpO1xuXG4gIFx0XHRyZXR1cm4gYWlvbGk7XG4gIFx0fVxuXG4gIFx0Ly8gUGFyc2UgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnRvIHsgXCJ0b29sXCI6IDx0b29sPiwgXCJwcm9ncmFtXCI6IDxwcm9ncmFtPiwgXCJ2ZXJzaW9uXCI6IDx2ZXJzaW9uPiB9XG4gIFx0X3BhcnNlVG9vbCh0b29sKVxuICBcdHtcbiAgXHRcdC8vIElmIG5vdCBhIHN0cmluZywgbGVhdmUgaXQgYXMgaXNcbiAgXHRcdGlmKHR5cGVvZiB0b29sICE9PSBcInN0cmluZ1wiKVxuICBcdFx0XHRyZXR1cm4gdG9vbDtcblxuICBcdFx0Ly8gU3VwcG9ydCBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiXG4gIFx0XHRjb25zdCB0b29sU3BsaXQgPSB0b29sLnNwbGl0KFwiL1wiKTtcbiAgXHRcdGlmKHRvb2xTcGxpdC5sZW5ndGggIT0gMiAmJiB0b29sU3BsaXQubGVuZ3RoICE9IDMpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nICc8dG9vbD4vPHZlcnNpb24+JyBvciAnPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj4nXCI7XG5cbiAgXHRcdHJldHVybiB7XG4gIFx0XHRcdHRvb2w6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0cHJvZ3JhbTogdG9vbFNwbGl0Lmxlbmd0aCA9PSAzID8gdG9vbFNwbGl0WzFdIDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHR2ZXJzaW9uOiB0b29sU3BsaXRbdG9vbFNwbGl0Lmxlbmd0aCAtIDFdXG4gIFx0XHR9O1xuICBcdH1cbiAgfVxuXG4gIHJldHVybiBBaW9saTtcblxufSkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFpb2xpLmpzLm1hcFxuIiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkcyB7XG4gICAgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHN3aXRjaCAoc2NoZW1lKSB7XG4gICAgICAgICAgICBjYXNlICdncm9rJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICBjYXNlICdsZXNrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkxlc2s7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2hlbVBhbGV0dGU6IHNjaGVtZSBcXGAke3NjaGVtZX1cXGAgZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpdmlkZWQgYW1pbm8gYWNpZCB3aXRoIGl0cyBjb250ZW50IGluIHRoZSBicmFja2V0LCBpZiB0aGUgY29udGVudCBpcyBudW1iZXIsIHRoZW4gaXRzIG9taXR0ZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjIHJhdyBhbWlub1xuICAgICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZ119IG91dGVyIGFuZCBpbm5lciBjb250ZW50XG4gICAgICovXG4gICAgc3RhdGljIGdldElubmVyT3V0ZXIoYykge1xuICAgICAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgICAgIGxldCBpbm5lciA9ICcnO1xuICAgICAgICBsZXQgb3V0ZXIgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGMpIHtcbiAgICAgICAgICAgIGlmIChjaGFyID09ICcoJylcbiAgICAgICAgICAgICAgICBpc0lubmVyKys7XG4gICAgICAgICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgICAgICAgICBpc0lubmVyLS07XG4gICAgICAgICAgICBlbHNlIGlmIChpc0lubmVyKVxuICAgICAgICAgICAgICAgIGlubmVyICs9IGNoYXI7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0Q29sb3JBQVBpdm90KG1vbm9tZXIgPSAnJywgc2NoZW1lID0gJ2dyb2snKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICAvL2NvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSBBQVBhbGV0dGVzLkdyb2tHcm91cHMoKTtcbiAgICAgICAgY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IHRoaXMuZ2V0UGFsZXR0ZShzY2hlbWUpO1xuICAgICAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICAgICAgb3V0ZXJNb25vbWVyID0gKG91dGVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7b3V0ZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBvdXRlck1vbm9tZXIpO1xuICAgICAgICBpbm5lck1vbm9tZXIgPSAoaW5uZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtpbm5lck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IGlubmVyTW9ub21lcik7XG4gICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAxIHx8IG1vbm9tZXJbMV0gPT0gJygnKSB7XG4gICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYSA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDFdIDpcbiAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdIGluIGNoZW1QYWxldHRlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAyIHx8IG1vbm9tZXJbMl0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2IgPSBtb25vbWVyWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoKF9jID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnRvTG93ZXJDYXNlKCkpID09IG1vbm9tZXJbMF0pIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygxLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDEsIDMpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMF07XG4gICAgfVxufVxuQW1pbm9hY2lkcy5TZW1UeXBlID0gJ0FtaW5vYWNpZHMnO1xuQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnQW1pbm9hY2lkc011bHRpcGxlQWxpZ25tZW50JztcbkFtaW5vYWNpZHMudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5BbWlub2FjaWRzLk5hbWVzID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXMgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxufTtcbkFtaW5vYWNpZHMuQUFTbWlsZXNUcnVuY2F0ZWQgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG59O1xuLyoqIFRPRE86IEZ1bGw/XG4gKi9cbkFtaW5vYWNpZHMuQUFGdWxsTmFtZXMgPSB7XG4gICAgJ0FsYSc6ICdBJyxcbiAgICAnQXJnJzogJ1InLFxuICAgICdBc24nOiAnTicsXG4gICAgJ0FzcCc6ICdEJyxcbiAgICAnQ3lzJzogJ0MnLFxuICAgICdHbG4nOiAnUScsXG4gICAgJ0dsdSc6ICdFJyxcbiAgICAnR2x5JzogJ0cnLFxuICAgICdIaXMnOiAnSCcsXG4gICAgJ0lsZSc6ICdJJyxcbiAgICAnTGV1JzogJ0wnLFxuICAgICdMeXMnOiAnSycsXG4gICAgJ01ldCc6ICdNJyxcbiAgICAnUGhlJzogJ0YnLFxuICAgICdQcm8nOiAnUCcsXG4gICAgJ1Nlcic6ICdTJyxcbiAgICAnVGhyJzogJ1QnLFxuICAgICdUcnAnOiAnVycsXG4gICAgJ1R5cic6ICdZJyxcbiAgICAnVmFsJzogJ1YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXMXBibTloWTJsa2N5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1GdGFXNXZZV05wWkhNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJUeXhyUWtGQmJVSXNVMEZCVVN4alFVRmpPMGxCUnpkRExFMUJRVTBzUzBGQlN5eEpRVUZKTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUzBGQlN5eExRVUZMTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1owSkJRek5DTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRMmhETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRE5VUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVMEZCVXl4RFFVRkRPMmRDUVVNMVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNN1lVRkRla0lzUlVGQlJTeExRVUZMTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFRRVU12UWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCU1Uwc1RVRkJUU3hMUVVGTExGVkJRVlU3VVVGRE1VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1ZVRkJWU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlF6bENMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0blFrRkRha01zUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEzUkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRPMmRDUVVOdVFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRka1FzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzV1VGQldTeERRVUZETzJkQ1FVTXZRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGVrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRkZCUVZFc1EwRkJRenRoUVVOcVF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFOQlF5OUNPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzBsQlEzcENMRU5CUVVNN1NVRkpUU3hOUVVGTkxFdEJRVXNzVFVGQlRUdFJRVU4wUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzUzBGQlN5eERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhEUVVGRE8yZENRVU51UXl4NVJFRkJlVVE3WjBKQlEzcEVMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xGRkJRVkVzUlVGQlJTeFRRVUZUTzJGQlEzQkNMRU5CUVVNc1EwRkJRenRUUVVOS08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMGxCUTNKQ0xFTkJRVU03UTBGRFJqdEJRVVZFTEUxQlFVMHNUMEZCVHl4VlFVRlZPMGxCY1Vka0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNVMEZCYVVJc1RVRkJUVHRSUVVNNVF5eFJRVUZSTEUxQlFVMHNSVUZCUlR0WlFVTm9RaXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdXVUZEZGtNc1MwRkJTeXhOUVVGTk8yZENRVU5VTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFsQlEycERPMmRDUVVORkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFMUJRVTBzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRUUVVOeVJUdEpRVU5JTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlV6dFJRVU51UXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGFFSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUldZc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEVWQlFVVTdXVUZEY0VJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUjBGQlJ6dG5Ra0ZEWWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEVsQlFVa3NTVUZCU1N4SFFVRkhPMmRDUVVOc1FpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFOUJRVTg3WjBKQlEyUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenM3WjBKQlJXUXNTMEZCU3l4SlFVRkpMRWxCUVVrc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU5vUlN4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eFZRVUZyUWl4RlFVRkZMRVZCUVVVc1UwRkJhVUlzVFVGQlRUczdVVUZEZWtVc2MwUkJRWE5FTzFGQlEzUkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU53UkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGREwwUXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZETTBZc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkZNMFlzU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMWxCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0WlFVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNoRU8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdFpRVU16UkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVU3WjBKQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dG5Ra0ZEZWtNc1QwRkJUeXhMUVVGTExFbEJRVWtzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenR2UWtGRGJrTXNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNeFJDeERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRVZCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVmtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTjRSRHRUUVVOR08xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMWxCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0blFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMjlDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEzaEVPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVUVzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJTeExRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRaUVVNelF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHR2UWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8zZENRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2QwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVONFJEdGhRVU5HTzFOQlEwWTdVVUZGUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVOQlFVTTdPMEZCY0V4bExHdENRVUZQTEVkQlFWY3NXVUZCV1N4RFFVRkRPMEZCUlM5Q0xHMURRVUYzUWl4SFFVRlhMRFpDUVVFMlFpeERRVUZETzBGQlJURkZMSGxDUVVGakxFZEJRVWNzYTBKQlFXdENMRU5CUVVNN1FVRkZOMElzWjBKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRkZCUVZFN1NVRkRZaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hSUVVGUk8wbEJRMklzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1YwRkJWenREUVVOcVFpeERRVUZETzBGQlJWa3NiVUpCUVZFc1IwRkJjVUk3U1VGRGVrTXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTd3lRa0ZCTWtJN1NVRkRhRU1zUjBGQlJ5eEZRVUZGTEdOQlFXTTdTVUZEYmtJc1IwRkJSeXhGUVVGRkxIbENRVUY1UWp0SlFVTTVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEc5RFFVRnZRenRKUVVONlF5eEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdERRVU4yUWl4RFFVRkRPMEZCUlZrc05FSkJRV2xDTEVkQlFYRkNPMGxCUTJ4RUxFZEJRVWNzUlVGQlJTeExRVUZMTzBsQlExWXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4dFFrRkJiVUk3U1VGRGVFSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4alFVRmpPMGxCUTI1Q0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNaMEpCUVdkQ08wbEJRM0pDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGhRVUZoTzBsQlEyeENMRWRCUVVjc1JVRkJSU3dyUWtGQkswSTdTVUZEY0VNc1IwRkJSeXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXhRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHREUVVOc1FpeERRVUZETzBGQlJVWTdSMEZEUnp0QlFVTlhMSE5DUVVGWExFZEJRWEZDTzBsQlF6VkRMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdRMEZEV0N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHeGxjMnM2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVEdWemF5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVzWlhOcklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWJHVnpheUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjBFbkxDQW5VeWNzSUNkVUoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJQ0FnVzFzblF5Y3NJQ2RXSnl3Z0owa25MQ0FuVENjc0lDZFFKeXdnSjBZbkxDQW5XU2NzSUNkTkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkT0p5d2dKMUVuTENBblNDZGRMQ0FuYldGblpXNTBZU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRMSnl3Z0oxSW5YU3dnSjJGc2JGOWliSFZsSjEwc1hHNGdJQ0FnSUNCZExDQm1ZV3h6WlN3Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWJHVnphenRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR2R5YjJ0SGNtOTFjSE02SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUjNKdmEwZHliM1Z3Y3lncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NW5jbTlyUjNKdmRYQnpJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaM0p2YTBkeWIzVndjeUE5SUhSb2FYTXViV0ZyWlZCaGJHVjBkR1VvVzF4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFVblhTd2dKM2xsYkd4dmR5ZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMUFuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEJKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMDBuTENBblJpY3NJQ2RaSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRTSnl3Z0owZ25MQ0FuU3lkZExDQW5iR2xuYUhSZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZEVKeXdnSjBVblhTd2dKMlJoY210ZllteDFaU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZFRKeXdnSjFRbkxDQW5UaWNzSUNkUkoxMHNJQ2R2Y21GdVoyVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVuY205clIzSnZkWEJ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nY21GelRXOXNPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRkpoYzAxdmJDZ3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV5WVhOTmIyd2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlZWE5OYjJ3Z1BTQnVaWGNnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S0h0Y2JpQWdJQ0FnSUNBZ0x5OGdhSFIwY0RvdkwyRmpZMlZ6TG1WdWN5MXNlVzl1TG1aeUwySnBiM1JwWXk5eVlYTjBiM0F2YUdWc2NDOWpiMnh2ZFhJdWFIUnRYRzRnSUNBZ0lDQWdJQ2RFSnpvZ0p5TkZOakJCTUVFbkxDQXZMeUJoYzNBc0lHRnpjR0Z5ZEdsaklHRmphV1FzSUdGemNGeHVJQ0FnSUNBZ0lDQW5SU2M2SUNjalJUWXdRVEJCSnl3Z0x5OGdaMngxTENCbmJIVjBZVzFwWXlCaFkybGtYRzRnSUNBZ0lDQWdJQ2RESnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJqZVhNc0lHTjVjM1JsYVc1bFhHNGdJQ0FnSUNBZ0lDZE5Kem9nSnlORk5rVTJNREFuTENBdkx5QnRaWFFzSUcxbGRHaHBiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owc25PaUFuSXpFME5VRkdSaWNzSUM4dklHeDVjeXdnYkhsemFXNWxYRzRnSUNBZ0lDQWdJQ2RTSnpvZ0p5TXhORFZCUmtZbkxDQXZMeUJoY21jc0lHRnlaMmx1YVc1bFhHNGdJQ0FnSUNBZ0lDZFRKem9nSnlOR1FUazJNREFuTENBdkx5QnpaWElzSUhObGNtbHVaVnh1SUNBZ0lDQWdJQ0FuVkNjNklDY2pSa0U1TmpBd0p5d2dMeThnZEdoeUxDQjBhSEpsYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMFluT2lBbkl6TXlNekpCUVNjc0lDOHZJSEJvWlN3Z2NHaGxibmxzWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuV1NjNklDY2pNekl6TWtGQkp5d2dMeThnZEhseUxDQjBlWEp2YzJsdVpWeHVJQ0FnSUNBZ0lDQW5UaWM2SUNjak1EQkVRMFJESnl3Z0x5OGdZWE51TENCaGMzQmhjbUZuYVc1bFhHNGdJQ0FnSUNBZ0lDZFJKem9nSnlNd01FUkRSRU1uTENBdkx5Qm5iRzRzSUdkc2RYUmhiV2x1WlZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2NqUlVKRlFrVkNKeXdnTHk4Z1oyeDVMQ0JuYkhsamFXNWxYRzRnSUNBZ0lDQWdJQ2RNSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJzWlhVc0lHeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0oxWW5PaUFuSXpCR09ESXdSaWNzSUM4dklIWmhiQ3dnZG1Gc2FXNWxYRzRnSUNBZ0lDQWdJQ2RKSnpvZ0p5TXdSamd5TUVZbkxDQXZMeUJwYkdVc0lHbHpiMnhsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMEVuT2lBbkkwTTRRemhET0Njc0lDOHZJR0ZzWVN3Z1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBblZ5YzZJQ2NqUWpRMVFVSTBKeXdnTHk4Z2RISndMQ0IwY25sd2RHOXdhR0Z1WEc0Z0lDQWdJQ0FnSUNkSUp6b2dKeU00TWpneVJESW5MQ0F2THlCb2FYTXNJR2hwYzNScFpHbHVaVnh1SUNBZ0lDQWdJQ0FuVUNjNklDY2pSRU01TmpneUp5d2dMeThnY0hKdkxDQndjbTlzYVc1bFhHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5JMEpGUVRBMlJTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjbUZ6VFc5c08xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSeklIdGNiaUFnYzNSaGRHbGpJSEpsWVdSdmJteDVJRk5sYlZSNWNHVTZJSE4wY21sdVp5QTlJQ2RCYldsdWIyRmphV1J6Snp0Y2JseHVJQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qk9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2RIYkhsamFXNWxKeXhjYmlBZ0lDQW5UQ2M2SUNkTVpYVmphVzVsSnl4Y2JpQWdJQ0FuV1NjNklDZFVlWEp2YzJsdVpTY3NYRzRnSUNBZ0oxTW5PaUFuVTJWeWFXNWxKeXhjYmlBZ0lDQW5SU2M2SUNkSGJIVjBZVzFwWXlCaFkybGtKeXhjYmlBZ0lDQW5VU2M2SUNkSGJIVjBZVzFwYm1VbkxGeHVJQ0FnSUNkRUp6b2dKMEZ6Y0dGeWRHbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkT0p6b2dKMEZ6Y0dGeVlXZHBibVVuTEZ4dUlDQWdJQ2RHSnpvZ0oxQm9aVzU1YkdGc1lXNXBibVVuTEZ4dUlDQWdJQ2RCSnpvZ0owRnNZVzVwYm1VbkxGeHVJQ0FnSUNkTEp6b2dKMHg1YzJsdVpTY3NYRzRnSUNBZ0oxSW5PaUFuUVhKbmFXNXBibVVuTEZ4dUlDQWdJQ2RJSnpvZ0owaHBjM1JwWkdsdVpTY3NYRzRnSUNBZ0owTW5PaUFuUTNsemRHVnBibVVuTEZ4dUlDQWdJQ2RXSnpvZ0oxWmhiR2x1WlNjc1hHNGdJQ0FnSjFBbk9pQW5VSEp2YkdsdVpTY3NYRzRnSUNBZ0oxY25PaUFuVkhKNWNIUnZjR2hoYmljc1hHNGdJQ0FnSjBrbk9pQW5TWE52YkdWMVkybHVaU2NzWEc0Z0lDQWdKMDBuT2lBblRXVjBhR2x2Ym1sdVpTY3NYRzRnSUNBZ0oxUW5PaUFuVkdoeVpXOXVhVzVsSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKMDVEUXlnOVR5bFBKeXhjYmlBZ0lDQW5UQ2M2SUNkT1cwTkFTRjBvUTBNb1F5bERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxa25PaUFuVGtNb1EwTXhQVU5EUFVNb1R5bERQVU14S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMU1uT2lBblRrTW9RMDhwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SU2M2SUNkT1cwTkFRRWhkS0VORFF5aFBLVDFQS1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUVuT2lBblRsdERRRUJJWFNoRFEwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RFSnpvZ0owNWJRMEJBU0Ywb1EwTW9UeWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RPSnpvZ0owNWJRMEJBU0Ywb1EwTW9UaWs5VHlsREtEMVBLVThuTEZ4dUlDQWdJQ2RHSnpvZ0owNURLRU5ETVQxRFF6MURRejFETVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RCSnpvZ0owNWJRMEJJWFNoREtVTW9QVThwVHljc1hHNGdJQ0FnSjBzbk9pQW5Ua01vUTBORFEwNHBReWc5VHlsUEp5eGNiaUFnSUNBblVpYzZJQ2RPVzBOQVNGMG9RME5EVGtNb1BVNHBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZElKem9nSjA1REtFTkRNVDFEVGoxRFcwNWRNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZERKem9nSjA1YlEwQkFTRjBvUTFNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVmljNklDZE9ReWhES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkUUp6b2dKMDRvUTBORE1TbERNVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxY25PaUFuVGx0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1VNb1BVOHBUeWNzWEc0Z0lDQWdKMGtuT2lBblRsdERRRWhkS0Z0RFFFaGRLRU1wUTBNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVFNjNklDZE9ReWhEUTFOREtVTW9QVThwVHljc1hHNGdJQ0FnSjFRbk9pQW5Ua01vUXloUEtVTXBReWc5VHlsUEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWelZISjFibU5oZEdWa09pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSnlwREtpY3NYRzRnSUNBZ0owd25PaUFuUTBNb1F5bERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5XU2M2SUNkRE1UMURReWc5UTBNOVF6RkRReWdxS1NvcFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVDBOREtDb3BReW9uTEZ4dUlDQWdJQ2RGSnpvZ0p5cGJRMEJBU0Ywb1EwTkRLRThwUFU4cEtpY3NYRzRnSUNBZ0oxRW5PaUFuS2s1YlEwQkFTRjBvUTBOREtFNHBQVThwS2ljc1hHNGdJQ0FnSjBRbk9pQW5LbHREUUVCSVhTaERReWhQS1QxUEtTb25MRnh1SUNBZ0lDZE9Kem9nSnlwYlEwQkFTRjBvUTBNb1RpazlUeWtxSnl4Y2JpQWdJQ0FuUmljNklDZERNVDFEUXoxREtFTTlRekVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5RU2M2SUNkRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblN5YzZJQ2RES0VORFRpbERReWdxS1NvbkxGeHVJQ0FnSUNkU0p6b2dKeXBiUTBCSVhTaERRME5PUXlnOVRpbERLU29uTEZ4dUlDQWdJQ2RJSnpvZ0owTXhQVU1vVGtNOVRqRXBRME1vS2lrcUp5eGNiaUFnSUNBblF5YzZJQ2RES0Z0RFFFQklYU2dxS1NvcFV5Y3NYRzRnSUNBZ0oxWW5PaUFuUTBNb1F5bERLQ29wS2ljc1hHNGdJQ0FnSjFBbk9pQW5RekZEUTA0b0tpbERNU29uTEZ4dUlDQWdJQ2RYSnpvZ0p5cGJRMEJBU0Ywb1EyTXhZekpqWTJOall6SnVLRnRJWFNsak1Ta3FKeXhjYmlBZ0lDQW5TU2M2SUNkRFExdERRRWhkS0VNcFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBblRTYzZJQ2REVTBORFF5Z3FLU29uTEZ4dUlDQWdJQ2RVSnpvZ0owTkRLRThwUXlncUtTb25MRnh1SUNCOU8xeHVYRzRnSUM4cUtpQlVUMFJQT2lCR2RXeHNQMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QkJRVVoxYkd4T1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUVd4aEp6b2dKMEVuTEZ4dUlDQWdJQ2RCY21jbk9pQW5VaWNzWEc0Z0lDQWdKMEZ6YmljNklDZE9KeXhjYmlBZ0lDQW5RWE53SnpvZ0owUW5MRnh1SUNBZ0lDZERlWE1uT2lBblF5Y3NYRzRnSUNBZ0owZHNiaWM2SUNkUkp5eGNiaUFnSUNBblIyeDFKem9nSjBVbkxGeHVJQ0FnSUNkSGJIa25PaUFuUnljc1hHNGdJQ0FnSjBocGN5YzZJQ2RJSnl4Y2JpQWdJQ0FuU1d4bEp6b2dKMGtuTEZ4dUlDQWdJQ2RNWlhVbk9pQW5UQ2NzWEc0Z0lDQWdKMHg1Y3ljNklDZExKeXhjYmlBZ0lDQW5UV1YwSnpvZ0owMG5MRnh1SUNBZ0lDZFFhR1VuT2lBblJpY3NYRzRnSUNBZ0oxQnlieWM2SUNkUUp5eGNiaUFnSUNBblUyVnlKem9nSjFNbkxGeHVJQ0FnSUNkVWFISW5PaUFuVkNjc1hHNGdJQ0FnSjFSeWNDYzZJQ2RYSnl4Y2JpQWdJQ0FuVkhseUp6b2dKMWtuTEZ4dUlDQWdJQ2RXWVd3bk9pQW5WaWNzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSUVlXeGxkSFJsS0hOamFHVnRaVG9nYzNSeWFXNW5JRDBnSjJkeWIyc25LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WTJobGJXVXBJSHRjYmlBZ0lDQmpZWE5sSUNkbmNtOXJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQmpZWE5sSUNkc1pYTnJKenBjYmlBZ0lDQWdJSEpsZEhWeWJpQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVUR1Z6YXp0Y2JpQWdJQ0JrWldaaGRXeDBPbHh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkRhR1Z0VUdGc1pYUjBaVG9nYzJOb1pXMWxJRnhjWUNSN2MyTm9aVzFsZlZ4Y1lDQmtiMlZ6SUc1dmRDQmxlR2x6ZEdBcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBkbWxrWldRZ1lXMXBibThnWVdOcFpDQjNhWFJvSUdsMGN5QmpiMjUwWlc1MElHbHVJSFJvWlNCaWNtRmphMlYwTENCcFppQjBhR1VnWTI5dWRHVnVkQ0JwY3lCdWRXMWlaWElzSUhSb1pXNGdhWFJ6SUc5dGFYUjBaV1JjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUdNZ2NtRjNJR0Z0YVc1dlhHNGdJQ0FxSUVCeVpYUjFjbTRnZTF0emRISnBibWNzSUhOMGNtbHVaMTE5SUc5MWRHVnlJR0Z1WkNCcGJtNWxjaUJqYjI1MFpXNTBYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRWx1Ym1WeVQzVjBaWElvWXpvZ2MzUnlhVzVuS1RvZ1czTjBjbWx1Wnl3Z2MzUnlhVzVuWFNCN1hHNGdJQ0FnYkdWMElHbHpTVzV1WlhJZ1BTQXdPMXh1SUNBZ0lHeGxkQ0JwYm01bGNpQTlJQ2NuTzF4dUlDQWdJR3hsZENCdmRYUmxjaUE5SUNjbk8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphR0Z5SUc5bUlHTXBJSHRjYmlBZ0lDQWdJR2xtSUNoamFHRnlJRDA5SUNjb0p5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpc3JPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9ZMmhoY2lBOVBTQW5LU2NwWEc0Z0lDQWdJQ0FnSUdselNXNXVaWEl0TFR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dselNXNXVaWElwWEc0Z0lDQWdJQ0FnSUdsdWJtVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUc5MWRHVnlJQ3M5SUdOb1lYSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNGcGMwNWhUaWh3WVhKelpVbHVkQ2hwYm01bGNpa3BJRDhnVzI5MWRHVnlMQ0FuSjEwZ09pQmJiM1YwWlhJc0lHbHVibVZ5WFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFEyOXNiM0pCUVZCcGRtOTBLRzF2Ym05dFpYSTZJSE4wY21sdVp5QTlJQ2NuTENCelkyaGxiV1U2SUNkbmNtOXJKeUE5SUNkbmNtOXJKeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaeXdnYzNSeWFXNW5MQ0J1ZFcxaVpYSmRJSHRjYmlBZ0lDQXZMMk52Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0JCUVZCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNb0tUdGNiaUFnSUNCamIyNXpkQ0JqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQwZ2RHaHBjeTVuWlhSUVlXeGxkSFJsS0hOamFHVnRaU2s3WEc0Z0lDQWdiR1YwSUZ0dmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2wwZ1BTQjBhR2x6TG1kbGRFbHVibVZ5VDNWMFpYSW9iVzl1YjIxbGNpazdYRzRnSUNBZ2IzVjBaWEpOYjI1dmJXVnlJRDBnS0c5MWRHVnlUVzl1YjIxbGNpNXNaVzVuZEdnZ1BpQTJJRDhnWUNSN2IzVjBaWEpOYjI1dmJXVnlMbk5zYVdObEtEQXNJRE1wZlM0dUxtQWdPaUJ2ZFhSbGNrMXZibTl0WlhJcE8xeHVJQ0FnSUdsdWJtVnlUVzl1YjIxbGNpQTlJQ2hwYm01bGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTJsdWJtVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2dhVzV1WlhKTmIyNXZiV1Z5S1R0Y2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXhJSHg4SUcxdmJtOXRaWEpiTVYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNRjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F4WFNBNlhHNGdJQ0FnSUNBZ0lGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHMXZibTl0WlhKYk1GMGdQVDBnSjJRbklDWW1JRzF2Ym05dFpYSmJNVjBoSUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeUlIeDhJRzF2Ym05dFpYSmJNbDBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdiVzl1YjIxbGNsc3hYVDh1ZEc5VmNIQmxja05oYzJVb0tTRTdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmhiV2x1YnlCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDljYmlBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhTQTZYRzRnSUNBZ0lDQWdJQ0FnVzNSb2FYTXVkVzVrWldacGJtVmtRMjlzYjNJc0lHOTFkR1Z5VFc5dWIyMWxjaXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYlc5dWIyMWxjaTV6ZFdKemRISnBibWNvTUN3Z015a2dhVzRnZEdocGN5NUJRVVoxYkd4T1lXMWxjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJdWJHVnVaM1JvSUQwOUlETWdmSHdnYlc5dWIyMWxjbHN6WFNBOVBTQW5LQ2NwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcFhUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHRnRhVzV2SUdsdUlHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQMXh1SUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObExtZGxkQ2hoYldsdWJ5a3NJR0Z0YVc1dkxDQnBibTVsY2sxdmJtOXRaWElzSUROZElEcGNiaUFnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlXekJkUHk1MGIweHZkMlZ5UTJGelpTZ3BJRDA5SUcxdmJtOXRaWEpiTUYwcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektTQnBiaUIwYUdsekxrRkJSblZzYkU1aGJXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQTBJSHg4SUcxdmJtOXRaWEpiTkYwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0EwWFNBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0JiZEdocGN5NTFibVJsWm1sdVpXUkRiMnh2Y2l3Z2IzVjBaWEpOYjI1dmJXVnlMQ0JwYm01bGNrMXZibTl0WlhJc0lEUmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG5WdVpHVm1hVzVsWkVOdmJHOXlMQ0J2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjaXdnTUYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IENocm9tYXRvZ3JhbSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hyb21hdG9ncmFtID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuY2hyb21hdG9ncmFtID0gbmV3IE51Y2xlb3RpZGVzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgICdBJzogJ2dyZWVuJyxcbiAgICAgICAgICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgICAgICAgICAnRyc6ICdibGFjaycsXG4gICAgICAgICAgICAgICAgJ1QnOiAncmVkJywgJ1UnOiAncmVkJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG59XG5OdWNsZW90aWRlcy5TZW1UeXBlID0gJ051Y2xlb3RpZGVzJztcbk51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50Jztcbk51Y2xlb3RpZGVzLk5hbWVzID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJuVmpiR1Z2ZEdsa1pYTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKdWRXTnNaVzkwYVdSbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZMUVN4UFFVRlBMRVZCUVdFc1kwRkJZeXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkZNVVFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHTkJRV003U1VGSE9VTXNUVUZCVFN4TFFVRkxMRmxCUVZrN1VVRkROVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRMmhETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXp0blFrRkRNVU1zUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFMUJRVTA3WjBKQlExZ3NSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SFFVRkhMRVZCUVVVc1MwRkJTenRuUWtGRGRFSXNVVUZCVVN4RlFVRkZMRTFCUVUwN1lVRkRha0lzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03U1VGRE0wSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExGZEJRVmM3TzBGQlEwNHNiVUpCUVU4c1IwRkJWeXhoUVVGaExFTkJRVU03UVVGRmFFTXNiME5CUVhkQ0xFZEJRVmNzT0VKQlFUaENMRU5CUVVNN1FVRkZjRVVzYVVKQlFVc3NSMEZCY1VJN1NVRkRkRU1zUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVVVGQlVUdERRVU5rTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMU4wY21sdVowUnBZM1JwYjI1aGNubDlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3VTJWeFVHRnNaWFIwWlN3Z1UyVnhVR0ZzWlhSMFpVSmhjMlY5SUdaeWIyMGdKeTR2YzJWeExYQmhiR1YwZEdWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTWdaWGgwWlc1a2N5QlRaWEZRWVd4bGRIUmxRbUZ6WlNCN1hHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHTm9jbTl0WVhSdlozSmhiVG9nVTJWeFVHRnNaWFIwWlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkQ0JEYUhKdmJXRjBiMmR5WVcwb0tUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMGdibVYzSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNb2UxeHVJQ0FnSUNBZ0lDQW5RU2M2SUNkbmNtVmxiaWNzWEc0Z0lDQWdJQ0FnSUNkREp6b2dKMkpzZFdVbkxGeHVJQ0FnSUNBZ0lDQW5SeWM2SUNkaWJHRmpheWNzSUM4dklHOXlZVzVuWlNBL1hHNGdJQ0FnSUNBZ0lDZFVKem9nSjNKbFpDY3NJQ2RWSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBblozSmhlU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTJoeWIyMWhkRzluY21GdE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCT2RXTnNaVzkwYVdSbGN5QjdYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxPaUJ6ZEhKcGJtY2dQU0FuVG5WamJHVnZkR2xrWlhNbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlLCBQYWxldHRlVHlwZSA9IFNlcVBhbGV0dGVCYXNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWxldHRlVHlwZShwYWxldHRlKTtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhbGV0dGVbbV07XG4gICAgfVxufVxuU2VxUGFsZXR0ZUJhc2UudW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG4vKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9ycyAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVdsQ1FTeE5RVUZOTEU5QlFVOHNZMEZCWXp0SlFUSkRla0lzV1VGQldTeFBRVUZuUXp0UlFVTXhReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTXhRaXhEUVVGRE8wbEJiRUpUTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJkMElzUlVGRGJrUXNWVUZCVlN4SFFVRkhMRXRCUVVzc1JVRkJSU3hqUVVGeFF5eGpRVUZqTzFGQlJYWkZMRTFCUVUwc1QwRkJUeXhIUVVFNFFpeEZRVUZGTEVOQlFVTTdVVUZET1VNc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOMFFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0blFrRkRNMElzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGUlRTeEhRVUZITEVOQlFVTXNRMEZCVXp0UlFVTnNRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVUlzUTBGQlF6czdRVUZvUkdFc05rSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVWc1JDdzBRMEZCTkVNN1FVRkRPVUlzTkVKQlFXRXNSMEZCWjBNN1NVRkRla1FzVVVGQlVTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRE1VWXNWMEZCVnl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xRkJRM0JITEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMRzlDUVVGdlFpeEZRVUZGTEc5Q1FVRnZRaXhEUVVGRE8wbEJRMjVHTEZWQlFWVXNSVUZCUlN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEc5Q1FVRnZRanRSUVVNdlJ5eHRRa0ZCYlVJc1EwRkJRenRKUVVOMFFpeFRRVUZUTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTjJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXp0SlFVTTNReXhUUVVGVExFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF6dEpRVU55UlN4WFFVRlhMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF6dEpRVU55UkN4WlFVRlpMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXp0SlFVTTVSaXhaUVVGWkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4clFrRkJhMElzUTBGQlF6dEpRVU14UlN4WlFVRlpMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjBSaXhQUVVGUExFVkJRVVVzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTTNReXhoUVVGaExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU12UlN4VlFVRlZMRVZCUVVVc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3huUWtGQlowSXNRMEZCUXp0SlFVTjRSaXhOUVVGTkxFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenRKUVVNMVFpeFBRVUZQTEVWQlFVVXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1EwRkJRenRKUVVNdlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4clFrRkJhMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU14Uml4UlFVRlJMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXp0SlFVTTNRaXhQUVVGUExFVkJRVVVzUTBGQlF5eHJRa0ZCYTBJc1EwRkJRenREUVVNNVFpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCVFpYRlFZV3hsZEhSbElIdGNiaUFnTHk4Z1ZHaGxjbVVnWVhKbElIUnZieUJ0ZFdOb0lIQnliMkpzWlcwZ2QybDBhQ0JwYm1SbGVHVnlJSEJ5YjNCbGNuUjVJR2x1SUhSNWNHVnpZM0pwY0hRdVhHNGdJQzh2SUM4cUtseHVJQ0F2THlBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JTQk5iMjV2YldWeUlHTm9ZWEpoWTNSbGNseHVJQ0F2THlBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlFTnZiRzl5WEc0Z0lDOHZJQ0FxTDF4dUlDQXZMeUJiYlRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuTzF4dUlDQXZLaW9nVFc5dWIyMWxjaUJqYjJ4dmNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYlNCTmIyNXZiV1Z5WEc0Z0lDQXFMMXh1SUNCblpYUW9iVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTJWeFVHRnNaWFIwWlVKaGMyVWdhVzF3YkdWdFpXNTBjeUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtUmxabWx1WldSRGIyeHZjaUE5SUNkeVoySW9NVEF3TERFd01Dd3hNREFwSnp0Y2JseHVJQ0F2S2lvZ1VHRnNaWFIwWlNCM2FYUm9JSE5vWVdSbGN5QnZaaUJ3Y21sdFlYSjVJR052Ykc5eWN5QXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJy4uL3ZpZXdlcnMvd2ViLWxvZ28nO1xuLyoqIENsYXNzIGZvciBoYW5kbGluZyBjb252ZXJzaW9uIG9mIG5vdGF0aW9uIHN5c3RlbXMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgTm90YXRpb25Db252ZXJ0ZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QgPSB7XG4gICAgICAgICAgICBIRUxNOiAnKicsXG4gICAgICAgICAgICBTRVBBUkFUT1I6ICcnLFxuICAgICAgICAgICAgRkFTVEE6ICctJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9zb3VyY2VDb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fc291cmNlQ29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZVVuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX3NvdXJjZU5vdGF0aW9uID0gdGhpcy5nZXRTb3VyY2VOb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAodGhpcy5pc0hlbG0oKSkgPyB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSA6XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICB9XG4gICAgZ2V0IHNwbGl0dGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fc3BsaXR0ZXIgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl9zcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5fc291cmNlQ29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICAgIH1cbiAgICA7XG4gICAgZ2V0IHNvdXJjZVVuaXRzKCkgeyByZXR1cm4gdGhpcy5fc291cmNlVW5pdHM7IH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBnZXQgZGVmYXVsdEdhcFN5bWJvbCgpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2w7IH1cbiAgICBnZXQgc2VwYXJhdG9yKCkge1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgICAgICBpZiAoc2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHNlcGFyYXRvcjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXBhcmF0b3Igbm90IHNldCcpO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiSEVMTVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncm5hJyk7IH1cbiAgICBpc0RuYSgpIHsgcmV0dXJuIHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgnZG5hJyk7IH1cbiAgICBpc1BlcHRpZGUoKSB7IHJldHVybiB0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoJ3B0Jyk7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldFNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICAgICAgICByZXR1cm4gXCJGQVNUQVwiIC8qIE5PVEFUSU9OLkZBU1RBICovO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZVVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gXCJTRVBBUkFUT1JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlVW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdoZWxtJykpXG4gICAgICAgICAgICByZXR1cm4gXCJIRUxNXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY29sdW1uIGhhcyB1bml0cyB0aGF0IGRvIG5vdCBjb3JyZXNwb25kIHRvIGFueSBub3RhdGlvbicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgZW1wdHkgY29sdW1uIG9mIHRoZSBzcGVjaWZpZWQgbm90YXRpb24gdHlwZSBhbmQgdGhlIHNhbWVcbiAgICAgKiBsZW5ndGggYXMgc291cmNlQ29sdW1uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05PVEFUSU9OfSB0YXJnZXROb3RhdGlvblxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICAgKi9cbiAgICBnZXROZXdDb2x1bW4odGFyZ2V0Tm90YXRpb24pIHtcbiAgICAgICAgY29uc3QgY29sID0gdGhpcy5zb3VyY2VDb2x1bW47XG4gICAgICAgIGNvbnN0IGxlbiA9IGNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0YXJnZXROb3RhdGlvbi50b0xvd2VyQ2FzZSgpICsgJygnICsgY29sLm5hbWUgKyAnKSc7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSBjb2wuZGF0YUZyYW1lLmNvbHVtbnMuZ2V0VW51c2VkTmFtZShuYW1lKTtcbiAgICAgICAgLy8gZHVtbXkgY29kZVxuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJycpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgdGhpcy5zb3VyY2VVbml0cy5yZXBsYWNlKHRoaXMuc291cmNlTm90YXRpb24udG9Mb3dlckNhc2UoKS50b1N0cmluZygpLCB0YXJnZXROb3RhdGlvbi50b0xvd2VyQ2FzZSgpLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgLy8gVE9ETzogc3BlY2lmeSBjZWxsIHJlbmRlcmVycyBmb3IgYWxsIGNhc2VzXG4gICAgICAgIGlmICh0aGlzLnRvRmFzdGEodGFyZ2V0Tm90YXRpb24pKSB7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuQ0VMTF9SRU5ERVJFUiwgJ01hY3JvbW9sZWN1bGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgICAqL1xuICAgIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvciwgZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoJ3NlcGFyYXRvcicsIHNlcGFyYXRvcik7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAgICogbWFjcm9tb2xlY3VsZSAocGVwdGlkZSwgRE5BLCBSTkEpXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICAgKi9cbiAgICBnZXRIZWxtV3JhcHBlcnMoKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAgICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAgICAgICAgICh0aGlzLmlzUGVwdGlkZSgpKSA/ICdQRVBUSURFMXsnIDpcbiAgICAgICAgICAgICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcbiAgICAgICAgaWYgKHByZWZpeCA9PT0gJ1Vua25vd24nKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIHBlcHRpZGUsIG5vciBudWNsZW90aWRlJyk7XG4gICAgICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgICAgIGNvbnN0IGxlZnRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSkgPyAnRCgnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1IoJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgICAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgICB9XG4gICAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgc3RyaW5ncyB0byBIRUxNXG4gICAgY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCkge1xuICAgICAgICBjb25zdCBtb25vbWVyQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNvdXJjZVBvbHltZXIpO1xuICAgICAgICBjb25zdCBtb25vbWVySGVsbUFycmF5ID0gbW9ub21lckFycmF5Lm1hcCgobW0pID0+IHtcbiAgICAgICAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bGVmdFdyYXBwZXJ9JHttbX0ke3JpZ2h0V3JhcHBlcn1gO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke21vbm9tZXJIZWxtQXJyYXkuam9pbignLicpfSR7cG9zdGZpeH1gO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgc3RyaW5nIHdpdGggU0VQQVJBVE9SL0ZBU1RBIG5vdGF0aW9uIHRvIEhFTE1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VQb2x5bWVyICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbCAgQW4gb3B0aW9uYWwgZ2FwIHN5bWJvbCwgc2V0IHRvXG4gICAgICogZGVmYXVsdCB2YWx1ZXMgKCctJyBmb3IgRkFTVEEgYW5kICcnIGZvciBTRVBBUkFUT1IpIHVubGVzcyBzcGVjaWZpZWRcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgdGFyZ2V0IEhFTE0gc3RyaW5nXG4gICAgICovXG4gICAgY29udmVydFN0cmluZ1RvSGVsbShzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgYSBjb2x1bW4gdG8gSEVMTVxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2xcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAgICovXG4gICAgY29udmVydFRvSGVsbShzb3VyY2VHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oXCJIRUxNXCIgLyogTk9UQVRJT04uSEVMTSAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICAgICAgbmV3Q29sdW1uLmluaXQoKGlkeCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuc291cmNlQ29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFNFUEFSQVRPUiBjb2x1bW4gdG8gRkFTVEEgbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gZmFzdGFHYXBTeW1ib2wgT3B0aW9uYWwgZ2FwIHN5bWJvbCBmb3IgRkFTVEFcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICBDb252ZXJ0ZWQgY29sdW1uXG4gICAgICovXG4gICAgY29udmVydFNlcGFyYXRvclRvRmFzdGEoZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLnNvdXJjZUNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yID0gJycsIHRndEdhcFN5bWJvbCA9IG51bGwpIHtcbiAgICAgICAgaWYgKHRndEdhcFN5bWJvbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID9cbiAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEEgOlxuICAgICAgICAgICAgICAgIHRoaXMuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gJycpXG4gICAgICAgICAgICB0Z3RTZXBhcmF0b3IgPSB0aGlzLnNlcGFyYXRvcjtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4odGd0Tm90YXRpb24pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlbG1Qb2x5bWVyID0gdGhpcy5zb3VyY2VDb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgICAgICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgICAgICAgICBjb25zdCB0Z3RNb25vbWVyc0FycmF5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSkge1xuICAgICAgICAgICAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2godGd0R2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgfVxuICAgIC8qKiBEaXNwYXRjaGVyIG1ldGhvZCBmb3Igbm90YXRpb24gY29udmVyc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndFNlcGFyYXRvciAgIFBvc3NpYmxlIHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgICAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnQodGd0Tm90YXRpb24sIHRndFNlcGFyYXRvciA9IG51bGwpIHtcbiAgICAgICAgLy8gcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBzZXBhcmF0b3IgaXMgbm90IHNwZWNpZmllZCcpO1xuICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZSBpZiAoKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkgJiYgdGhpcy50b0hlbG0odGd0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgICAgICBlbHNlIC8vIHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJtOTBZWFJwYjI0dFkyOXVkbVZ5ZEdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYm05MFlYUnBiMjR0WTI5dWRtVnlkR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkRkRU1zVDBGQlR5eEZRVUZsTEU5QlFVOHNSVUZCUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlV6RkVMR2xHUVVGcFJqdEJRVU5xUml4TlFVRk5MRTlCUVU4c2FVSkJRV2xDTzBsQk5GUTFRaXhaUVVGdFFpeEhRVUZqTzFGQmRsUjZRaXd5UWtGQmMwSXNSMEZCUnp0WlFVTXZRaXhKUVVGSkxFVkJRVVVzUjBGQlJ6dFpRVU5VTEZOQlFWTXNSVUZCUlN4RlFVRkZPMWxCUTJJc1MwRkJTeXhGUVVGRkxFZEJRVWM3VTBGRFdDeERRVUZETzFGQlJVMHNZMEZCVXl4SFFVRjNRaXhKUVVGSkxFTkJRVU03VVVGclZEVkRMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUjBGQlJ5eERRVUZETzFGQlEzcENMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hMUVVGTExFdEJRVXNzU1VGQlNUdFpRVU5vUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFdEJRVXNzUTBGQlF6czdXVUZGTVVJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRRMEZCYlVNc1EwRkJReXhEUVVGRE8xRkJRM1pFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRU5CUVVNN1VVRkRhRVFzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU0zUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhFTEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdTVUZETlVNc1EwRkJRenRKUVROVVJDeEpRVUZqTEZGQlFWRTdVVUZEY0VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eExRVUZMTEVsQlFVazdXVUZEZWtJc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTNCRkxFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJRVUVzUTBGQlF6dEpRVWRHTEVsQlFWa3NWMEZCVnl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTDBRc1NVRkJXU3haUVVGWkxFdEJRV2RDTEU5QlFVOHNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmNFVXNTVUZCVnl4alFVRmpMRXRCUVdVc1QwRkJUeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBSU3hKUVVGWExHZENRVUZuUWl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWNFJTeEpRVUZYTEZOQlFWTTdVVUZEYkVJc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03VVVGRGVFUXNTVUZCU1N4VFFVRlRMRXRCUVVzc1NVRkJTVHRaUVVOd1FpeFBRVUZQTEZOQlFWTXNRMEZCUXpzN1dVRkZha0lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN1NVRkZUU3hQUVVGUExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNZMEZCWXl4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tVc1YwRkJWeXhMUVVGakxFOUJRVThzU1VGQlNTeERRVUZETEdOQlFXTXNlVU5CUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJUZEZMRTFCUVUwc1MwRkJZeXhQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZqTEN0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ1UlN4UFFVRlBMRU5CUVVNc1kwRkJkMElzU1VGQllTeFBRVUZQTEdOQlFXTXNhVU5CUVcxQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYaEdMRmRCUVZjc1EwRkJReXhqUVVGM1FpeEpRVUZoTEU5QlFVOHNZMEZCWXl4NVEwRkJkVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYUVjc1RVRkJUU3hEUVVGRExHTkJRWGRDTEVsQlFXRXNUMEZCVHl4alFVRmpMQ3RDUVVGclFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBSaXhMUVVGTExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZNMFVzUzBGQlN5eExRVUZqTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5GTEZOQlFWTXNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ5Uml3MFJFRkJORVE3U1VGRE5VUTdPMDlCUlVjN1NVRkRTeXhwUWtGQmFVSTdVVUZEZGtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRGNFUXNiME5CUVhOQ08yRkJRMjVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUXpkRUxEUkRRVUV3UWp0aFFVTjJRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU40UkN4clEwRkJjVUk3TzFsQlJYSkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTmtSQlFUWkVMRU5CUVVNc1EwRkJRenRKUVVOdVJpeERRVUZETzBsQlJVUTdPenM3T3p0UFFVMUhPMGxCUTBzc1dVRkJXU3hEUVVGRExHTkJRWGRDTzFGQlF6TkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTjJRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eGpRVUZqTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMUZCUTJwRkxFMUJRVTBzVlVGQlZTeEhRVUZITEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTNSQ3hoUVVGaE8xRkJRMklzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEZWQlFWVXNSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETzFGQlF6ZERMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRMlFzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUTJJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlEzUkNMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUXpWRExHTkJRV01zUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkRlRU1zUTBGRFJpeERRVUZETzFGQlEwWXNOa05CUVRaRE8xRkJRemRETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhqUVVGakxFTkJRVU1zUlVGQlJUdFpRVU5vUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVOa0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVTnlRaXhsUVVGbExFTkJRVU1zUTBGQlF6dFRRVU53UWp0UlFVTkVMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRTeXgxUWtGQmRVSXNRMEZCUXl4VFFVRnBRaXhGUVVGRkxHbENRVUZuUXl4SlFVRkpPMUZCUTNKR0xFbEJRVWtzWTBGQll5eExRVUZMTEVsQlFVazdXVUZEZWtJc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVWNlF5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3h6UTBGQmIwSXNRMEZCUXp0UlFVTjRSQ3h6UkVGQmMwUTdVVUZEZEVRc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzV1VGQldTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyaEVMRTFCUVUwc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU4yUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOc1JDeEpRVUZKTEd0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEdOQlFXTTdiMEpCUXpGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhUUVVGVExFTkJRVU03WVVGRGFrVTdXVUZEUkN4UFFVRlBMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVNMVF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExHVkJRV1U3VVVGRGNrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGRrTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRM2hDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1F5eFRRVUZUTEVOQlFVTXNRMEZCUXl3MlEwRkJOa003VVVGRk9VUXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVenRaUVVOMFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzWkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzcERMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNNRUpCUVRCQ08xRkJRM2hFTEUxQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExEQkNRVUV3UWp0UlFVTXpSaXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRFUXNRMEZCUXp0SlFVVkVMRzFFUVVGdFJEdEpRVU16UXl4dFFrRkJiVUlzUTBGRGVrSXNZVUZCY1VJc1JVRkRja0lzWlVGQmRVSXNSVUZEZGtJc1RVRkJZeXhGUVVOa0xGZEJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEU5QlFXVTdVVUZGWml4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzWjBKQlFXZENMRWRCUVdFc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRkZPMWxCUTJwRkxFbEJRVWtzUlVGQlJTeExRVUZMTEdWQlFXVTdaMEpCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUTBGQlF6czdaMEpCUlhoRExFOUJRVThzUjBGQlJ5eFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhIUVVGSExFMUJRVTBzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUMEZCVHl4RlFVRkZMRU5CUVVNN1NVRkROVVFzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTU3h0UWtGQmJVSXNRMEZEZUVJc1lVRkJjVUlzUlVGRGNrSXNhMEpCUVdsRExFbEJRVWs3VVVGRmNrTXNTVUZCU1N4bFFVRmxMRXRCUVVzc1NVRkJTVHRaUVVNeFFpeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6RkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1lVRkJZU3hGUVVGRkxHVkJRV1VzUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU01Unl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTeXhoUVVGaExFTkJRVU1zYTBKQlFXbERMRWxCUVVrN1VVRkRla1FzU1VGQlNTeGxRVUZsTEV0QlFVc3NTVUZCU1R0WlFVTXhRaXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJSVEZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03VVVGRk5VVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzTkVKQlFXVXNRMEZCUXp0UlFVTnVSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycEVMRTlCUVU4c1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hsUVVGblFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1dVRkJXU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OUhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMHNzZFVKQlFYVkNMRU5CUVVNc2FVSkJRV2RETEVsQlFVazdVVUZEYkVVc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVWeVJDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3c0UWtGQlowSXNRMEZCUXp0UlFVTndSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRjRVFzYzBOQlFYTkRPMWxCUTNSRExFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xbEJRelZFTEUxQlFVMHNhMEpCUVd0Q0xFZEJRV0VzUlVGQlJTeERRVUZETzFsQlEzaERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMjVFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU55UWl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRU5CUVVNN2FVSkJRekZETzNGQ1FVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUXpGQ0xIZERRVUYzUXp0dlFrRkRlRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlEycERMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdjVUpCUVUwN2IwSkJRMHdzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTXZRanRoUVVOR08xbEJRMFFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY2tNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVE3T3pzN096czdPMDlCVVVjN1NVRkRTeXhYUVVGWExFTkJRMnBDTEZkQlFXMUNMRVZCUTI1Q0xHVkJRWFZDTEVWQlFVVXNSVUZEZWtJc1pVRkJPRUlzU1VGQlNUdFJRVVZzUXl4SlFVRkpMRmxCUVZrc1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVrSXNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4SlFVRkpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRMjVETEVsQlFVa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVMEZEZWtNN1VVRkZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEZRVUZGTzFsQlEyeEZMRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzFGQlJXaERMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhEUVVGRE8xRkJRemRFTEhkRFFVRjNRenRSUVVONFF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJWeXhGUVVGRkxFVkJRVVU3V1VGRE4wSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRMME1zYVVOQlFXbERPMWxCUTJwRExFMUJRVTBzWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03V1VGRGJFUXNUVUZCVFN4blFrRkJaMElzUjBGQllTeEZRVUZGTEVOQlFVTTdXVUZEZEVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMR05CUVdNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUXpsRExFMUJRVTBzU1VGQlNTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGREwwSXNTVUZCU1N4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRE4wTXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4RFFVRkRPMmxDUVVOMFF6dHhRa0ZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQmRVSXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnVSU3d5UkVGQk1rUTdiMEpCUXpORUxFMUJRVTBzVDBGQlR5eEhRVUZITEVkQlFVY3NSMEZCUnl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8yOUNRVU5xUXl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2FVSkJRMmhETzNGQ1FVRk5PMjlDUVVOTUxHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZETjBJN1lVRkRSanRaUVVORUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFGQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWUExITkNRVUZ6UWp0UlFVTTFRaXhwUkVGQmFVUTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zV1VGQldTeHpRMEZCYjBJc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4UFFVRlBMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeGxRVUU0UWl4SlFVRkpPMUZCUTNSRkxITkNRVUZ6UWp0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEV0QlFVc3NWMEZCVnp0WlFVTnlReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRE4wTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEZsQlFWa3NTMEZCU3l4SlFVRkpPMWxCUTNoRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaME5CUVdkRExFTkJRVU1zUTBGQlF6dFJRVVZ3UkN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEpRVUZKTzFsQlF6RkZMRTlCUVU4c1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8yRkJReTlETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZEZWtVc1QwRkJUeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdZVUZEZWtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU03V1VGRGRFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVXNRMEZCUXp0aFFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRanRaUVVOMFJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WVVGRGJFTXNhVVJCUVdsRU8xbEJRM0JFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFVkJRVVVzV1VGQllTeERRVUZETEVOQlFVTTdTVUZEZUVRc1EwRkJRenREUVdOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYm1sdGNHOXlkQ0I3VTNCc2FYUjBaWEpHZFc1akxDQlhaV0pNYjJkdmZTQm1jbTl0SUNjdUxpOTJhV1YzWlhKekwzZGxZaTFzYjJkdkp6dGNibHh1THlvcUlHVnVkVzBnZEhsd1pTQjBieUJ6YVcxd2JHbG1lU0J6WlhSMGFXNW5JRndpZFhObGNpMW1jbWxsYm1Sc2VWd2lJRzV2ZEdGMGFXOXVJR2xtSUc1bFkyVnpjMkZ5ZVNBcUwxeHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdUazlVUVZSSlQwNGdlMXh1SUNCR1FWTlVRU0E5SUNkR1FWTlVRU2NzWEc0Z0lGTkZVRUZTUVZSUFVpQTlJQ2RUUlZCQlVrRlVUMUluTEZ4dUlDQklSVXhOSUQwZ0owaEZURTBuWEc1OVhHNWNiaThxS2lCRGJHRnpjeUJtYjNJZ2FHRnVaR3hwYm1jZ1kyOXVkbVZ5YzJsdmJpQnZaaUJ1YjNSaGRHbHZiaUJ6ZVhOMFpXMXpJR2x1SUUxaFkzSnZiVzlzWldOMWJHVWdZMjlzZFcxdWN5QXFMMXh1Wlhod2IzSjBJR05zWVhOeklFNXZkR0YwYVc5dVEyOXVkbVZ5ZEdWeUlIdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JmYzI5MWNtTmxRMjlzZFcxdU9pQkVSeTVEYjJ4MWJXNDdJQzh2SUhSb1pTQmpiMngxYlc0Z2RHOGdZbVVnWTI5dWRtVnlkR1ZrWEc0Z0lIQnlhWFpoZEdVZ1gzTnZkWEpqWlZWdWFYUnpPaUJ6ZEhKcGJtYzdJQzh2SUhWdWFYUnpMQ0J2WmlCMGFHVWdabTl5YlNCbVlYTjBZVHBUUlZFNlRsUXNJR1YwWXk1Y2JpQWdjSEpwZG1GMFpTQmZjMjkxY21ObFRtOTBZWFJwYjI0NklFNVBWRUZVU1U5T095QXZMeUJqZFhKeVpXNTBJRzV2ZEdGMGFXOXVJQ2gzYVhSb2IzVjBJRHBUUlZFNlRsUXNJR1YwWXk0cFhHNGdJSEJ5YVhaaGRHVWdYMlJsWm1GMWJIUkhZWEJUZVcxaWIydzZJSE4wY21sdVp6dGNiaUFnY0hKcGRtRjBaU0JmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMElEMGdlMXh1SUNBZ0lFaEZURTA2SUNjcUp5eGNiaUFnSUNCVFJWQkJVa0ZVVDFJNklDY25MRnh1SUNBZ0lFWkJVMVJCT2lBbkxTY3NYRzRnSUgwN1hHNWNiaUFnY0hKcGRtRjBaU0JmYzNCc2FYUjBaWEk2SUZOd2JHbDBkR1Z5Um5WdVl5QjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQndjbTkwWldOMFpXUWdaMlYwSUhOd2JHbDBkR1Z5S0NrNklGTndiR2wwZEdWeVJuVnVZeUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM053YkdsMGRHVnlJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdkR2hwY3k1ZmMzQnNhWFIwWlhJZ1BTQlhaV0pNYjJkdkxtZGxkRk53YkdsMGRHVnlSbTl5UTI5c2RXMXVLSFJvYVhNdVgzTnZkWEpqWlVOdmJIVnRiaWs3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNOd2JHbDBkR1Z5TzF4dUlDQjlPMXh1WEc1Y2JpQWdjSEpwZG1GMFpTQm5aWFFnYzI5MWNtTmxWVzVwZEhNb0tUb2djM1J5YVc1bklIc2djbVYwZFhKdUlIUm9hWE11WDNOdmRYSmpaVlZ1YVhSek95QjlYRzVjYmlBZ2NISnBkbUYwWlNCblpYUWdjMjkxY21ObFEyOXNkVzF1S0NrNklFUkhMa052YkhWdGJpQjdJSEpsZEhWeWJpQjBhR2x6TGw5emIzVnlZMlZEYjJ4MWJXNDdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBJSE52ZFhKalpVNXZkR0YwYVc5dUtDazZJRTVQVkVGVVNVOU9JSHNnY21WMGRYSnVJSFJvYVhNdVgzTnZkWEpqWlU1dmRHRjBhVzl1T3lCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZENCa1pXWmhkV3gwUjJGd1UzbHRZbTlzS0NrNklITjBjbWx1WnlCN0lISmxkSFZ5YmlCMGFHbHpMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNPeUI5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ0J6WlhCaGNtRjBiM0lvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JqYjI1emRDQnpaWEJoY21GMGIzSWdQU0IwYUdsekxuTnZkWEpqWlVOdmJIVnRiaTVuWlhSVVlXY29KM05sY0dGeVlYUnZjaWNwTzF4dUlDQWdJR2xtSUNoelpYQmhjbUYwYjNJZ0lUMDlJRzUxYkd3cFhHNGdJQ0FnSUNCeVpYUjFjbTRnYzJWd1lYSmhkRzl5TzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVTJWd1lYSmhkRzl5SUc1dmRDQnpaWFFuS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCcGMwWmhjM1JoS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTV6YjNWeVkyVk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1UmtGVFZFRTdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTlRaWEJoY21GMGIzSW9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlU1dmRHRjBhVzl1SUQwOVBTQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSTdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTklaV3h0S0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTV6YjNWeVkyVk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1U0VWTVRUc2dmVnh1WEc0Z0lIQjFZbXhwWXlCMGIwWmhjM1JoS0hSaGNtZGxkRTV2ZEdGMGFXOXVPaUJPVDFSQlZFbFBUaWs2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdGeVoyVjBUbTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGtaQlUxUkJPeUI5WEc1Y2JpQWdjSFZpYkdsaklIUnZVMlZ3WVhKaGRHOXlLSFJoY21kbGRFNXZkR0YwYVc5dU9pQk9UMVJCVkVsUFRpazZJR0p2YjJ4bFlXNGdleUJ5WlhSMWNtNGdkR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMDlJRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVanNnZlZ4dVhHNGdJSEIxWW14cFl5QjBiMGhsYkcwb2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMFlYSm5aWFJPYjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVNFVk1UVHNnZlZ4dVhHNGdJSEIxWW14cFl5QnBjMUp1WVNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzVsYm1SelYybDBhQ2duY201aEp5azdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTkVibUVvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbk52ZFhKalpWVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VaVzVrYzFkcGRHZ29KMlJ1WVNjcE95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVHVndkR2xrWlNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzVsYm1SelYybDBhQ2duY0hRbktUc2dmVnh1WEc0Z0lDOHFLaUJCYzNOdlkybGhkR1VnYm05MFlYUnBiMjRnZEhsd1pYTWdkMmwwYUNCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCMWJtbDBjeUFxTDF4dUlDQXZLaXBjYmlBZ0lDb2dRSEpsZEhWeWJpQjdUazlVUVZSSlQwNTlJQ0FnSUNCT2IzUmhkR2x2YmlCaGMzTnZZMmxoZEdWa0lIZHBkR2dnZEdobElIVnVhWFJ6SUhSNWNHVmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwVTI5MWNtTmxUbTkwWVhScGIyNG9LVG9nVGs5VVFWUkpUMDRnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbk52ZFhKalpWVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2duWm1GemRHRW5LU2xjYmlBZ0lDQWdJSEpsZEhWeWJpQk9UMVJCVkVsUFRpNUdRVk5VUVR0Y2JpQWdJQ0JsYkhObElHbG1JQ2gwYUdsekxuTnZkWEpqWlZWdWFYUnpMblJ2VEc5M1pYSkRZWE5sS0NrdWMzUmhjblJ6VjJsMGFDZ25jMlZ3WVhKaGRHOXlKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YzI5MWNtTmxWVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0Nkb1pXeHRKeWtwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVTRVZNVFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFSb1pTQmpiMngxYlc0Z2FHRnpJSFZ1YVhSeklIUm9ZWFFnWkc4Z2JtOTBJR052Y25KbGMzQnZibVFnZEc4Z1lXNTVJRzV2ZEdGMGFXOXVKeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsSUdFZ2JtVjNJR1Z0Y0hSNUlHTnZiSFZ0YmlCdlppQjBhR1VnYzNCbFkybG1hV1ZrSUc1dmRHRjBhVzl1SUhSNWNHVWdZVzVrSUhSb1pTQnpZVzFsWEc0Z0lDQXFJR3hsYm1kMGFDQmhjeUJ6YjNWeVkyVkRiMngxYlc1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdE9UMVJCVkVsUFRuMGdkR0Z5WjJWMFRtOTBZWFJwYjI1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlZ4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUk9aWGREYjJ4MWJXNG9kR0Z5WjJWMFRtOTBZWFJwYjI0NklFNVBWRUZVU1U5T0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQmpiMjV6ZENCamIyd2dQU0IwYUdsekxuTnZkWEpqWlVOdmJIVnRianRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0JqYjJ3dWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHNWhiV1VnUFNCMFlYSm5aWFJPYjNSaGRHbHZiaTUwYjB4dmQyVnlRMkZ6WlNncElDc2dKeWduSUNzZ1kyOXNMbTVoYldVZ0t5QW5LU2M3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzVG1GdFpTQTlJR052YkM1a1lYUmhSbkpoYldVdVkyOXNkVzF1Y3k1blpYUlZiblZ6WldST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUM4dklHUjFiVzE1SUdOdlpHVmNiaUFnSUNCamIyNXpkQ0J1WlhkRGIyeDFiVzRnUFNCRVJ5NURiMngxYlc0dVpuSnZiVXhwYzNRb0ozTjBjbWx1Wnljc0lHNWxkME52YkU1aGJXVXNJRzVsZHlCQmNuSmhlU2hzWlc0cExtWnBiR3dvSnljcEtUdGNiaUFnSUNCdVpYZERiMngxYlc0dWMyVnRWSGx3WlNBOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlR0Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRnh1SUNBZ0lDQWdSRWN1VkVGSFV5NVZUa2xVVXl4Y2JpQWdJQ0FnSUhSb2FYTXVjMjkxY21ObFZXNXBkSE11Y21Wd2JHRmpaU2hjYmlBZ0lDQWdJQ0FnZEdocGN5NXpiM1Z5WTJWT2IzUmhkR2x2Ymk1MGIweHZkMlZ5UTJGelpTZ3BMblJ2VTNSeWFXNW5LQ2tzWEc0Z0lDQWdJQ0FnSUhSaGNtZGxkRTV2ZEdGMGFXOXVMblJ2VEc5M1pYSkRZWE5sS0NrdWRHOVRkSEpwYm1jb0tWeHVJQ0FnSUNBZ0tWeHVJQ0FnSUNrN1hHNGdJQ0FnTHk4Z1ZFOUVUem9nYzNCbFkybG1lU0JqWld4c0lISmxibVJsY21WeWN5Qm1iM0lnWVd4c0lHTmhjMlZ6WEc0Z0lDQWdhV1lnS0hSb2FYTXVkRzlHWVhOMFlTaDBZWEpuWlhST2IzUmhkR2x2YmlrcElIdGNiaUFnSUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1hHNGdJQ0FnSUNBZ0lFUkhMbFJCUjFNdVEwVk1URjlTUlU1RVJWSkZVaXhjYmlBZ0lDQWdJQ0FnSjAxaFkzSnZiVzlzWldOMWJHVW5LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUc1bGQwTnZiSFZ0Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjUyWlhKMElHRWdUV0ZqY205dGIyeGxZM1ZzWlNCamIyeDFiVzRnWm5KdmJTQkdRVk5VUVNCMGJ5QlRSVkJCVWtGVVQxSWdibTkwWVhScGIyNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY0dGeVlYUnZjaUFnUVNCemNHVmphV1pwWXlCelpYQmhjbUYwYjNJZ2RHOGdZbVVnZFhObFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm1GemRHRkhZWEJUZVcxaWIyd2dJRWRoY0NCemVXMWliMndnYVc0Z1JrRlRWRUVzSUNjdEp5QmllU0JrWldaaGRXeDBYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMGdJQ0FnSUNBZ0lFRWdibVYzSUdOdmJIVnRiaUJwYmlCVFJWQkJVa0ZVVDFJZ2JtOTBZWFJwYjI1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5T2lCemRISnBibWNzSUdaaGMzUmhSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdiblZzYkNrNklFUkhMa052YkhWdGJpQjdYRzRnSUNBZ2FXWWdLR1poYzNSaFIyRndVM2x0WW05c0lEMDlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ1ptRnpkR0ZIWVhCVGVXMWliMndnUFNCMGFHbHpMbVJsWm1GMWJIUkhZWEJUZVcxaWIydzdYRzVjYmlBZ0lDQmpiMjV6ZENCdVpYZERiMngxYlc0Z1BTQjBhR2x6TG1kbGRFNWxkME52YkhWdGJpaE9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSXBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQnVaWGRzZVNCamNtVmhkR1ZrSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ptRnpkR0ZRYjJ4NWJXVnlJRDBnZEdocGN5NXpiM1Z5WTJWRGIyeDFiVzR1WjJWMEtHbGtlQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYa2dQU0IwYUdsekxuTndiR2wwZEdWeUtHWmhjM1JoVUc5c2VXMWxjaWs3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdaaGMzUmhUVzl1YjIxbGNuTkJjbkpoZVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1ptRnpkR0ZOYjI1dmJXVnljMEZ5Y21GNVcybGRJRDA5UFNCbVlYTjBZVWRoY0ZONWJXSnZiQ2xjYmlBZ0lDQWdJQ0FnSUNCbVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhsYmFWMGdQU0IwYUdsekxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1VTBWUVFWSkJWRTlTTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJR1poYzNSaFRXOXViMjFsY25OQmNuSmhlUzVxYjJsdUtITmxjR0Z5WVhSdmNpazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2JtVjNRMjlzZFcxdUxuTmxkRlJoWnlnbmMyVndZWEpoZEc5eUp5d2djMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdkM0poY0hCbGNpQnpkSEpwYm1keklHWnZjaUJJUlV4TkxDQmtaWEJsYm1ScGJtY2diMjRnZEdobElIUjVjR1VnYjJZZ2RHaGxYRzRnSUNBcUlHMWhZM0p2Ylc5c1pXTjFiR1VnS0hCbGNIUnBaR1VzSUVST1FTd2dVazVCS1Z4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kYlhYMGdRWEp5WVhrZ2IyWWdkM0poY0hCbGNuTmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwU0dWc2JWZHlZWEJ3WlhKektDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGdnUFNBb2RHaHBjeTVwYzBSdVlTZ3BLU0EvSUNkRVRrRXhleWNnT2x4dUlDQWdJQ0FnS0hSb2FYTXVhWE5TYm1Fb0tTa2dQeUFuVWs1Qk1Yc25JRHBjYmlBZ0lDQWdJQ0FnS0hSb2FYTXVhWE5RWlhCMGFXUmxLQ2twSUQ4Z0oxQkZVRlJKUkVVeGV5Y2dPbHh1SUNBZ0lDQWdJQ0FnSUNkVmJtdHViM2R1SnpzZ0x5OGdkR2hwY3lCallYTmxJSE5vYjNWc1pDQmlaU0JvWVc1a2JHVmtJR0Z6SUdWNFkyVndkR2x2Ym1Gc1hHNWNiaUFnSUNCcFppQW9jSEpsWm1sNElEMDlQU0FuVlc1cmJtOTNiaWNwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMDVsYVhSb1pYSWdjR1Z3ZEdsa1pTd2dibTl5SUc1MVkyeGxiM1JwWkdVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhCdmMzUm1hWGdnUFNBbmZTUWtKQ2M3WEc0Z0lDQWdZMjl1YzNRZ2JHVm1kRmR5WVhCd1pYSWdQU0FvZEdocGN5NXBjMFJ1WVNncEtTQS9JQ2RFS0NjZ09seHVJQ0FnSUNBZ0tIUm9hWE11YVhOU2JtRW9LU2tnUHlBblVpZ25JRG9nSnljN0lDOHZJRzV2SUhkeVlYQndaWElnWm05eUlIQmxjSFJwWkdWelhHNGdJQ0FnWTI5dWMzUWdjbWxuYUhSWGNtRndjR1Z5SUQwZ0tIUm9hWE11YVhORWJtRW9LU0I4ZkNCMGFHbHpMbWx6VW01aEtDa3BJRDhnSnlsUUp5QTZJQ2NuT3lBdkx5QnVieUIzY21Gd2NHVnlJR1p2Y2lCd1pYQjBhV1JsYzF4dUlDQWdJSEpsZEhWeWJpQmJjSEpsWm1sNExDQnNaV1owVjNKaGNIQmxjaXdnY21sbmFIUlhjbUZ3Y0dWeUxDQndiM04wWm1sNFhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdadmNpQmpiMjUyWlhKMGFXNW5JSE4wY21sdVozTWdkRzhnU0VWTVRWeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlViMGhsYkcxSVpXeHdaWElvWEc0Z0lDQWdjMjkxY21ObFVHOXNlVzFsY2pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE52ZFhKalpVZGhjRk41YldKdmJEb2djM1J5YVc1bkxGeHVJQ0FnSUhCeVpXWnBlRG9nYzNSeWFXNW5MRnh1SUNBZ0lHeGxablJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NtbG5hSFJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NHOXpkR1pwZURvZ2MzUnlhVzVuWEc0Z0lDazZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYlc5dWIyMWxja0Z5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2loemIzVnlZMlZRYjJ4NWJXVnlLVHRjYmlBZ0lDQmpiMjV6ZENCdGIyNXZiV1Z5U0dWc2JVRnljbUY1T2lCemRISnBibWRiWFNBOUlHMXZibTl0WlhKQmNuSmhlUzV0WVhBb0tHMXRPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiU0E5UFQwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtWVhWc2RFZGhjRk41YldKdmJITkVhV04wTGtoRlRFMDdYRzRnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJnSkh0c1pXWjBWM0poY0hCbGNuMGtlMjF0ZlNSN2NtbG5hSFJYY21Gd2NHVnlmV0E3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHQWtlM0J5WldacGVIMGtlMjF2Ym05dFpYSklaV3h0UVhKeVlYa3VhbTlwYmlnbkxpY3BmU1I3Y0c5emRHWnBlSDFnTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnZiblpsY25RZ1lTQnpkSEpwYm1jZ2QybDBhQ0JUUlZCQlVrRlVUMUl2UmtGVFZFRWdibTkwWVhScGIyNGdkRzhnU0VWTVRWeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjMjkxY21ObFVHOXNlVzFsY2lBZ1FTQnpkSEpwYm1jZ2RHOGdZbVVnWTI5dWRtVnlkR1ZrWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzSUNCQmJpQnZjSFJwYjI1aGJDQm5ZWEFnYzNsdFltOXNMQ0J6WlhRZ2RHOWNiaUFnSUNvZ1pHVm1ZWFZzZENCMllXeDFaWE1nS0NjdEp5Qm1iM0lnUmtGVFZFRWdZVzVrSUNjbklHWnZjaUJUUlZCQlVrRlVUMUlwSUhWdWJHVnpjeUJ6Y0dWamFXWnBaV1JjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQWdWR2hsSUhSaGNtZGxkQ0JJUlV4TklITjBjbWx1WjF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOdmJuWmxjblJUZEhKcGJtZFViMGhsYkcwb1hHNGdJQ0FnYzI5MWNtTmxVRzlzZVcxbGNqb2djM1J5YVc1bkxGeHVJQ0FnSUhOdmRYSmpaVWRoY0ZONWJXSnZiRG9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd4Y2JpQWdLU0E2SUhOMGNtbHVaeUI3WEc0Z0lDQWdhV1lnS0hOdmRYSmpaVWRoY0ZONWJXSnZiQ0E5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSE52ZFhKalpVZGhjRk41YldKdmJDQTlJSFJvYVhNdVpHVm1ZWFZzZEVkaGNGTjViV0p2YkR0Y2JpQWdJQ0JqYjI1emRDQmJjSEpsWm1sNExDQnNaV1owVjNKaGNIQmxjaXdnY21sbmFIUlhjbUZ3Y0dWeUxDQndiM04wWm1sNFhTQTlJSFJvYVhNdVoyVjBTR1ZzYlZkeVlYQndaWEp6S0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEZSdlNHVnNiVWhsYkhCbGNpaHpiM1Z5WTJWUWIyeDViV1Z5TENCemIzVnlZMlZIWVhCVGVXMWliMndzSUhCeVpXWnBlQ3dnYkdWbWRGZHlZWEJ3WlhJc0lISnBaMmgwVjNKaGNIQmxjaXdnY0c5emRHWnBlQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXVkbVZ5ZENCaElHTnZiSFZ0YmlCMGJ5QklSVXhOWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuSUh3Z2JuVnNiSDBnYzI5MWNtTmxSMkZ3VTNsdFltOXNYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdZMjl1ZG1WeWRGUnZTR1ZzYlNoemIzVnlZMlZIWVhCVGVXMWliMnc2SUhOMGNtbHVaeUI4SUc1MWJHd2dQU0J1ZFd4c0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQnBaaUFvYzI5MWNtTmxSMkZ3VTNsdFltOXNJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdjMjkxY21ObFIyRndVM2x0WW05c0lEMGdkR2hwY3k1a1pXWmhkV3gwUjJGd1UzbHRZbTlzTzF4dVhHNGdJQ0FnWTI5dWMzUWdXM0J5WldacGVDd2diR1ZtZEZkeVlYQndaWElzSUhKcFoyaDBWM0poY0hCbGNpd2djRzl6ZEdacGVGMGdQU0IwYUdsekxtZGxkRWhsYkcxWGNtRndjR1Z5Y3lncE8xeHVYRzRnSUNBZ1kyOXVjM1FnYm1WM1EyOXNkVzF1SUQwZ2RHaHBjeTVuWlhST1pYZERiMngxYlc0b1RrOVVRVlJKVDA0dVNFVk1UU2s3WEc0Z0lDQWdMeThnWVhOemFXZHVJSFJvWlNCMllXeDFaWE1nZEc4Z2RHaGxJR1Z0Y0hSNUlHTnZiSFZ0Ymx4dUlDQWdJRzVsZDBOdmJIVnRiaTVwYm1sMEtDaHBaSGc2SUc1MWJXSmxjaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYzI5MWNtTmxVRzlzZVcxbGNpQTlJSFJvYVhNdWMyOTFjbU5sUTI5c2RXMXVMbWRsZENocFpIZ3BPMXh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRlJ2U0dWc2JVaGxiSEJsY2loemIzVnlZMlZRYjJ4NWJXVnlMQ0J6YjNWeVkyVkhZWEJUZVcxaWIyd2hMQ0J3Y21WbWFYZ3NJR3hsWm5SWGNtRndjR1Z5TENCeWFXZG9kRmR5WVhCd1pYSXNJSEJ2YzNSbWFYZ3BPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQlRSVkJCVWtGVVQxSWdZMjlzZFcxdUlIUnZJRVpCVTFSQklHNXZkR0YwYVc5dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ1ptRnpkR0ZIWVhCVGVXMWliMndnVDNCMGFXOXVZV3dnWjJGd0lITjViV0p2YkNCbWIzSWdSa0ZUVkVGY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNBZ1EyOXVkbVZ5ZEdWa0lHTnZiSFZ0Ymx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCamIyNTJaWEowVTJWd1lYSmhkRzl5Vkc5R1lYTjBZU2htWVhOMFlVZGhjRk41YldKdmJEb2djM1J5YVc1bklId2diblZzYkNBOUlHNTFiR3dwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUdsbUlDaG1ZWE4wWVVkaGNGTjViV0p2YkNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUdaaGMzUmhSMkZ3VTNsdFltOXNJRDBnZEdocGN5NWZaR1ZtWVhWc2RFZGhjRk41YldKdmJITkVhV04wTGtaQlUxUkJPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzZFcxdUlEMGdkR2hwY3k1blpYUk9aWGREYjJ4MWJXNG9UazlVUVZSSlQwNHVSa0ZUVkVFcE8xeHVJQ0FnSUM4dklHRnpjMmxuYmlCMGFHVWdkbUZzZFdWeklIUnZJSFJvWlNCbGJYQjBlU0JqYjJ4MWJXNWNiaUFnSUNCdVpYZERiMngxYlc0dWFXNXBkQ2dvYVdSNE9pQnVkVzFpWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElITmxjR0Z5WVhSdmNsQnZiSGx0WlhJZ1BTQjBhR2x6TG5OdmRYSmpaVU52YkhWdGJpNW5aWFFvYVdSNEtUdGNiaUFnSUNBZ0lDOHZJR2wwWlcxeklHTmhiaUJpWlNCdGIyNXZiV1Z5Y3lCdmNpQnpaWEJoY21GMGIzSnpYRzRnSUNBZ0lDQmpiMjV6ZENCelpYQmhjbUYwYjNKSmRHVnRjMEZ5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2loelpYQmhjbUYwYjNKUWIyeDViV1Z5S1R0Y2JpQWdJQ0FnSUdOdmJuTjBJR1poYzNSaFRXOXViMjFsY25OQmNuSmhlVG9nYzNSeWFXNW5XMTBnUFNCYlhUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djMlZ3WVhKaGRHOXlTWFJsYlhOQmNuSmhlUzVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCcGRHVnRJRDBnYzJWd1lYSmhkRzl5U1hSbGJYTkJjbkpoZVZ0cFhUdGNiaUFnSUNBZ0lDQWdhV1lnS0dsMFpXMHViR1Z1WjNSb0lEMDlQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb1ptRnpkR0ZIWVhCVGVXMWliMndoS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaHBkR1Z0TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCMGFHVWdZMkZ6WlNCdlppQmhJRzExYkhScExXTm9ZWEpoWTNSbGNpQnRiMjV2YldWeVhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2JXOXViMjFsY2lBOUlDZGJKeUFySUdsMFpXMGdLeUFuWFNjN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb2JXOXViMjFsY2lrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb2FYUmxiU2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhKbGRIVnliaUJtWVhOMFlVMXZibTl0WlhKelFYSnlZWGt1YW05cGJpZ25KeWs3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkME52YkhWdGJqdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUFnUTI5dWRtVnlkQ0JJUlV4TklHTnZiSFZ0YmlCMGJ5QkdRVk5VUVM5VFJWQkJVa0ZVVDFKY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlIUm5kRTV2ZEdGMGFXOXVJQ0FnSUZSaGNtZGxkQ0J1YjNSaGRHbHZiam9nUmtGVFZFRWdiM0lnVTBWUVFWSkJWRTlTWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQjBaM1JUWlhCaGNtRjBiM0lnSUNCUGNIUnBiMjVoYkNCMFlYSm5aWFFnYzJWd1lYSmhkRzl5SUNobWIzSWdTRVZNVFNBdFBseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJHeDlJSFJuZEVkaGNGTjViV0p2YkNBZ0lFOXdkR2x2Ym1Gc0lIUmhjbWRsZENCbllYQWdjM2x0WW05c1hHNGdJQ0FxSUZORlVFRlNRVlJQVWlsY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJJWld4dEtGeHVJQ0FnSUhSbmRFNXZkR0YwYVc5dU9pQnpkSEpwYm1jc1hHNGdJQ0FnZEdkMFUyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ1BTQW5KeXhjYmlBZ0lDQjBaM1JIWVhCVGVXMWliMnc2SUhOMGNtbHVaeUI4SUc1MWJHd2dQU0J1ZFd4c1hHNGdJQ2s2SUVSSExrTnZiSFZ0YmlCN1hHNGdJQ0FnYVdZZ0tIUm5kRWRoY0ZONWJXSnZiQ0E5UFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdkMFIyRndVM2x0WW05c0lEMGdLSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpQmhjeUJPVDFSQlZFbFBUaWtwSUQ5Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExrWkJVMVJCSURwY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExsTkZVRUZTUVZSUFVqdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1MGIxTmxjR0Z5WVhSdmNpaDBaM1JPYjNSaGRHbHZiaUJoY3lCT1QxUkJWRWxQVGlrZ0ppWWdkR2QwVTJWd1lYSmhkRzl5SUQwOVBTQW5KeWxjYmlBZ0lDQWdJSFJuZEZObGNHRnlZWFJ2Y2lBOUlIUm9hWE11YzJWd1lYSmhkRzl5TzF4dVhHNGdJQ0FnWTI5dWMzUWdibVYzUTI5c2RXMXVJRDBnZEdocGN5NW5aWFJPWlhkRGIyeDFiVzRvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQmxiWEIwZVNCamIyeDFiVzVjYmlBZ0lDQnVaWGREYjJ4MWJXNHVhVzVwZENnb2FXUjRPaUJ1ZFcxaVpYSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR2hsYkcxUWIyeDViV1Z5SUQwZ2RHaHBjeTV6YjNWeVkyVkRiMngxYlc0dVoyVjBLR2xrZUNrN1hHNGdJQ0FnSUNBdkx5QnBkR1Z0Y3lCallXNGdZbVVnYlc5dWIyMWxjbk1nYjNJZ2FHVnNiWE5jYmlBZ0lDQWdJR052Ym5OMElHaGxiRzFKZEdWdGMwRnljbUY1SUQwZ2RHaHBjeTV6Y0d4cGRIUmxjaWhvWld4dFVHOXNlVzFsY2lrN1hHNGdJQ0FnSUNCamIyNXpkQ0IwWjNSTmIyNXZiV1Z5YzBGeWNtRjVPaUJ6ZEhKcGJtZGJYU0E5SUZ0ZE8xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQm9aV3h0U1hSbGJYTkJjbkpoZVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBkR1Z0SUQwZ2FHVnNiVWwwWlcxelFYSnlZWGxiYVYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdElEMDlQU0IwYUdsekxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1U0VWTVRTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSbmRFMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaDBaM1JIWVhCVGVXMWliMndoS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5SdlJtRnpkR0VvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBJQ1ltSUdsMFpXMHViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBZ0lDOHZJSFJvWlNCallYTmxJRzltSUdFZ2JYVnNkR2t0WTJoaGNtRmpkR1Z5SUcxdmJtOXRaWElnWTI5dWRtVnlkR1ZrSUhSdklFWkJVMVJCWEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYlc5dWIyMWxjaUE5SUNkYkp5QXJJR2wwWlcwZ0t5QW5YU2M3WEc0Z0lDQWdJQ0FnSUNBZ2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1d2RYTm9LRzF2Ym05dFpYSXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhSbmRFMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaHBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSbmRFMXZibTl0WlhKelFYSnlZWGt1YW05cGJpaDBaM1JUWlhCaGNtRjBiM0lwTzF4dUlDQWdJSDBwTzF4dUlDQWdJSEpsZEhWeWJpQnVaWGREYjJ4MWJXNDdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUklaV3h0Vkc5VFpYQmhjbUYwYjNJb0tUb2dSRWN1UTI5c2RXMXVJSHRjYmlBZ0lDQXZMeUJVVDBSUE9pQnBiWEJzWlcxbGJuUmhkR2x2Y21WMGRYSnVJSFJvYVhNdVoyVjBUbVYzUTI5c2RXMXVLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVpazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1JHbHpjR0YwWTJobGNpQnRaWFJvYjJRZ1ptOXlJRzV2ZEdGMGFXOXVJR052Ym5abGNuTnBiMjVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0T1QxUkJWRWxQVG4wZ2RHRnlaMlYwVG05MFlYUnBiMjRnSUNCT2IzUmhkR2x2YmlCM1pTQjNZVzUwSUhSdklHTnZiblpsY25RZ2RHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0IwWjNSVFpYQmhjbUYwYjNJZ0lDQlFiM056YVdKc1pTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkQ2gwWjNST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0c0lIUm5kRk5sY0dGeVlYUnZjam9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJSEJ2YzNOcFlteGxJR1Y0WTJWd2RHbHZibk5jYmlBZ0lDQnBaaUFvZEdocGN5NXpiM1Z5WTJWT2IzUmhkR2x2YmlBOVBUMGdkR2QwVG05MFlYUnBiMjRwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KM1JuZENCdWIzUmhkR2x2YmlCcGN5QnBiblpoYkdsa0p5azdYRzRnSUNBZ2FXWWdLSFJvYVhNdWRHOVRaWEJoY21GMGIzSW9kR2QwVG05MFlYUnBiMjRwSUNZbUlIUm5kRk5sY0dGeVlYUnZjaUE5UFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25kR2QwSUhObGNHRnlZWFJ2Y2lCcGN5QnViM1FnYzNCbFkybG1hV1ZrSnlrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1cGMwWmhjM1JoS0NrZ0ppWWdkR2hwY3k1MGIxTmxjR0Z5WVhSdmNpaDBaM1JPYjNSaGRHbHZiaWtnSmlZZ2RHZDBVMlZ3WVhKaGRHOXlJQ0U5UFNCdWRXeHNLVnh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRVpoYzNSaFZHOVRaWEJoY21GMGIzSW9kR2QwVTJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0JsYkhObElHbG1JQ2dvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1NBbUppQjBhR2x6TG5SdlNHVnNiU2gwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFZHOUlaV3h0S0NrN1hHNGdJQ0FnWld4elpTQnBaaUFvZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwSUNZbUlIUm9hWE11ZEc5R1lYTjBZU2gwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFUyVndZWEpoZEc5eVZHOUdZWE4wWVNncE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa2dKaVlnZEdocGN5NTBiMFpoYzNSaEtIUm5kRTV2ZEdGMGFXOXVLU2tnTHk4Z2RHaGxJR05oYzJVZ2IyWWdTRVZNVFZ4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVobGJHMG9kR2QwVG05MFlYUnBiMjRwTzF4dUlDQWdJR1ZzYzJVZ0x5OGdkR2hwY3k1cGMwaGxiRzBvS1NBbUppQjBhR2x6TG5SdlUyVndZWEpoZEc5eUtIUm5kRTV2ZEdGMGFXOXVLVnh1SUNBZ0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5dWRtVnlkRWhsYkcwb2RHZDBUbTkwWVhScGIyNHNJSFJuZEZObGNHRnlZWFJ2Y2lFcE8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHTnZibk4wY25WamRHOXlLR052YkRvZ1JFY3VRMjlzZFcxdUtTQjdYRzRnSUNBZ2RHaHBjeTVmYzI5MWNtTmxRMjlzZFcxdUlEMGdZMjlzTzF4dUlDQWdJR052Ym5OMElIVnVhWFJ6SUQwZ2RHaHBjeTVmYzI5MWNtTmxRMjlzZFcxdUxuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMDdYRzRnSUNBZ2FXWWdLSFZ1YVhSeklDRTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ2RHaHBjeTVmYzI5MWNtTmxWVzVwZEhNZ1BTQjFibWwwY3p0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFWdWFYUnpJR0Z5WlNCdWIzUWdjM0JsWTJsbWFXVmtJR2x1SUdOdmJIVnRiaWNwTzF4dUlDQWdJSFJvYVhNdVgzTnZkWEpqWlU1dmRHRjBhVzl1SUQwZ2RHaHBjeTVuWlhSVGIzVnlZMlZPYjNSaGRHbHZiaWdwTzF4dUlDQWdJSFJvYVhNdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ3Z1BTQW9kR2hwY3k1cGMwWmhjM1JoS0NrcElEOGdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkhORWFXTjBMa1pCVTFSQklEcGNiaUFnSUNBZ0lDaDBhR2x6TG1selNHVnNiU2dwS1NBL0lIUm9hWE11WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUlSVXhOSURwY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExsTkZVRUZTUVZSUFVqdGNiaUFnZlZ4dWZWeHVJbDE5IiwiLy8gRGF0YSBzdHJ1Y3R1cmVzIGZvciBWLURvbWFpbiByZWdpb25zIG9mIGFudGlib2RpZXNcbmV4cG9ydCB2YXIgVmRSZWdpb25UeXBlO1xuKGZ1bmN0aW9uIChWZFJlZ2lvblR5cGUpIHtcbiAgICBWZFJlZ2lvblR5cGVbXCJVbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiRlJcIl0gPSBcImZyYW1ld29ya1wiO1xuICAgIFZkUmVnaW9uVHlwZVtcIkNEUlwiXSA9IFwiY2RyXCI7XG59KShWZFJlZ2lvblR5cGUgfHwgKFZkUmVnaW9uVHlwZSA9IHt9KSk7XG4vKiogRGVzY3JpYmVzIFYtRE9NQUlOIChJRyBhbmQgVFIpIHJlZ2lvbiAob2YgbXVsdGlwbGUgYWxpZ25tZW50KVxuICogaHR0cHM6Ly93d3cuaW1ndC5vcmcvSU1HVFNjaWVudGlmaWNDaGFydC9OdW1iZXJpbmcvSU1HVElHVkxzdXBlcmZhbWlseS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBWZFJlZ2lvbiB7XG4gICAgLyoqXG4gICAgICogc3RhcnQgYW5kIHBvc2l0aW9uIGFyZSBzdHJpbmdzIGJlY2F1c2UgdGhleSBjb3JyZXNwb25kIHRvIHBvc2l0aW9uIG5hbWVzIGFzIGNvbHVtbiBuYW1lcyBpbiBBTkFSQ0kgb3V0cHV0XG4gICAgICogQHBhcmFtIHtWZFJlZ2lvblR5cGV9IHR5cGUgIFR5cGUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBOYW1lIG9mIHRoZSByZWdpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhaW5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JkZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zaXRpb25TdGFydE5hbWUgIFJlZ2lvbiBzdGFydCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvbkVuZE5hbWUgIFJlZ2lvbiBlbmQgcG9zaXRpb24gKGluY2x1c2l2ZSlcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCBjaGFpbiwgb3JkZXIsIHBvc2l0aW9uU3RhcnROYW1lLCBwb3NpdGlvbkVuZE5hbWUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jaGFpbiA9IGNoYWluO1xuICAgICAgICB0aGlzLm9yZGVyID0gb3JkZXI7XG4gICAgICAgIHRoaXMucG9zaXRpb25TdGFydE5hbWUgPSBwb3NpdGlvblN0YXJ0TmFtZTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVuZE5hbWUgPSBwb3NpdGlvbkVuZE5hbWU7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1RdGNtVm5hVzl1Y3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblprTFhKbFoybHZibk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNjVVJCUVhGRU8wRkJSWEpFTEUxQlFVMHNRMEZCVGl4SlFVRlpMRmxCU1ZnN1FVRktSQ3hYUVVGWkxGbEJRVms3U1VGRGRFSXNiVU5CUVcxQ0xFTkJRVUU3U1VGRGJrSXNaME5CUVdkQ0xFTkJRVUU3U1VGRGFFSXNNa0pCUVZjc1EwRkJRVHRCUVVOaUxFTkJRVU1zUlVGS1Z5eFpRVUZaTEV0QlFWb3NXVUZCV1N4UlFVbDJRanRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4UFFVRlBMRkZCUVZFN1NVRlJia0k3T3pzN096czdPMDlCVVVjN1NVRkRTQ3haUVVGWkxFbEJRV3RDTEVWQlFVVXNTVUZCV1N4RlFVRkZMRXRCUVdFc1JVRkJSU3hMUVVGaExFVkJRM2hGTEdsQ1FVRjVRaXhGUVVGRkxHVkJRWFZDTzFGQlEyeEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF6dFJRVU16UXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExHVkJRV1VzUTBGQlF6dEpRVU42UXl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZMeUJFWVhSaElITjBjblZqZEhWeVpYTWdabTl5SUZZdFJHOXRZV2x1SUhKbFoybHZibk1nYjJZZ1lXNTBhV0p2WkdsbGMxeHVYRzVsZUhCdmNuUWdaVzUxYlNCV1pGSmxaMmx2YmxSNWNHVWdlMXh1SUNCVmJtdHViM2R1SUQwZ0ozVnVhMjV2ZDI0bkxGeHVJQ0JHVWlBOUlDZG1jbUZ0WlhkdmNtc25MRnh1SUNCRFJGSWdQU0FuWTJSeUp5eGNibjFjYmx4dUx5b3FJRVJsYzJOeWFXSmxjeUJXTFVSUFRVRkpUaUFvU1VjZ1lXNWtJRlJTS1NCeVpXZHBiMjRnS0c5bUlHMTFiSFJwY0d4bElHRnNhV2R1YldWdWRDbGNiaUFxSUdoMGRIQnpPaTh2ZDNkM0xtbHRaM1F1YjNKbkwwbE5SMVJUWTJsbGJuUnBabWxqUTJoaGNuUXZUblZ0WW1WeWFXNW5MMGxOUjFSSlIxWk1jM1Z3WlhKbVlXMXBiSGt1YUhSdGJGeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVJTWldkcGIyNGdlMXh1SUNCMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVN1hHNGdJRzVoYldVNklITjBjbWx1Wnp0Y2JpQWdZMmhoYVc0NklITjBjbWx1Wnp0Y2JpQWdiM0prWlhJNklHNTFiV0psY2p0Y2JpQWdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVTZJSE4wY21sdVp6dGNiaUFnY0c5emFYUnBiMjVGYm1ST1lXMWxPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlITjBZWEowSUdGdVpDQndiM05wZEdsdmJpQmhjbVVnYzNSeWFXNW5jeUJpWldOaGRYTmxJSFJvWlhrZ1kyOXljbVZ6Y0c5dVpDQjBieUJ3YjNOcGRHbHZiaUJ1WVcxbGN5QmhjeUJqYjJ4MWJXNGdibUZ0WlhNZ2FXNGdRVTVCVWtOSklHOTFkSEIxZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMVprVW1WbmFXOXVWSGx3WlgwZ2RIbHdaU0FnVkhsd1pTQnZaaUIwYUdVZ2NtVm5hVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVZVzFsSUNCT1lXMWxJRzltSUhSb1pTQnlaV2RwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR05vWVdsdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2Y21SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVUZEdGeWRFNWhiV1VnSUZKbFoybHZiaUJ6ZEdGeWRDQndiM05wZEdsdmJpQW9hVzVqYkhWemFYWmxLVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NHOXphWFJwYjI1RmJtUk9ZVzFsSUNCU1pXZHBiMjRnWlc1a0lIQnZjMmwwYVc5dUlDaHBibU5zZFhOcGRtVXBYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVc0lHNWhiV1U2SUhOMGNtbHVaeXdnWTJoaGFXNDZJSE4wY21sdVp5d2diM0prWlhJNklHNTFiV0psY2l4Y2JpQWdJQ0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVG9nYzNSeWFXNW5MQ0J3YjNOcGRHbHZia1Z1WkU1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11ZEhsd1pTQTlJSFI1Y0dVN1hHNGdJQ0FnZEdocGN5NXVZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TG1Ob1lXbHVJRDBnWTJoaGFXNDdYRzRnSUNBZ2RHaHBjeTV2Y21SbGNpQTlJRzl5WkdWeU8xeHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdQU0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVHRjYmlBZ0lDQjBhR2x6TG5CdmMybDBhVzl1Ulc1a1RtRnRaU0E5SUhCdmMybDBhVzl1Ulc1a1RtRnRaVHRjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQgeyBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tICcuLi91bmtub3duJztcbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBuZXcgREcuUG9pbnQoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCwgZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wKTtcbn07XG5ERy5SZWN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdCA8PSB4ICYmIHggPD0gdGhpcy5yaWdodCAmJiB0aGlzLnRvcCA8PSB5ICYmIHkgPD0gdGhpcy5ib3R0b207XG59O1xuZXhwb3J0IGNsYXNzIFBvc2l0aW9uTW9ub21lckluZm8ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBuZXcgREcuUmVjdCgwLCAwLCAwLCAwKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9zaXRpb25JbmZvIHtcbiAgICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHBvc2l0aW9uICgnMTExQScsICcxMTEuMScsIGV0YylcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgICAgICB0aGlzLnJvd0NvdW50ID0gMDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgV2ViTG9nbyBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IC0xO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lID0gQ29sb3JTY2hlbWVzW051Y2xlb3RpZGVzV2ViTG9nby5yZXNpZHVlc1NldF07XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICB0aGlzLmF4aXNIZWlnaHQgPSAxMjtcbiAgICAgICAgdGhpcy5zZXFDb2wgPSBudWxsO1xuICAgICAgICB0aGlzLnNwbGl0dGVyID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSBtYXhMZW5ndGg6IG51bWJlciA9IDEwMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gMDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLnZpZXdTdWJzID0gW107XG4gICAgICAgIHRoaXMudmlld2VySWQgPSBXZWJMb2dvLnZpZXdlckNvdW50O1xuICAgICAgICBXZWJMb2dvLnZpZXdlckNvdW50ICs9IDE7XG4gICAgICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggPSB0aGlzLmZsb2F0KCdwb3NpdGlvbldpZHRoJywgMTYgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogNCwgbWF4OiA2NCwgcG9zdGZpeDogJ3B4J30qLyk7XG4gICAgICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWluSGVpZ2h0JywgNTAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogMjUwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLmZsb2F0KCdtYXhIZWlnaHQnLCAxMDAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogNTAwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMgPSB0aGlzLmJvb2woJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcycsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnN0cmluZygnc2VxdWVuY2VDb2x1bW5OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnc3RhcnRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnZW5kUG9zaXRpb25OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuZml4V2lkdGggPSB0aGlzLmJvb2woJ2ZpeFdpZHRoJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy5zdHJpbmcoJ3ZlcnRpY2FsQWxpZ25tZW50JywgJ21pZGRsZScsIHsgY2hvaWNlczogWyd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbSddIH0pO1xuICAgICAgICB0aGlzLmhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygnaG9yaXpvbnRhbEFsaWdubWVudCcsICdjZW50ZXInLCB7IGNob2ljZXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5maXRBcmVhID0gdGhpcy5ib29sKCdmaXRBcmVhJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2hyaW5rRW1wdHlUYWlsID0gdGhpcy5ib29sKCdzaHJpbmtFbXB0eVRhaWwnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5za2lwRW1wdHlQb3NpdGlvbnMgPSB0aGlzLmJvb2woJ3NraXBFbXB0eVBvc2l0aW9ucycsIGZhbHNlKTtcbiAgICB9XG4gICAgLyoqIEZvciBzdGFydFBvc2l0aW9uIGVxdWFscyB0byBlbmRQb3NpdGlvbiBMZW5ndGggaXMgMSAqL1xuICAgIGdldCBMZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2ViTG9nbyBzZWNvbmQgaW5pdGlhbGl6YXRpb24hJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmhlbHBVcmwgPSAnL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvd2ViLWxvZ28ubWQnO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdWkuZGl2KCdObyBtZXNzYWdlJyk7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdWkuY2FudmFzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVpLmRpdihbdGhpcy5tc2dIb3N0LCB0aGlzLmNhbnZhc10pO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIgPSB1aS5yYW5nZVNsaWRlcigwLCAyMCwgMiwgNSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTJweCc7XG4gICAgICAgICAgICBjb25zdCBnZXRNb25vbWVyID0gKHApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqUG9zID0gTWF0aC5mbG9vcihwLnggLyB0aGlzLl9wb3NpdGlvbldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAgICAgICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gdGhpcy5zdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZW92ZXInKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudCh0aGlzLmNhbnZhcywgJ21vdXNlbW92ZScpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgdGhpcy5zcGxpdHRlciAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IHRoaXMuc3BsaXR0ZXIoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICB9LCBhcmdzLnggKyAxNiwgYXJncy55ICsgMTYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCBlLmJ1dHRvbiAhPSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGU7XG4gICAgICAgICAgICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG4gICAgICAgICAgICAgICAgLy8gcHJldmVudHMgZGVzZWxlY3QgYWxsIHJvd3MgaWYgd2UgbWlzcyBtb25vbWVyIGJvdW5kc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiB0aGlzLnNwbGl0dGVyICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmluaXQoKGlSb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcU0gPSBzZXEgPyB0aGlzLnNwbGl0dGVyKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5zbGlkZXIucm9vdCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Sb290U2l6ZUNoYW5nZWQoKSBgICtcbiAgICAgICAgLy8gICBgcm9vdC53aWR0aD0ke3RoaXMucm9vdC5jbGllbnRXaWR0aH0sIHJvb3QuaGVpZ2h0PSR7dGhpcy5yb290LmNsaWVudEhlaWdodH0sIGAgK1xuICAgICAgICAvLyAgIGBjYW52YXMud2lkdGg9JHt0aGlzLmNhbnZhcy53aWR0aH0sIGNhbnZhcy5oZWlnaHQ9JHt0aGlzLmNhbnZhcy5oZWlnaHR9IC5gKTtcbiAgICB9XG4gICAgLyoqIEFzc2lnbnMge0BsaW5rIHNlcUNvbH0gYW5kIHtAbGluayBjcH0gYmFzZWQgb24ge0BsaW5rIHNlcXVlbmNlQ29sdW1uTmFtZX0gYW5kIGNhbGxzIHtAbGluayByZW5kZXJ9KCkuXG4gICAgICovXG4gICAgdXBkYXRlU2VxQ29sKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPyB0aGlzLmRhdGFGcmFtZS5jb2wodGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSBXZWJMb2dvLnBpY2tVcFNlcUNvbDIodGhpcy5kYXRhRnJhbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID0gdGhpcy5zZXFDb2wgPyB0aGlzLnNlcUNvbC5uYW1lIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5zZXFDb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuc2VxQ29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGxpdHRlciA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKHRoaXMuc2VxQ29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BsaXR0ZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICB1cGRhdGVQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXFDb2wpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBjYXRlZ29yaWVzO1xuICAgICAgICBpZiAodGhpcy5zaHJpbmtFbXB0eVRhaWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KEFycmF5LmZyb20oQXJyYXkoaW5kaWNlcy5sZW5ndGgpLmtleXMoKSkubWFwKChpKSA9PiB0aGlzLnNlcUNvbC5nZXQoaW5kaWNlc1tpXSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gdGhpcy5zZXFDb2wuY2F0ZWdvcmllcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi5jYXRlZ29yaWVzLm1hcCgocykgPT4gcyAhPT0gbnVsbCA/IHRoaXMuc3BsaXR0ZXIocykubGVuZ3RoIDogMCkpIDogMDtcbiAgICAgICAgLy8gR2V0IHBvc2l0aW9uIG5hbWVzIGZyb20gZGF0YSBjb2x1bW4gdGFnICdwb3NpdGlvbk5hbWVzJ1xuICAgICAgICBjb25zdCBwb3NpdGlvbk5hbWVzVHh0ID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdwb3NpdGlvbk5hbWVzJyk7XG4gICAgICAgIC8vIEZhbGxiYWNrIGlmICdwb3NpdGlvbk5hbWVzJyB0YWcgaXMgbm90IHByb3ZpZGVkXG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IHBvc2l0aW9uTmFtZXNUeHQgPyBwb3NpdGlvbk5hbWVzVHh0LnNwbGl0KCcsICcpLm1hcCgobikgPT4gbi50cmltKCkpIDpcbiAgICAgICAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5zdGFydFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpIDogMDtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9ICh0aGlzLmVuZFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLmVuZFBvc2l0aW9uTmFtZSkpID9cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuZW5kUG9zaXRpb25OYW1lKSA6IChtYXhMZW5ndGggLSAxKTtcbiAgICB9XG4gICAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblByb3BlcnR5Q2hhbmdlZCggJHtwcm9wZXJ0eS5uYW1lfSA9ICcnIH0pYCk7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KTtcbiAgICAgICAgc3dpdGNoIChwcm9wZXJ0eS5uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICdjb25zaWRlck51bGxTZXF1ZW5jZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWluSGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heEhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXhXaWR0aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbEFsaWdubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpdEFyZWEnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hyaW5rRW1wdHlUYWlsJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBvblRhYmxlQXR0YWNoZWQ6IHsgZ2V0OiAoKSA9PiBzdXBlci5vblRhYmxlQXR0YWNoZWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IHRoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICAgICAgICAgIF9zdXBlci5vblRhYmxlQXR0YWNoZWQuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnJlbmRlcigpKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRldGFjaCgpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBkZXRhY2g6IHsgZ2V0OiAoKSA9PiBzdXBlci5kZXRhY2ggfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IGAke3RoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnfWA7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLmRldGFjaC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX251bGxTZXF1ZW5jZShmaWxsZXJSZXNpZHVlID0gJ1gnKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcylcbiAgICAgICAgICAgIHJldHVybiBuZXcgQXJyYXkodGhpcy5MZW5ndGgpLmZpbGwoZmlsbGVyUmVzaWR1ZSkuam9pbignJyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgX2NhbGN1bGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0IHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5MZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc05hbWUgPSB0aGlzLnBvc2l0aW9uTmFtZXNbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXSA9IG5ldyBQb3NpdGlvbkluZm8ocG9zTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMjAyMi0wNS0wNSBhc2thbGtpbiBpbnN0cnVjdGVkIHRvIHNob3cgV2ViTG9nbyBiYXNlZCBvbiBmaWx0ZXIgKG5vdCBzZWxlY3Rpb24pXG4gICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIC8vIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEluZGV4ZXMoKSA6XG4gICAgICAgIC8vICAgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSBpbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG4gICAgICAgICAgICBsZXQgcyA9ICh0aGlzLnNlcUNvbC5nZXQoaSkpO1xuICAgICAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICAgICAgcyA9IHRoaXMuX251bGxTZXF1ZW5jZSgpO1xuICAgICAgICAgICAgICAgICsrdGhpcy5yb3dzTnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlcU0gPSB0aGlzLnNwbGl0dGVyKHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG1JbmZvID0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcTtcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gc2VxTVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSB8fCAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCEobSBpbiBwbUluZm8pKVxuICAgICAgICAgICAgICAgICAgICBwbUluZm9bbV0gPSBuZXcgUG9zaXRpb25Nb25vbWVySW5mbygpO1xuICAgICAgICAgICAgICAgIHBtSW5mb1ttXS5jb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vI3JlZ2lvbiBQb2xpc2ggZnJlcSBjb3VudHNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAvLyBkZWxldGUgdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVsnLSddO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIGluIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgKz0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVttXS5jb3VudDtcbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICAgICAgY29uc3QgciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLSB0aGlzLmF4aXNIZWlnaHQgKiByO1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Ll9jYWxjdWxhdGUoKSBtYXhIZWlnaHQ9JHttYXhIZWlnaHR9LmApO1xuICAgICAgICAvLyNyZWdpb24gQ2FsY3VsYXRlIHNjcmVlblxuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZyZXEgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudDtcbiAgICAgICAgICAgIGxldCB5ID0gdGhpcy5heGlzSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGZyZXEpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYVswXSAhPT0gJy0nICYmIGJbMF0gIT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbMV0uY291bnQgLSBhWzFdLmNvdW50O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJyAmJiBiWzBdID09PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGVsc2UgLyogKGJbMF0gPT09ICctJykgKi9cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBtOiBzdHJpbmcgPSBlbnRyeVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoID0gbWF4SGVpZ2h0ICogcG1JbmZvLmNvdW50IC8gcm93Q291bnQ7XG4gICAgICAgICAgICAgICAgcG1JbmZvLmJvdW5kcyA9IG5ldyBERy5SZWN0KGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoLCB5LCB0aGlzLl9wb3NpdGlvbldpZHRoLCBoKTtcbiAgICAgICAgICAgICAgICB5ICs9IGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfVxuICAgIC8vIHJlZmxlY3QgY2hhbmdlcyBtYWRlIHRvIGZpbHRlci9zZWxlY3Rpb25cbiAgICByZW5kZXIocmVjYWxjID0gdHJ1ZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0aGlzLm1zZ0hvc3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCAmJiAhdGhpcy5jcCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5pbm5lclRleHQgPSBgVW5rbm93biBwYWxldHRlIChjb2x1bW4gc2VtVHlwZTogJyR7dGhpcy5zZXFDb2wuc2VtVHlwZX0nKS5gO1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUgfHwgIXRoaXMuY3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoIWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChyZWNhbGMpXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGUoKTtcbiAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgICAgIGcudGV4dEJhc2VsaW5lID0gdGhpcy50ZXh0QmFzZWxpbmU7XG4gICAgICAgIC8vIFByZXZlbnRzIGRpdmlzaW9uIGJ5IHplcm8gb24gTGVuZ3RoID0gMFxuICAgICAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uID09PSAtMSB8fCB0aGlzLmVuZFBvc2l0aW9uID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8jcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ2JsYWNrJztcbiAgICAgICAgZy50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgZy5mb250ID0gJzEwcHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICBjb25zdCBwb3NOYW1lTWF4V2lkdGggPSBNYXRoLm1heCguLi50aGlzLnBvc2l0aW9ucy5tYXAoKHBvcykgPT4gZy5tZWFzdXJlVGV4dChwb3MubmFtZSkud2lkdGgpKTtcbiAgICAgICAgY29uc3QgaFNjYWxlID0gcG9zTmFtZU1heFdpZHRoIDwgKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSA/IDEgOiAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpIC8gcG9zTmFtZU1heFdpZHRoO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oaFNjYWxlLCAwLCAwLCAxLCBqUG9zICogdGhpcy5fcG9zaXRpb25XaWR0aCArIHRoaXMuX3Bvc2l0aW9uV2lkdGggLyAyLCAwKTtcbiAgICAgICAgICAgIGcuZmlsbFRleHQocG9zLm5hbWUsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttb25vbWVyLCBwbUluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIgIT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyVHh0ID0gV2ViTG9nby5tb25vbWVyVG9UZXh0KG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gcG1JbmZvLmJvdW5kcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9udFN0eWxlID0gJzE2cHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICAgICAgICAgICAgICAvLyBIYWNrcyB0byBzY2FsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyB0byB0YXJnZXQgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckFzY2VudCA9IDAuMjU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckhlaWdodCA9IDEyLjI7XG4gICAgICAgICAgICAgICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdsaWdodGdyYXknO1xuICAgICAgICAgICAgICAgICAgICBnLmxpbmVXaWR0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGcucmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gKF9hID0gdGhpcy5jcC5nZXQobW9ub21lcikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuY3AuZ2V0KCdvdGhlcicpO1xuICAgICAgICAgICAgICAgICAgICBnLnRleHRBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgICAgICAgICAgICAgZy5mb250ID0gZm9udFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICAvL2cuZmlsbFJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtVG0gPSBnLm1lYXN1cmVUZXh0KG1vbm9tZXJUeHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiAobU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQgIT0gMClcbiAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKGBtOiAke219LCBtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDogJHttTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudH1gKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oYi53aWR0aCAvIG1UbS53aWR0aCwgMCwgMCwgYi5oZWlnaHQgLyB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQsIGIubGVmdCwgYi50b3ApO1xuICAgICAgICAgICAgICAgICAgICBnLmZpbGxUZXh0KG1vbm9tZXJUeHQsIDAsIC11cHBlcmNhc2VMZXR0ZXJBc2NlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYWxjU2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLkxlbmd0aCAqIHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgdGhpcy5yb290LmNsaWVudEhlaWdodCkpO1xuICAgICAgICBpZiAodGhpcy5maXRBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCB4U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeVNjYWxlID0gdGhpcy5yb290LmNsaWVudFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KDEsIE1hdGgubWluKHhTY2FsZSwgeVNjYWxlKSk7XG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggKiBzY2FsZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGggKiByO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgLy8gY29uc3QgY2FudmFzSGVpZ2h0OiBudW1iZXIgPSB3aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCA/IGhlaWdodCAtIDggOiBoZWlnaHQ7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtjYW52YXNIZWlnaHR9cHhgKTtcbiAgICAgICAgLy8gQWRqdXN0IGhvc3QgYW5kIHJvb3Qgd2lkdGhcbiAgICAgICAgaWYgKHRoaXMuZml4V2lkdGgpIHtcbiAgICAgICAgICAgIC8vIGZ1bGwgd2lkdGggZm9yIGNhbnZhcyBob3N0IGFuZCByb290XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gYWxsb3cgc2Nyb2xsIGNhbnZhcyBpbiByb290XG4gICAgICAgICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8haW1wb3J0YW50JztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgndGV4dC1hbGlnbicsIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCk7XG4gICAgICAgICAgICAvLyB2ZXJ0aWNhbCBhbGlnbm1lbnRcbiAgICAgICAgICAgIGxldCBob3N0VG9wTWFyZ2luID0gMDtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy52ZXJ0aWNhbEFsaWdubWVudCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpIC8gMik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC0gaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgJHtob3N0VG9wTWFyZ2lufXB4YCwgJ2ltcG9ydGFudCcpO1xuICAgICAgICAgICAgaWYgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhcbiAgICAgICAgLy8gICBgdGhpcy5yb290LnN0eWxlLmhlaWdodCA9ICR7dGhpcy5yb290LnN0eWxlLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5yb290LmNsaWVudEhlaWdodCA9ICR7dGhpcy5yb290LmNsaWVudEhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5ob3N0LnN0eWxlLmhlaWdodCA9ICR7dGhpcy5ob3N0LnN0eWxlLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5ob3N0LmNsaWVudEhlaWdodCA9ICR7dGhpcy5ob3N0LmNsaWVudEhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICAnXFxuJyArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLmhlaWdodCAgICAgICA9ICR7dGhpcy5jYW52YXMuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHQgPSAke3RoaXMuY2FudmFzLnN0eWxlLmhlaWdodH1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbCBDb2x1bW4gdG8gbG9vayBmb3IgYSBwYWxldHRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gICAgICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAgICAgKi9cbiAgICBzdGF0aWMgcGlja1VwUGFsZXR0ZShzZXFDb2wsIG1pbkxlbmd0aCA9IDUpIHtcbiAgICAgICAgbGV0IHJlcyA9IG51bGw7XG4gICAgICAgIHN3aXRjaCAoc2VxQ29sLnNlbVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgcmVzID0gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzID0gW1xuICAgICAgICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoTnVjbGVvdGlkZXMuTmFtZXMpKSwgTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW1dLFxuICAgICAgICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpLCBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3Vwc10sXG4gICAgICAgIF07XG4gICAgICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW0gPSBhbHBoYWJldENhbmRpZGF0ZXNcbiAgICAgICAgICAgIC5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMF0pKTtcbiAgICAgICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICAgICAgaWYgKG1heENvcyA+IDAuNTUpXG4gICAgICAgICAgICByZXMgPSBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMV07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlcyA9IFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIFN0YXRzIG9mIHNlcXVlbmNlcyB3aXRoIHNwZWNpZmllZCBzcGxpdHRlciBmdW5jLCByZXR1cm5zIHsgZnJlcSwgc2FtZUxlbmd0aCB9LlxuICAgICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbWluTGVuZ3RoXG4gICAgICogQHBhcmFtIHtTcGxpdHRlckZ1bmN9IHNwbGl0dGVyXG4gICAgICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gICAgICovXG4gICAgc3RhdGljIGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlcikge1xuICAgICAgICBjb25zdCBmcmVxID0ge307XG4gICAgICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICAgICAgbGV0IGZpcnN0TGVuZ3RoID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBzZXEgb2Ygc2VxQ29sLmNhdGVnb3JpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuICAgICAgICAgICAgaWYgKGZpcnN0TGVuZ3RoID09IG51bGwpXG4gICAgICAgICAgICAgICAgZmlyc3RMZW5ndGggPSBtU2VxLmxlbmd0aDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgICAgICAgICBzYW1lTGVuZ3RoID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobVNlcS5sZW5ndGggPiBtaW5MZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgZnJlcVttXSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZyZXFbbV0gKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aCB9O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXEsIGFscGhhYmV0LCBnYXBTeW1ib2wgPSAnLScpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IG5ldyBTZXQoWy4uLm5ldyBTZXQoT2JqZWN0LmtleXMoZnJlcSkpLCAuLi5hbHBoYWJldF0pO1xuICAgICAgICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuICAgICAgICBjb25zdCBmcmVxQSA9IFtdO1xuICAgICAgICBjb25zdCBhbHBoYWJldEEgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgICAgICAgIGZyZXFBLnB1c2gobSBpbiBmcmVxID8gZnJlcVttXSA6IDApO1xuICAgICAgICAgICAgYWxwaGFiZXRBLnB1c2goYWxwaGFiZXQuaGFzKG0pID8gMSA6IDApO1xuICAgICAgICB9XG4gICAgICAgIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICAgICAgICBjb25zdCBmcmVxViA9IG5ldyBWZWN0b3IoZnJlcUEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldFYgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgICAgIGNvbnN0IGNvcyA9IHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbiAgICAgICAgcmV0dXJuIGNvcztcbiAgICB9XG4gICAgLy8gLyoqIEZpcnN0IHRyeSB0byBmaW5kIGNvbHVtbiB3aXRoIHNlbVR5cGUgJ2FsaWduZWRTZXF1ZW5jZScuXG4gICAgLy8gICogTmV4dCBsb29rIGZvciBjb2x1bW4gd2l0aCBkYXRhIGFscGhhYmV0IGNvcnJlc3BvbmRpbmcgdG8gYW55IG9mIHRoZSBrbm93biBwYWxldHRlcy5cbiAgICAvLyAgKiBAcGFyYW0ge0RHLkRhdGFGcmFtZX0gZGF0YUZyYW1lXG4gICAgLy8gICogQHJldHVybiB7REcuQ29sdW1ufSBUaGUgY29sdW1uIHdlIHdlcmUgbG9va2luZyBmb3Igb3IgbnVsbFxuICAgIC8vICAqL1xuICAgIC8vIHByaXZhdGUgcGlja1VwU2VxQ29sKGRhdGFGcmFtZTogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gICAgLy8gICBsZXQgcmVzOiBERy5Db2x1bW4gfCBudWxsID0gZGF0YUZyYW1lLmNvbHVtbnMuYnlTZW1UeXBlKCdhbGlnbmVkU2VxdWVuY2UnKTtcbiAgICAvLyAgIGlmIChyZXMgPT0gbnVsbCkge1xuICAgIC8vICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkYXRhRnJhbWUuY29sdW1ucykge1xuICAgIC8vICAgICAgIGNvbnN0IGNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKGNvbCBhcyBERy5Db2x1bW4sIDUpO1xuICAgIC8vICAgICAgIGlmIChjcCAhPT0gbnVsbCAmJiAhKGNwIGluc3RhbmNlb2YgVW5rbm93blNlcVBhbGV0dGUpKSB7XG4gICAgLy8gICAgICAgICByZXMgPSBjb2w7XG4gICAgLy8gICAgICAgICBicmVhaztcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyAgIHJldHVybiByZXM7XG4gICAgLy8gfVxuICAgIHN0YXRpYyBwaWNrVXBTZXFDb2wyKGRmKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3Qgc2VtVHlwZUNvbExpc3QgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZUFsbChERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpO1xuICAgICAgICBsZXQgcmVzQ29sID0gKF9hID0gc2VtVHlwZUNvbExpc3QuZmluZCgoY29sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgICAgICAgfSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgICAgICAgcmV0dXJuIHJlc0NvbDtcbiAgICB9XG4gICAgLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAgICAgKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICovXG4gICAgc3RhdGljIHNwbGl0dGVyQXNGYXN0YShzZXEpIHtcbiAgICAgICAgY29uc3QgcmVzID0gd3Uoc2VxLnRvU3RyaW5nKCkubWF0Y2hBbGwoV2ViTG9nby5tb25vbWVyUmUpKVxuICAgICAgICAgICAgLm1hcCgobWEpID0+IHtcbiAgICAgICAgICAgIGxldCBtUmVzO1xuICAgICAgICAgICAgY29uc3QgbSA9IG1hWzBdO1xuICAgICAgICAgICAgaWYgKG0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChtIGluIFdlYkxvZ28uYWFTeW5vbnltcykge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gV2ViTG9nby5hYVN5bm9ueW1zW21dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbVJlcyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb25nIG1vbm9tZXIgJyR7bX0nIGhhcyBub3QgYSBzaG9ydCBzeW5vbnltLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1SZXM7XG4gICAgICAgIH0pLnRvQXJyYXkoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgc3RhdGljIHNwbGl0dGVyQXNIZWxtKHNlcSkge1xuICAgICAgICBXZWJMb2dvLmhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICBjb25zdCBlYSA9IFdlYkxvZ28uaGVsbVJlLmV4ZWMoc2VxLnRvU3RyaW5nKCkpO1xuICAgICAgICBjb25zdCBpblNlcSA9IGVhID8gZWFbMl0ucmVwbGFjZShXZWJMb2dvLmhlbG1XcmFwcGVyc1JlLCAnJykgOiBudWxsO1xuICAgICAgICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tKSA9PiB7XG4gICAgICAgICAgICBXZWJMb2dvLmhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgY29uc3QgcHAxTSA9IFdlYkxvZ28uaGVsbVBwMVJlLmV4ZWMobW0pO1xuICAgICAgICAgICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtbUxpc3QgPSBpblNlcSA/IGluU2VxLnNwbGl0KCcuJykgOiBbXTtcbiAgICAgICAgY29uc3QgbW1MaXN0UmVzID0gbW1MaXN0Lm1hcChtbVBvc3RQcm9jZXNzKTtcbiAgICAgICAgcmV0dXJuIG1tTGlzdFJlcztcbiAgICB9XG4gICAgLyoqIEdldHMgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlIGJ5IHNlcGFyYXRvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gICAgICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIChzZXEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXRzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhO1xuICAgICAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcik7XG4gICAgICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnaGVsbScpKVxuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG4gICAgICAgIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG4gICAgfVxuICAgIHN0YXRpYyBnZXRTcGxpdHRlckZvckNvbHVtbihjb2wpIHtcbiAgICAgICAgaWYgKGNvbC5zZW1UeXBlICE9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gY29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgICAgIHJldHVybiBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xuICAgIH1cbiAgICAvKiBTaG9ydGVucyBtb25vbWVyIHJlcHJlc2VudGF0aW9uIHRleHQgZm9yIG1vbm9tZXJzIHdpdGggbG9uZyBuYW1lcy5cbiAgICAqKi9cbiAgICBzdGF0aWMgbW9ub21lclRvVGV4dChzcmMpIHtcbiAgICAgICAgY29uc3Qgc3JjVHh0ID0gc3JjLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChzcmNUeHQubGVuZ3RoIDw9IDUpIHtcbiAgICAgICAgICAgIHJldHVybiBzcmNUeHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHd1KHNyYy50b1N0cmluZygpLm1hdGNoQWxsKFdlYkxvZ28ubG9uZ01vbm9tZXJQYXJ0UmUpKVxuICAgICAgICAgICAgICAgIC5tYXAoKG1hKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbVJlcyA9IG1hWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBtUmVzO1xuICAgICAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnQwID0gcGFydHNbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzVHh0ID0gcGFydDAubGVuZ3RoIDwgNiA/IGAke3BhcnQwfeKApmAgOiBgJHtwYXJ0MC5zdWJzdHJpbmcoMCwgNSl94oCmYDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzVHh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG5XZWJMb2dvLnZpZXdlckNvdW50ID0gLTE7XG5XZWJMb2dvLm1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5XZWJMb2dvLmhlbG1SZSA9IC8oUEVQVElERTF8RE5BMXxSTkExKVxceyhbXn1dKyl9L2c7XG5XZWJMb2dvLmhlbG1XcmFwcGVyc1JlID0gLyhSXFwofERcXCh8XFwpUCkvZztcbldlYkxvZ28uaGVsbVBwMVJlID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcbi8qKiBPbmx5IHNvbWUgb2YgdGhlIHN5bm9ueW1zLiBUaGVzZSB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIGNsdXN0ZXJlZCBvbGlnb3BlcHRpZGUgZGF0YXNldC4gKi9cbldlYkxvZ28uYWFTeW5vbnltcyA9IHtcbiAgICAnW01lTmxlXSc6ICdMJyxcbiAgICAnW01lQV0nOiAnQScsXG4gICAgJ1tNZUddJzogJ0cnLFxuICAgICdbTWVGXSc6ICdGJyxcbn07XG5XZWJMb2dvLmxvbmdNb25vbWVyUGFydFJlID0gLyhcXHcrKS9nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZDJWaUxXeHZaMjh1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjNaV0l0Ykc5bmJ5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZEUVN4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUTNSRExFOUJRVThzUzBGQlN5eEZRVUZGTEUxQlFVMHNhVUpCUVdsQ0xFTkJRVU03UVVGRmRFTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc1RVRkJUU3hEUVVGRE8wRkJSVGRDTEU5QlFVOHNSVUZCUXl4TlFVRk5MRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjJSU3hQUVVGUExFVkJRVU1zV1VGQldTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRExFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkRMMFlzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUlN4clFrRkJhMElzUlVGQlF5eE5RVUZOTEdWQlFXVXNRMEZCUXp0QlFVTTNSQ3hQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZGTEcxQ1FVRnRRaXhGUVVGRExFMUJRVTBzWjBKQlFXZENMRU5CUVVNN1FVRkRhRVVzVDBGQlR5eEZRVUZ2UWl4clFrRkJhMElzUlVGQlF5eE5RVUZOTEZsQlFWa3NRMEZCUXp0QlFXOUNha1VzYVVKQlFXbENMRU5CUVVNc1UwRkJVeXhEUVVGRExHbENRVUZwUWl4SFFVRkhMRlZCUVZNc1MwRkJhVUk3U1VGRGVFVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN1NVRkRNVU1zVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUXpORkxFTkJRVU1zUTBGQlF6dEJRVVZHTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZUTEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRhRVlzUTBGQlF5eERRVUZETzBGQlJVWXNUVUZCVFN4UFFVRlBMRzFDUVVGdFFqdEpRVk01UWp0UlFVTkZMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZsQlFWazdTVUZMZGtJN08wOUJSVWM3U1VGRFNDeFpRVUZaTEVsQlFWazdVVUZEZEVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEYWtJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEVWQlFVVXNRMEZCUXl4UlFVRlJPMGxCZFVSMFF6dFJRVU5GTEV0QlFVc3NSVUZCUlN4RFFVRkRPMUZCY0VSR0xHRkJRVkVzUjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhuUWtGQlZ5eEhRVUZaTEV0QlFVc3NRMEZCUXp0UlFVVnlReXcwUmtGQk5FWTdVVUZEYkVZc1QwRkJSU3hIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZSTDBJc1pVRkJWU3hIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4WFFVRk5MRWRCUVRaQ0xFbEJRVWtzUTBGQlF6dFJRVU40UXl4aFFVRlJMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dFJRVU0zUXl4dFEwRkJiVU03VVVGRE0wSXNZMEZCVXl4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGRkwwSXNaVUZCVlN4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeGhRVUZSTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCYTBKeVFpeHJRa0ZCWVN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVVM1FpeHJRa0ZCWVN4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVE5DTEdkQ1FVRlhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGUGVrSXNZVUZCVVN4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGTGNFTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEzQkRMRTlCUVU4c1EwRkJReXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYcENMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUzBGQlN5eERRVUZETzFGQlJURkNMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVRTdPRVJCUTI1Q0xFTkJRVU1zUTBGQlF6dFJRVU40UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVVc1EwRkJRVHRuUlVGRFlTeERRVUZETEVOQlFVTTdVVUZETVVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFTkJRVUU3WjBWQlExa3NRMEZCUXl4RFFVRkRPMUZCUlRGRUxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhWQ1FVRjFRaXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3hGTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVVMVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEcxQ1FVRnRRaXhGUVVGRkxGRkJRVkVzUlVGRGFFVXNSVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4eFFrRkJjVUlzUlVGQlJTeFJRVUZSTEVWQlEzQkZMRVZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZGQlFWRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRia1VzUTBGQlF6dEpRWEpEUkN3d1JFRkJNRVE3U1VGRE1VUXNTVUZCV1N4TlFVRk5PMUZCUTJoQ0xFOUJRVThzU1VGQlNTeERRVUZETEdGQlFXRXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRhRWNzUTBGQlF6dEpRVzlEWVN4SlFVRkpPenRaUVVOb1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1owSkJRM0JDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1owTkJRV2RETEVOQlFVTXNRMEZCUXp0blFrRkRhRVFzVDBGQlR6dGhRVU5TTzFsQlJVUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXh4UTBGQmNVTXNRMEZCUXp0WlFVVnlSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGNFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXp0WlFVVndReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlJXcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZhRVFzTmtOQlFUWkRPMWxCUXpkRExIbERRVUY1UXp0WlFVTjZReXd3UTBGQk1FTTdXVUZGTVVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZYTEVWQlFYVkVMRVZCUVVVN1owSkJRM1JHTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU03WjBKQlEyNUVMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSWFJETEVsQlFVa3NVVUZCVVN4TFFVRkxMRXRCUVVzc1EwRkJRenR2UWtGRGNrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUlRWQ0xFMUJRVTBzVDBGQlR5eEhRVUYxUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTTdjVUpCUXpORUxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1QwRkJUeXhMUVVGTExGTkJRVk03YjBKQlEzWkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVVMVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRha1FzUTBGQlF5eERRVUZETzFsQlIwWXNjVWRCUVhGSE8xbEJRM0pITEU5QlFVODdXVUZGVUN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRmhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJZU3hGUVVGRkxFVkJRVVU3WjBKQlEyeEhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRUdHZRa0ZEWkN4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRTlCUVU4c1JVRkJSVHR2UWtGRE4wUXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEZWtVc1QwRkJUeXhKUVVGSkxFdEJRVXNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWS0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRV0VzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZoTEVWQlFVVXNSVUZCUlR0blFrRkRiRWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETzI5Q1FVTXZRaXhQUVVGUE8yZENRVVZVTEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVdVc1EwRkJRenRuUWtGRE4wSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVVY0UlN4MVJFRkJkVVE3WjBKQlEzWkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzVDBGQlR5eEZRVUZGTzI5Q1FVTTNSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdDNRa0ZEY2tNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03ZDBKQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdkMEpCUTNwRkxFOUJRVThzU1VGQlNTeExRVUZMTEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2IwSkJRemRFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUzUml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzTWtOQlFUSkRPMWxCUlRORExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRjRUlzUTBGQlF6dExRVUZCTzBsQlJVOHNhVUpCUVdsQ0xFTkJRVU1zU1VGQlV6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeENMR2xFUVVGcFJEdFJRVU5xUkN4eFJrRkJjVVk3VVVGRGNrWXNhVVpCUVdsR08wbEJRMjVHTEVOQlFVTTdTVUZGUkR0UFFVTkhPMGxCUTBzc1dVRkJXVHRSUVVOc1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1dVRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRNMFlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRuUWtGRGNFUXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03WVVGRGFrVTdXVUZEUkN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3WjBKQlEyWXNUVUZCVFN4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZEZWtRc1RVRkJUU3hUUVVGVExFZEJRVmNzU1VGQlNTeERRVUZETEUxQlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WjBKQlF6TkVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlJYUkVMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJRenRuUWtGRGNrSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhGUVVGRkxFTkJRVU03WjBKQlEzaENMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNoQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRM1JDTEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZEUkN4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03U1VGRGFFSXNRMEZCUXp0SlFVVlBMR1ZCUVdVN1VVRkRja0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMWxCUTJRc1QwRkJUenRSUVVWVUxFbEJRVWtzVlVGQk9FSXNRMEZCUXp0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVWQlFVVTdXVUZEZUVJc1RVRkJUU3hQUVVGUExFZEJRV1VzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNRMEZCUXp0WlFVTjJSU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkROMElzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12Ump0aFFVRk5PMWxCUTB3c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMU5CUTNKRE8xRkJRMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NWVUZCVlN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVU5zUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWNlJDd3dSRUZCTUVRN1VVRkRNVVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVNM1JDeHJSRUZCYTBRN1VVRkRiRVFzU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4blFrRkJaMElzUTBGQlF5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42Uml4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJUVkVMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFbEJRVWtzU1VGQlNTeERRVUZETEdGQlFXRTdXVUZEYUVVc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVsQlFVa3NTVUZCU1N4RFFVRkRMR0ZCUVdFN1dVRkROVVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pGTEVOQlFVTTdTVUZGWlN4cFFrRkJhVUlzUTBGQlF5eFJRVUZ4UWp0UlFVTnlSQ3gzUlVGQmQwVTdVVUZEZUVVc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJSV3hETEZGQlFWRXNVVUZCVVN4RFFVRkRMRWxCUVVrc1JVRkJSVHRaUVVOMlFpeExRVUZMTEhWQ1FVRjFRanRuUWtGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVJc1RVRkJUVHRaUVVOU0xFdEJRVXNzYjBKQlFXOUNPMmRDUVVOMlFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1owSkJRM0JDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzJkQ1FVTndRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eHBRa0ZCYVVJN1owSkJRM0JDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRuUWtGRGNFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1pVRkJaVHRuUWtGRGJFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4WFFVRlhPMmRDUVVOa0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRmRCUVZjN1owSkJRMlFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1ZVRkJWVHRuUWtGRFlpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh0UWtGQmJVSTdaMEpCUTNSQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMSEZDUVVGeFFqdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NVMEZCVXp0blFrRkRXaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4cFFrRkJhVUk3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFRRVU5RTzBsQlEwZ3NRMEZCUXp0SlFVVnhRaXhsUVVGbE96czdPenRaUVVOdVF5eE5RVUZOTEZsQlFWa3NSMEZCVnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVNNVJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4clEwRkJhME1zV1VGQldTeFZRVUZWTEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhQUVVGTkxHVkJRV1VzV1VGQlJ6dFpRVVY0UWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03V1VGRmNFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTTNRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN2IwSkJRemRFTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenR2UWtGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8yZENRVU5vUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMHc3V1VGRlJDeE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRaUVVOc1FpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWeFFpeE5RVUZOT3pzN096dFpRVU14UWl4TlFVRk5MRmxCUVZrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZETTBRc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eG5Ra0ZCWjBJc1NVRkJTU3hEUVVGRExGRkJRVkVzYTBOQlFXdERMRmxCUVZrc1ZVRkJWU3hEUVVGRExFTkJRVU03V1VGRGNrY3NUMEZCVFN4TlFVRk5MRmxCUVVjN1dVRkZaaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRiRVFzU1VGQlNTeERRVUZETEVsQlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenRaUVVWMFFpeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVONlFpeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4NVFrRkJlVUlzUTBGQlF5eERRVUZETzFGQlEzaEZMRU5CUVVNN1MwRkJRVHRKUVVWVExHRkJRV0VzUTBGQlF5eGhRVUZoTEVkQlFVY3NSMEZCUnp0UlFVTjZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJN1dVRkROVUlzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVVUzUkN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlV5eFZRVUZWTzFGQlEyeENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVenRaUVVNdlJDeFBRVUZQTzFGQlJWUXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJSV2hDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzVDBGQlR5eEhRVUZYTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlEyeEVPMUZCUlVRc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZETTBRc01rZEJRVEpITzFGQlF6TkhMR2RFUVVGblJEdFJRVVZvUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0aFFVTnFRanRaUVVWRUxFMUJRVTBzU1VGQlNTeEhRVUZoTEVsQlFVa3NRMEZCUXl4UlFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVrTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3WjBKQlF6ZERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8yZENRVU42UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU03WjBKQlEzcEVMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTTdiMEpCUTJoQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdaMEpCUTNoRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRoUVVOdVFqdFRRVU5HTzFGQlJVUXNORUpCUVRSQ08xRkJRelZDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEhsRFFVRjVRenRaUVVWNlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYkVNc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWs3WjBKQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFRRVU4yUlR0UlFVTkVMRmxCUVZrN1VVRkZXaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE0wUXNiVVpCUVcxR08xRkJSVzVHTERCQ1FVRXdRanRSUVVNeFFpeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRaUVVNM1F5eE5RVUZOTEVsQlFVa3NSMEZCZVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkROMFVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hEUVVGRExFZEJRVmNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVm9ReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSE8yOUNRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dHhRa0ZETlVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVReXhQUVVGUExFTkJRVU1zUTBGQlF6dHhRa0ZEVGl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTlFMRzlDUVVGdlFqdHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1MwRkJTeXhOUVVGTkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVWQlFVVTdaMEpCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUYzUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRGhDUVVFNFFqdG5Ra0ZET1VJc1RVRkJUU3hEUVVGRExFZEJRVmNzVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8yZENRVVYwUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtZc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5TTzFOQlEwWTdVVUZEUkN4WlFVRlpPMGxCUTJRc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTXpReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMUZCUTJ4Q0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExGTkJRVk1zUjBGQlJ5eHhRMEZCY1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0blFrRkRlRVlzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU5zUXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzJGQlEzUkRPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRE4wUXNUMEZCVHp0UlFVVlVMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUenRSUVVWbUxFbEJRVWtzVFVGQlRUdFpRVU5TTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia0lzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1EwRkJReXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUlc1RExEQkRRVUV3UXp0UlFVTXhReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEZEVRc1QwRkJUenRSUVVWVUxEUkNRVUUwUWp0UlFVTTFRaXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRhRWNzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETzFGQlJUZEhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1IwRkJSeXhIUVVGcFFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJReTlETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNXVUZCV1N4RFFVTmFMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZEWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UkN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZDTzFGQlEwUXNLMEpCUVN0Q08xRkJSUzlDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM3BGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGRGJrSXNUVUZCVFN4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRiRVFzVFVGQlRTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenR2UWtGRmVFSXNUVUZCVFN4VFFVRlRMRWRCUVVjc2RVTkJRWFZETEVOQlFVTTdiMEpCUXpGRUxEQkVRVUV3UkR0dlFrRkRNVVFzVFVGQlRTeHhRa0ZCY1VJc1IwRkJSeXhKUVVGSkxFTkJRVU03YjBKQlEyNURMRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMjlDUVVWdVF5eERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN2IwSkJRMjVDTEVOQlFVTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRE8yOUNRVU0xUWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYUVJc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03YjBKQlEzcERMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlFTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zYlVOQlFVa3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdiMEpCUXpORUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRPMjlDUVVOeVFpeERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJRenR2UWtGRGJrSXNLME5CUVN0RE8yOUNRVU12UXl4TlFVRk5MRWRCUVVjc1IwRkJaMElzUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJRenR2UWtGRmJrUXNkVU5CUVhWRE8yOUNRVU4yUXl4NVJrRkJlVVk3YjBKQlJYcEdMRU5CUVVNc1EwRkJReXhaUVVGWkxFTkJRMW9zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXh4UWtGQmNVSXNSVUZETTBRc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRMnBDTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03YVVKQlEyNUVPMkZCUTBZN1UwRkRSanRKUVVOSUxFTkJRVU03U1VGRlR5eFJRVUZSTzFGQlEyUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1R0WlFVTTFRaXhQUVVGUE8xRkJSVlFzU1VGQlNTeExRVUZMTEVkQlFWY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzSkVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhoR0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhOUVVGTkxFMUJRVTBzUjBGQlZ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhOUVVGTkxFTkJRVU03V1VGRGRrUXNUVUZCVFN4TlFVRk5MRWRCUVZjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNKRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNFUXNTMEZCU3l4SFFVRkhMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGRFSXNUVUZCVFN4SFFVRkhMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU03V1VGRGVFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTnNSRHRSUVVWRUxFMUJRVTBzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFdEJRVXNzU1VGQlNTeERRVUZETzFGQlJYWkRMRzlHUVVGdlJqdFJRVU53Uml4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU55UkN4TlFVRk5MRmxCUVZrc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVTndSQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRM1JETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4WlFVRlpMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSVGRFTERaQ1FVRTJRanRSUVVNM1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1dVRkRha0lzYzBOQlFYTkRPMWxCUTNSRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1IwRkJSeXhMUVVGTExFbEJRVWtzUTBGQlF6dFpRVU0zUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJRenRaUVVOMlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVlVGQlZTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOb1JUdGhRVUZOTzFsQlEwd3NPRUpCUVRoQ08xbEJRemxDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzWkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dFpRVU0zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVGxETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdXVUZGY0VVc2NVSkJRWEZDTzFsQlEzSkNMRWxCUVVrc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4UlFVRlJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0blFrRkRhRU1zUzBGQlN5eExRVUZMTzI5Q1FVTlNMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEyeENMRTFCUVUwN1owSkJRMUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU51UlN4TlFVRk5PMmRDUVVOU0xFdEJRVXNzVVVGQlVUdHZRa0ZEV0N4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUXpkRUxFMUJRVTA3WVVGRFVEdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4aFFVRmhMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFpRVVUzUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNSVUZCUlR0blFrRkRia01zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5xUkR0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zV1VGQldTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRoUVVOc1JUdFRRVU5HTzFGQlJVUXNhVUpCUVdsQ08xRkJRMnBDTERaRVFVRTJSRHRSUVVNM1JDdzJSRUZCTmtRN1VVRkROMFFzTmtSQlFUWkVPMUZCUXpkRUxEWkVRVUUyUkR0UlFVTTNSQ3hYUVVGWE8xRkJRMWdzTWtSQlFUSkVPMUZCUXpORUxDdEVRVUVyUkR0SlFVTnFSU3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCYVVJc1JVRkJSU3haUVVGdlFpeERRVUZETzFGQlEyeEZMRWxCUVVrc1IwRkJSeXhIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZEYkVNc1VVRkJVU3hOUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1ZVRkJWU3hEUVVGRExIZENRVUYzUWp0blFrRkRkRU1zUjBGQlJ5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEY0VNc1RVRkJUVHRaUVVOU0xFdEJRVXNzVjBGQlZ5eERRVUZETEhkQ1FVRjNRanRuUWtGRGRrTXNSMEZCUnl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0blFrRkRka01zVFVGQlRUdFRRVU5RTzFGQlEwUXNUVUZCVFN4TFFVRkxMRWRCUVdkQ0xFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdVVUZGZUVZc1RVRkJUU3hyUWtGQmEwSXNSMEZCWjBNN1dVRkRkRVFzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0WlFVTXpSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFOQlEzaEZMRU5CUVVNN1VVRkRSaXhuUkVGQlowUTdVVUZEYUVRc1RVRkJUU3h4UWtGQmNVSXNSMEZCWVN4clFrRkJhMEk3WVVGRGRrUXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWs3V1VGRFppeEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSVzVGTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZGYWtNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRV2xDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVGelFqdFJRVU14UlN4TlFVRk5MRWxCUVVrc1IwRkJORUlzUlVGQlJTeERRVUZETzFGQlEzcERMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU4wUWl4SlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmRrSXNTMEZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTzFsQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxGZEJRVmNzU1VGQlNTeEpRVUZKTzJkQ1FVTnlRaXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0cFFrRkRka0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjN1owSkJRMnhETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkZja0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1JVRkJSVHRuUWtGRE0wSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3YjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdkMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yRkJRMFk3VTBGRFJqdFJRVU5FTEU5QlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFZRVUZWTEVWQlFVTXNRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVTBzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFbEJRV3RDTEVWQlFVVXNVVUZCY1VJc1JVRkJSU3haUVVGdlFpeEhRVUZITzFGQlEzQkhMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGZGtJc1RVRkJUU3hMUVVGTExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF6TkNMRTFCUVUwc1UwRkJVeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU12UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdFpRVU53UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzcERPMUZCUTBRc01FWkJRVEJHTzFGQlF6RkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFbEJRVWtzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzVTBGQlV5eEhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEUxQlFVMHNSMEZCUnl4SFFVRlhMR2RDUVVGblFpeERRVUZETEV0QlFVc3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42Unl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlJDd3JSRUZCSzBRN1NVRkRMMFFzZVVaQlFYbEdPMGxCUTNwR0xIRkRRVUZ4UXp0SlFVTnlReXhuUlVGQlowVTdTVUZEYUVVc1RVRkJUVHRKUVVOT0xHOUZRVUZ2UlR0SlFVTndSU3huUmtGQlowWTdTVUZEYUVZc2RVSkJRWFZDTzBsQlEzWkNMRFpEUVVFMlF6dEpRVU0zUXl3clJFRkJLMFE3U1VGREwwUXNhVVZCUVdsRk8wbEJRMnBGTEhGQ1FVRnhRanRKUVVOeVFpeHBRa0ZCYVVJN1NVRkRha0lzVlVGQlZUdEpRVU5XTEZGQlFWRTdTVUZEVWl4TlFVRk5PMGxCUTA0c1owSkJRV2RDTzBsQlEyaENMRWxCUVVrN1NVRkZSeXhOUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVWQlFXZENPenRSUVVNeFF5eE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRM3BGTEVsQlFVa3NUVUZCVFN4SFFVRnhRaXhOUVVGQkxHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVONlJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkRlRU1zVDBGQlR5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU55UkN4RFFVRkRMRU5CUVVNc2JVTkJRVWtzU1VGQlNTeERRVUZETzFGQlExZ3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hqUVVGakxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTTdXVUZEZEVNc1RVRkJUU3hIUVVGSExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNRaXhQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCU1VRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhIUVVGUk8xRkJRM0JETEUxQlFVMHNSMEZCUnl4SFFVRmhMRVZCUVVVc1EwRkJiVUlzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdZVUZEYmtZc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQmIwSXNSVUZCUlN4RlFVRkZPMWxCUXpWQ0xFbEJRVWtzU1VGQldTeERRVUZETzFsQlEycENMRTFCUVUwc1EwRkJReXhIUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjRRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVOb1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJWU3hGUVVGRk8yOUNRVU16UWl4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRPVUk3Y1VKQlFVMDdiMEpCUTB3c1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dHZRa0ZEVml4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdhVUpCUXk5RU8yRkJRMFk3YVVKQlFVMDdaMEpCUTB3c1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU5XTzFsQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1VVRkRaQ3hEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0UlFVVm1MRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVTFOTEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1IwRkJVVHRSUVVOdVF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRE4wSXNUVUZCVFN4RlFVRkZMRWRCUVRKQ0xFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzWkZMRTFCUVUwc1MwRkJTeXhIUVVGclFpeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMR05CUVdNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUlc1R0xFMUJRVTBzWVVGQllTeEhRVUZITEVOQlFVTXNSVUZCVlN4RlFVRlZMRVZCUVVVN1dVRkRNME1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMmhETEUxQlFVMHNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUTNoRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRk8yZENRVU0xUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU5vUWp0cFFrRkJUVHRuUWtGRFRDeFBRVUZQTEVWQlFVVXNRMEZCUXp0aFFVTllPMUZCUTBnc1EwRkJReXhEUVVGRE8xRkJSVVlzVFVGQlRTeE5RVUZOTEVkQlFXRXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03VVVGRGRrUXNUVUZCVFN4VFFVRlRMRWRCUVdFc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hQUVVGUExGTkJRVk1zUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZOQlFXbENPMUZCUTNSRUxFOUJRVThzUTBGQlF5eEhRVUZYTEVWQlFVVXNSVUZCUlR0WlFVTnlRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVPenM3TzA5QlNVYzdTVUZEU1N4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hKUVVGSkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRM3BETEU5QlFVOHNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJRenRoUVVNMVFpeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyeEVMRTlCUVU4c1QwRkJUeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8yRkJRMmhFTEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZETjBNc1QwRkJUeXhQUVVGUExFTkJRVU1zWTBGQll5eERRVUZET3p0WlFVVTVRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEc5Q1FVRnZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXcEVMREJDUVVFd1FqdEpRVU0xUWl4RFFVRkRPMGxCUlUwc1RVRkJUU3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWRCUVdNN1VVRkRMME1zU1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllUdFpRVU14UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEWkNRVUUyUWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGYkVZc1RVRkJUU3hMUVVGTExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEzaERMRTFCUVUwc1UwRkJVeXhIUVVGSExFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRNVU1zVDBGQlR5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dEpRVU12UXl4RFFVRkRPMGxCV1VRN1QwRkRSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCVVR0UlFVTnNReXhOUVVGTkxFMUJRVTBzUjBGQlZ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0VFFVTm1PMkZCUVUwN1dVRkRUQ3hOUVVGTkxFdEJRVXNzUjBGQllTeEZRVUZGTEVOQlFXMUNMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdhVUpCUXpkR0xFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFXOUNMRVZCUVVVc1JVRkJSVHRuUWtGRE5VSXNUVUZCVFN4SlFVRkpMRWRCUVZjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTXpRaXhQUVVGUExFbEJRVWtzUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xbEJSV1lzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRuUWtGRGNrSXNUMEZCVHl4SFFVRkhMRU5CUVVNN1lVRkRXanRwUWtGQlRUdG5Ra0ZEVEN4TlFVRk5MRXRCUVVzc1IwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXk5Q0xFMUJRVTBzVFVGQlRTeEhRVUZYTEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03WjBKQlEzQkdMRTlCUVU4c1RVRkJUU3hEUVVGRE8yRkJRMlk3VTBGRFJqdEpRVU5JTEVOQlFVTTdPMEZCTDNkQ1lTeHRRa0ZCVnl4SFFVRkhMR0ZCUVdFc1EwRkJRenRCUVVNelFpeHRRa0ZCVnl4SFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJkWEJDZWtJc2FVSkJRVk1zUjBGQlJ5eHhRa0ZCY1VJc1EwRkJRenRCUVRKQ2JFTXNZMEZCVFN4SFFVRkhMR2xEUVVGcFF5eERRVUZETzBGQlF6TkRMSE5DUVVGakxFZEJRVWNzWjBKQlFXZENMRU5CUVVNN1FVRkRiRU1zYVVKQlFWTXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dEJRVEpFTlVNc09FWkJRVGhHTzBGQlF5OUZMR3RDUVVGVkxFZEJRU3RDTzBsQlEzUkVMRk5CUVZNc1JVRkJSU3hIUVVGSE8wbEJRMlFzVDBGQlR5eEZRVUZGTEVkQlFVYzdTVUZEV2l4UFFVRlBMRVZCUVVVc1IwRkJSenRKUVVOYUxFOUJRVThzUlVGQlJTeEhRVUZITzBOQlEySXNRMEZCUXp0QlFVVmhMSGxDUVVGcFFpeEhRVUZITEZGQlFWRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtbHRjRzl5ZENCM2RTQm1jbTl0SUNkM2RTYzdYRzVwYlhCdmNuUWdLaUJoY3lCeWVHcHpJR1p5YjIwZ0ozSjRhbk1uTzF4dVhHNXBiWEJ2Y25RZ2UxWmxZM1J2Y24wZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdDJaV04wYjNKTVpXNW5kR2dzSUhabFkzUnZja1J2ZEZCeWIyUjFZM1I5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1FXMXBibTloWTJsa2N5d2dRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTloYldsdWIyRmphV1J6Snp0Y2JtbHRjRzl5ZENCN1RuVmpiR1Z2ZEdsa1pYTXNJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE45SUdaeWIyMGdKeTR1TDI1MVkyeGxiM1JwWkdWekp6dGNibWx0Y0c5eWRDQjdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVXNJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjMzBnWm5KdmJTQW5MaTR2ZFc1cmJtOTNiaWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdWOUlHWnliMjBnSnk0dUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1cGJYQnZjblFnZTFOMVluTmpjbWx3ZEdsdmJuMGdabkp2YlNBbmNuaHFjeWM3WEc1Y2JtUmxZMnhoY21VZ2JXOWtkV3hsSUNka1lYUmhaM0p2YXkxaGNHa3ZjM0pqTDJkeWFXUW5JSHRjYmlBZ2FXNTBaWEptWVdObElGSmxZM1FnZTF4dUlDQWdJR052Ym5SaGFXNXpLSGc2SUc1MWJXSmxjaXdnZVRvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmp0Y2JpQWdmVnh1ZlZ4dVhHNWtaV05zWVhKbElHZHNiMkpoYkNCN1hHNGdJR2x1ZEdWeVptRmpaU0JJVkUxTVEyRnVkbUZ6Uld4bGJXVnVkQ0I3WEc0Z0lDQWdaMlYwUTNWeWMyOXlVRzl6YVhScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBPaUJFUnk1UWIybHVkRHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQk5iMjV2YldWeVJuSmxjWE1nUFNCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSWdmVHRjYm1WNGNHOXlkQ0IwZVhCbElGTmxjVU52YkZOMFlYUnpJRDBnZXlCbWNtVnhPaUJOYjI1dmJXVnlSbkpsY1hNc0lITmhiV1ZNWlc1bmRHZzZJR0p2YjJ4bFlXNGdmVnh1Wlhod2IzSjBJSFI1Y0dVZ1UzQnNhWFIwWlhKR2RXNWpJRDBnS0hObGNUb2djM1J5YVc1bktTQTlQaUJ6ZEhKcGJtZGJYVHRjYmx4dVNGUk5URU5oYm5aaGMwVnNaVzFsYm5RdWNISnZkRzkwZVhCbExtZGxkRU4xY25OdmNsQnZjMmwwYVc5dUlEMGdablZ1WTNScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBPaUJFUnk1UWIybHVkQ0I3WEc0Z0lHTnZibk4wSUhKbFkzUWdQU0IwYUdsekxtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwTzF4dUlDQnlaWFIxY200Z2JtVjNJRVJITGxCdmFXNTBLR1YyWlc1MExtTnNhV1Z1ZEZnZ0xTQnlaV04wTG14bFpuUXNJR1YyWlc1MExtTnNhV1Z1ZEZrZ0xTQnlaV04wTG5SdmNDazdYRzU5TzF4dVhHNUVSeTVTWldOMExuQnliM1J2ZEhsd1pTNWpiMjUwWVdsdWN5QTlJR1oxYm1OMGFXOXVLSGc2SUc1MWJXSmxjaXdnZVRvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmlCN1hHNGdJSEpsZEhWeWJpQjBhR2x6TG14bFpuUWdQRDBnZUNBbUppQjRJRHc5SUhSb2FYTXVjbWxuYUhRZ0ppWWdkR2hwY3k1MGIzQWdQRDBnZVNBbUppQjVJRHc5SUhSb2FYTXVZbTkwZEc5dE8xeHVmVHRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRkJ2YzJsMGFXOXVUVzl1YjIxbGNrbHVabThnZTF4dUlDQXZLaW9nVTJWeGRXVnVZMlZ6SUdOdmRXNTBJSGRwZEdnZ2JXOXViMjFsY2lCcGJpQndiM05wZEdsdmJseHVJQ0FnS2k5Y2JpQWdZMjkxYm5RNklHNTFiV0psY2p0Y2JseHVJQ0F2S2lvZ1VtVnRaVzFpWlhJZ2MyTnlaV1Z1SUdOdmIzSmtjeUJ5WldOMFhHNGdJQ0FxTDF4dUlDQmliM1Z1WkhNNklFUkhMbEpsWTNRN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2RHaHBjeTVqYjNWdWRDQTlJREE3WEc0Z0lDQWdkR2hwY3k1aWIzVnVaSE1nUFNCdVpYY2dSRWN1VW1WamRDZ3dMQ0F3TENBd0xDQXdLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdVRzl6YVhScGIyNUpibVp2SUh0Y2JpQWdjSFZpYkdsaklISmxZV1J2Ym14NUlHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1puSmxjVG9nZXlCYmJUb2djM1J5YVc1blhUb2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI5TzF4dUlDQnliM2REYjNWdWREb2diblZ0WW1WeU8xeHVYRzRnSUM4cUtpQm1jbVZ4SUQwZ2UzMHNJSEp2ZDBOdmRXNTBJRDBnTUZ4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdibUZ0WlNCT1lXMWxJRzltSUhCdmMybDBhVzl1SUNnbk1URXhRU2NzSUNjeE1URXVNU2NzSUdWMFl5bGNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0c1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11Ym1GdFpTQTlJRzVoYldVN1hHNGdJQ0FnZEdocGN5NW1jbVZ4SUQwZ2UzMDdYRzRnSUNBZ2RHaHBjeTV5YjNkRGIzVnVkQ0E5SURBN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZkbFlreHZaMjhnWlhoMFpXNWtjeUJFUnk1S2MxWnBaWGRsY2lCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVnphV1IxWlhOVFpYUWdQU0FuYm5WamJHVnZkR2xrWlhNbk8xeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QjJhV1YzWlhKRGIzVnVkRG9nYm5WdFltVnlJRDBnTFRFN1hHNWNiaUFnY0hKcGRtRjBaU0IyYVdWM1pYSkpaRG9nYm5WdFltVnlJRDBnTFRFN1hHNGdJSEJ5YVhaaGRHVWdhVzVwZEdsaGJHbDZaV1E2SUdKdmIyeGxZVzRnUFNCbVlXeHpaVHRjYmx4dUlDQXZMeUJ3Y21sMllYUmxJSEpsWVdSdmJteDVJR052Ykc5eVUyTm9aVzFsT2lCRGIyeHZjbE5qYUdWdFpTQTlJRU52Ykc5eVUyTm9aVzFsYzF0T2RXTnNaVzkwYVdSbGMxZGxZa3h2WjI4dWNtVnphV1IxWlhOVFpYUmRPMXh1SUNCd2NtOTBaV04wWldRZ1kzQTZJRk5sY1ZCaGJHVjBkR1VnZkNCdWRXeHNJRDBnYm5Wc2JEdGNibHh1SUNCd2NtbDJZWFJsSUdodmMzUS9PaUJJVkUxTVJHbDJSV3hsYldWdWREdGNiaUFnY0hKcGRtRjBaU0J0YzJkSWIzTjBQem9nU0ZSTlRFVnNaVzFsYm5RN1hHNGdJSEJ5YVhaaGRHVWdZMkZ1ZG1GelB6b2dTRlJOVEVOaGJuWmhjMFZzWlcxbGJuUTdYRzRnSUhCeWFYWmhkR1VnYzJ4cFpHVnlQem9nUkVjdVVtRnVaMlZUYkdsa1pYSTdYRzRnSUhCeWFYWmhkR1VnZEdWNGRFSmhjMlZzYVc1bE9pQkRZVzUyWVhOVVpYaDBRbUZ6Wld4cGJtVTdYRzVjYmlBZ2NISnBkbUYwWlNCaGVHbHpTR1ZwWjJoME9pQnVkVzFpWlhJZ1BTQXhNanRjYmx4dUlDQndjbWwyWVhSbElITmxjVU52YkRvZ1JFY3VRMjlzZFcxdVBITjBjbWx1Wno0Z2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmlBZ2NISnBkbUYwWlNCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQzh2SUhCeWFYWmhkR1VnYldGNFRHVnVaM1JvT2lCdWRXMWlaWElnUFNBeE1EQTdYRzRnSUhCeWFYWmhkR1VnY0c5emFYUnBiMjV6T2lCUWIzTnBkR2x2YmtsdVptOWJYU0E5SUZ0ZE8xeHVYRzRnSUhCeWFYWmhkR1VnY205M2MwMWhjMnRsWkRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnY0hKcGRtRjBaU0J5YjNkelRuVnNiRG9nYm5WdFltVnlJRDBnTUR0Y2JseHVJQ0F2THlCV2FXVjNaWEluY3lCd2NtOXdaWEowYVdWeklDaHNhV3RsYkhrZ2RHaGxlU0J6YUc5MWJHUWdZbVVnY0hWaWJHbGpJSE52SUhSb1lYUWdkR2hsZVNCallXNGdZbVVnYzJWMElHOTFkSE5wWkdVcFhHNGdJSEJ5YVhaaGRHVWdYM0J2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklIQnZjMmwwYVc5dVYybGtkR2c2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUcxcGJraGxhV2RvZERvZ2JuVnRZbVZ5TzF4dUlDQndkV0pzYVdNZ2JXRjRTR1ZwWjJoME9pQnVkVzFpWlhJN1hHNGdJSEIxWW14cFl5QmpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE02SUdKdmIyeGxZVzQ3WEc0Z0lIQjFZbXhwWXlCelpYRjFaVzVqWlVOdmJIVnRiazVoYldVNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCemRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdWdVpGQnZjMmwwYVc5dVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJR1pwZUZkcFpIUm9PaUJpYjI5c1pXRnVPMXh1SUNCd2RXSnNhV01nZG1WeWRHbGpZV3hCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUI4SUc1MWJHdzdYRzRnSUhCMVlteHBZeUJvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwT2lCemRISnBibWNnZkNCdWRXeHNPMXh1SUNCd2RXSnNhV01nWm1sMFFYSmxZVG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOb2NtbHVhMFZ0Y0hSNVZHRnBiRG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOcmFYQkZiWEIwZVZCdmMybDBhVzl1Y3pvZ1ltOXZiR1ZoYmp0Y2JseHVJQ0J3Y21sMllYUmxJSEJ2YzJsMGFXOXVUbUZ0WlhNNklITjBjbWx1WjF0ZElEMGdXMTA3WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0Z5ZEZCdmMybDBhVzl1T2lCdWRXMWlaWElnUFNBdE1UdGNibHh1SUNCd2NtbDJZWFJsSUdWdVpGQnZjMmwwYVc5dU9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQXZLaW9nUm05eUlITjBZWEowVUc5emFYUnBiMjRnWlhGMVlXeHpJSFJ2SUdWdVpGQnZjMmwwYVc5dUlFeGxibWQwYUNCcGN5QXhJQ292WEc0Z0lIQnlhWFpoZEdVZ1oyVjBJRXhsYm1kMGFDZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z1BEMGdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQS9JSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdMU0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lBeElEb2dNRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnZG1sbGQxTjFZbk02SUZOMVluTmpjbWx3ZEdsdmJsdGRJRDBnVzEwN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkbWxsZDJWeVNXUWdQU0JYWldKTWIyZHZMblpwWlhkbGNrTnZkVzUwTzF4dUlDQWdJRmRsWWt4dloyOHVkbWxsZDJWeVEyOTFiblFnS3owZ01UdGNibHh1SUNBZ0lIUm9hWE11ZEdWNGRFSmhjMlZzYVc1bElEMGdKM1J2Y0NjN1hHNWNiaUFnSUNCMGFHbHpMbDl3YjNOcGRHbHZibGRwWkhSb0lEMGdkR2hwY3k1d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NW1iRzloZENnbmNHOXphWFJwYjI1WGFXUjBhQ2NzSURFMkx5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBMExDQnRZWGc2SURZMExDQndiM04wWm1sNE9pQW5jSGduZlNvdktUdGNiaUFnSUNCMGFHbHpMbTFwYmtobGFXZG9kQ0E5SUhSb2FYTXVabXh2WVhRb0oyMXBia2hsYVdkb2RDY3NJRFV3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUF5TlRBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVJQ0FnSUhSb2FYTXViV0Y0U0dWcFoyaDBJRDBnZEdocGN5NW1iRzloZENnbmJXRjRTR1ZwWjJoMEp5d2dNVEF3THlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUF5TlN3Z2JXRjRPaUExTURBc0lIQnZjM1JtYVhnNklDZHdlQ2Q5S2k4cE8xeHVYRzRnSUNBZ2RHaHBjeTVqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNZ1BTQjBhR2x6TG1KdmIyd29KMk52Ym5OcFpHVnlUblZzYkZObGNYVmxibU5sY3ljc0lHWmhiSE5sS1R0Y2JpQWdJQ0IwYUdsekxuTmxjWFZsYm1ObFEyOXNkVzF1VG1GdFpTQTlJSFJvYVhNdWMzUnlhVzVuS0NkelpYRjFaVzVqWlVOdmJIVnRiazVoYldVbkxDQnVkV3hzS1R0Y2JseHVJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2Yms1aGJXVWdQU0IwYUdsekxuTjBjbWx1WnlnbmMzUmhjblJRYjNOcGRHbHZiazVoYldVbkxDQnVkV3hzS1R0Y2JpQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2RsYm1SUWIzTnBkR2x2Yms1aGJXVW5MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lIUm9hWE11Wm1sNFYybGtkR2dnUFNCMGFHbHpMbUp2YjJ3b0oyWnBlRmRwWkhSb0p5d2dabUZzYzJVcE8xeHVYRzRnSUNBZ2RHaHBjeTUyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ0E5SUhSb2FYTXVjM1J5YVc1bktDZDJaWEowYVdOaGJFRnNhV2R1YldWdWRDY3NJQ2R0YVdSa2JHVW5MRnh1SUNBZ0lDQWdlMk5vYjJsalpYTTZJRnNuZEc5d0p5d2dKMjFwWkdSc1pTY3NJQ2RpYjNSMGIyMG5YWDBwTzF4dUlDQWdJSFJvYVhNdWFHOXlhWHB2Ym5SaGJFRnNhV2R1YldWdWRDQTlJSFJvYVhNdWMzUnlhVzVuS0Nkb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEp5d2dKMk5sYm5SbGNpY3NYRzRnSUNBZ0lDQjdZMmh2YVdObGN6b2dXeWRzWldaMEp5d2dKMk5sYm5SbGNpY3NJQ2R5YVdkb2RDZGRmU2s3WEc0Z0lDQWdkR2hwY3k1bWFYUkJjbVZoSUQwZ2RHaHBjeTVpYjI5c0tDZG1hWFJCY21WaEp5d2dkSEoxWlNrN1hHNGdJQ0FnZEdocGN5NXphSEpwYm10RmJYQjBlVlJoYVd3Z1BTQjBhR2x6TG1KdmIyd29KM05vY21sdWEwVnRjSFI1VkdGcGJDY3NJSFJ5ZFdVcE8xeHVJQ0FnSUhSb2FYTXVjMnRwY0VWdGNIUjVVRzl6YVhScGIyNXpJRDBnZEdocGN5NWliMjlzS0NkemEybHdSVzF3ZEhsUWIzTnBkR2x2Ym5NbkxDQm1ZV3h6WlNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHRnplVzVqSUdsdWFYUW9LVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWFXNXBkR2xoYkdsNlpXUXBJSHRjYmlBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb0oxZGxZa3h2WjI4Z2MyVmpiMjVrSUdsdWFYUnBZV3hwZW1GMGFXOXVJU2NwTzF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WldRZ1BTQjBjblZsTzF4dUlDQWdJSFJvYVhNdWFHVnNjRlZ5YkNBOUlDY3ZhR1ZzY0M5MmFYTjFZV3hwZW1VdmRtbGxkMlZ5Y3k5M1pXSXRiRzluYnk1dFpDYzdYRzVjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1FnUFNCMWFTNWthWFlvSjA1dklHMWxjM05oWjJVbktUdGNiaUFnSUNCMGFHbHpMbTF6WjBodmMzUXVjM1I1YkdVdVpHbHpjR3hoZVNBOUlDZHViMjVsSnp0Y2JseHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GeklEMGdkV2t1WTJGdWRtRnpLQ2s3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YzNSNWJHVXVkMmxrZEdnZ1BTQW5NVEF3SlNjN1hHNWNiaUFnSUNCMGFHbHpMbWh2YzNRZ1BTQjFhUzVrYVhZb1czUm9hWE11YlhOblNHOXpkQ3dnZEdocGN5NWpZVzUyWVhOZEtUdGNibHh1SUNBZ0lDOHZJSFJvYVhNdWMyeHBaR1Z5SUQwZ2RXa3VjbUZ1WjJWVGJHbGtaWElvTUN3Z01qQXNJRElzSURVcE8xeHVJQ0FnSUM4dklIUm9hWE11YzJ4cFpHVnlMbkp2YjNRdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzRnSUNBZ0x5OGdkR2hwY3k1emJHbGtaWEl1Y205dmRDNXpkSGxzWlM1b1pXbG5hSFFnUFNBbk1USndlQ2M3WEc1Y2JpQWdJQ0JqYjI1emRDQm5aWFJOYjI1dmJXVnlJRDBnS0hBNklFUkhMbEJ2YVc1MEtUb2dXMjUxYldKbGNpd2djM1J5YVc1bklId2diblZzYkN3Z1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjhJRzUxYkd4ZElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHcFFiM01nUFNCTllYUm9MbVpzYjI5eUtIQXVlQ0F2SUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdncE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY0c5emFYUnBiMjRnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhUdGNibHh1SUNBZ0lDQWdhV1lnS0hCdmMybDBhVzl1SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYmFsQnZjeXdnYm5Wc2JDd2diblZzYkYwN1hHNWNiaUFnSUNBZ0lHTnZibk4wSUcxdmJtOXRaWEk2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNBOUlFOWlhbVZqZEM1clpYbHpLSEJ2YzJsMGFXOXVMbVp5WlhFcFhHNGdJQ0FnSUNBZ0lDNW1hVzVrS0NodEtTQTlQaUJ3YjNOcGRHbHZiaTVtY21WeFcyMWRMbUp2ZFc1a2N5NWpiMjUwWVdsdWN5aHdMbmdzSUhBdWVTa3BPMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWElnUFQwOUlIVnVaR1ZtYVc1bFpDbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdWRXeHNMQ0J1ZFd4c1hUdGNibHh1SUNBZ0lDQWdjbVYwZFhKdUlGdHFVRzl6TENCdGIyNXZiV1Z5TENCd2IzTnBkR2x2Ymk1bWNtVnhXMjF2Ym05dFpYSmRYVHRjYmlBZ0lDQjlPMXh1WEc1Y2JpQWdJQ0F2THlCMGFHbHpMbk4xWW5NdWNIVnphQ2h5ZUdwekxtWnliMjFGZG1WdWREeE5iM1Z6WlVWMlpXNTBQaWgwYUdsekxtTmhiblpoY3l3Z0oyMXZkWE5sYjNabGNpY3BMbk4xWW5OamNtbGlaU2dvWlRvZ1RXOTFjMlZGZG1WdWRDa2dQVDRnZTF4dUlDQWdJQzh2SUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaHllR3B6TG1aeWIyMUZkbVZ1ZER4TmIzVnpaVVYyWlc1MFBpaDBhR2x6TG1OaGJuWmhjeXdnSjIxdmRYTmxiVzkyWlNjcExuTjFZbk5qY21saVpTZ29aVG9nVFc5MWMyVkZkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5bGNiaUFnSUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ0lDQmpiMjV6ZENCaGNtZHpJRDBnWlNCaGN5Qk5iM1Z6WlVWMlpXNTBPMXh1SUNBZ0lDQWdZMjl1YzNRZ1cycFFiM01zSUcxdmJtOXRaWEpkSUQwZ1oyVjBUVzl1YjIxbGNpaDBhR2x6TG1OaGJuWmhjeTVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaWhoY21kektTazdYRzVjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FtSmlCMGFHbHpMbk5sY1VOdmJDQW1KaUIwYUdsekxuTndiR2wwZEdWeUlDWW1JRzF2Ym05dFpYSXBJSHRjYmlBZ0lDQWdJQ0FnZFdrdWRHOXZiSFJwY0M1emFHOTNVbTkzUjNKdmRYQW9kR2hwY3k1a1lYUmhSbkpoYldVc0lDaHBVbTkzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4SUQwZ2RHaHBjeTV6WlhGRGIyd2hMbWRsZENocFVtOTNLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J6WlhGTklEMGdjMlZ4SUQ4Z2RHaHBjeTV6Y0d4cGRIUmxjaUVvYzJWeEtWdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlITmxjVTBnUFQwOUlHMXZibTl0WlhJZ0ppWWdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ2ZTd2dZWEpuY3k1NElDc2dNVFlzSUdGeVozTXVlU0FySURFMktUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIVnBMblJ2YjJ4MGFYQXVhR2xrWlNncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaHllR3B6TG1aeWIyMUZkbVZ1ZER4TmIzVnpaVVYyWlc1MFBpaDBhR2x6TG1OaGJuWmhjeXdnSjIxdmRYTmxaRzkzYmljcExuTjFZbk5qY21saVpTZ29aVG9nVFc5MWMyVkZkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5QjhmQ0JsTG1KMWRIUnZiaUFoUFNBd0tWeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNWNiaUFnSUNBZ0lHTnZibk4wSUdGeVozTWdQU0JsSUdGeklFMXZkWE5sUlhabGJuUTdYRzRnSUNBZ0lDQmpiMjV6ZENCYmFsQnZjeXdnYlc5dWIyMWxjbDBnUFNCblpYUk5iMjV2YldWeUtIUm9hWE11WTJGdWRtRnpMbWRsZEVOMWNuTnZjbEJ2YzJsMGFXOXVLR0Z5WjNNcEtUdGNibHh1SUNBZ0lDQWdMeThnY0hKbGRtVnVkSE1nWkdWelpXeGxZM1FnWVd4c0lISnZkM01nYVdZZ2QyVWdiV2x6Y3lCdGIyNXZiV1Z5SUdKdmRXNWtjMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaR0YwWVVaeVlXMWxJQ1ltSUhSb2FYTXVjMlZ4UTI5c0lDWW1JSFJvYVhNdWMzQnNhWFIwWlhJZ0ppWWdiVzl1YjIxbGNpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVhVzVwZENnb2FWSnZkeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4VFNBOUlITmxjU0EvSUhSb2FYTXVjM0JzYVhSMFpYSWhLSE5sY1NsYmRHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlDc2dhbEJ2YzEwZ09pQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpYRk5JRDA5UFNCdGIyNXZiV1Z5SUNZbUlIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTVuWlhRb2FWSnZkeWs3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaDFhUzV2YmxOcGVtVkRhR0Z1WjJWa0tIUm9hWE11Y205dmRDa3VjM1ZpYzJOeWFXSmxLSFJvYVhNdWNtOXZkRTl1VTJsNlpVTm9ZVzVuWldRdVltbHVaQ2gwYUdsektTa3BPMXh1WEc0Z0lDQWdkR2hwY3k1eWIyOTBMbUZ3Y0dWdVpDaDBhR2x6TG1odmMzUXBPMXh1SUNBZ0lDOHZJSFJvYVhNdWNtOXZkQzVoY0hCbGJtUkRhR2xzWkNoMGFHbHpMbk5zYVdSbGNpNXliMjkwS1R0Y2JseHVJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCeWIyOTBUMjVUYVhwbFEyaGhibWRsWkNoaGNtZHpPaUJoYm5rcElIdGNiaUFnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JseHVJQ0FnSUM4dklHTnZibk52YkdVdVpHVmlkV2NvWUZkbFlreHZaMjh1YjI1U2IyOTBVMmw2WlVOb1lXNW5aV1FvS1NCZ0lDdGNiaUFnSUNBdkx5QWdJR0J5YjI5MExuZHBaSFJvUFNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEZkcFpIUm9mU3dnY205dmRDNW9aV2xuYUhROUpIdDBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwZlN3Z1lDQXJYRzRnSUNBZ0x5OGdJQ0JnWTJGdWRtRnpMbmRwWkhSb1BTUjdkR2hwY3k1allXNTJZWE11ZDJsa2RHaDlMQ0JqWVc1MllYTXVhR1ZwWjJoMFBTUjdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBmU0F1WUNrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUVhOemFXZHVjeUI3UUd4cGJtc2djMlZ4UTI5c2ZTQmhibVFnZTBCc2FXNXJJR053ZlNCaVlYTmxaQ0J2YmlCN1FHeHBibXNnYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsZlNCaGJtUWdZMkZzYkhNZ2UwQnNhVzVySUhKbGJtUmxjbjBvS1M1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2RYQmtZWFJsVTJWeFEyOXNLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZHY21GdFpTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU0EvSUhSb2FYTXVaR0YwWVVaeVlXMWxMbU52YkNoMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU2tnT2lCdWRXeHNPMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlZ4UTI5c0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCWFpXSk1iMmR2TG5CcFkydFZjRk5sY1VOdmJESW9kR2hwY3k1a1lYUmhSbkpoYldVcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGNYVmxibU5sUTI5c2RXMXVUbUZ0WlNBOUlIUm9hWE11YzJWeFEyOXNJRDhnZEdocGN5NXpaWEZEYjJ3dWJtRnRaU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXpaWEZEYjJ3cElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE02SUhOMGNtbHVaeUE5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeWs3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5JRDBnZEdocGN5NXpaWEZEYjJ3aExtZGxkRlJoWnlnbmMyVndZWEpoZEc5eUp5azdYRzRnSUNBZ0lDQWdJSFJvYVhNdWMzQnNhWFIwWlhJZ1BTQlhaV0pNYjJkdkxtZGxkRk53YkdsMGRHVnlLSFZ1YVhSekxDQnpaWEJoY21GMGIzSXBPMXh1WEc0Z0lDQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFVHOXphWFJwYjI1ektDazdYRzRnSUNBZ0lDQWdJSFJvYVhNdVkzQWdQU0JYWldKTWIyZHZMbkJwWTJ0VmNGQmhiR1YwZEdVb2RHaHBjeTV6WlhGRGIyd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1emNHeHBkSFJsY2lBOUlHNTFiR3c3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBOUlGdGRPMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnUFNBdE1UdGNiaUFnSUNBZ0lDQWdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQTlJQzB4TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbU53SUQwZ2JuVnNiRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9LVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXpaWEZEYjJ3cFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0JzWlhRZ1kyRjBaV2R2Y21sbGN6b2dLSE4wY21sdVp5QjhJRzUxYkd3cElGdGRPMXh1SUNBZ0lHbG1JQ2gwYUdsekxuTm9jbWx1YTBWdGNIUjVWR0ZwYkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVc1a2FXTmxjem9nU1c1ME16SkJjbkpoZVNBOUlIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTVuWlhSVFpXeGxZM1JsWkVsdVpHVjRaWE1vS1R0Y2JpQWdJQ0FnSUdOaGRHVm5iM0pwWlhNZ1BTQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9YRzRnSUNBZ0lDQWdJRUZ5Y21GNUxtWnliMjBvUVhKeVlYa29hVzVrYVdObGN5NXNaVzVuZEdncExtdGxlWE1vS1NrdWJXRndLQ2hwT2lCdWRXMWlaWElwSUQwK0lIUm9hWE11YzJWeFEyOXNJUzVuWlhRb2FXNWthV05sYzF0cFhTa3BLU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHTmhkR1ZuYjNKcFpYTWdQU0IwYUdsekxuTmxjVU52YkM1allYUmxaMjl5YVdWek8xeHVJQ0FnSUgxY2JpQWdJQ0JqYjI1emRDQnRZWGhNWlc1bmRHZ2dQU0JqWVhSbFoyOXlhV1Z6TG14bGJtZDBhQ0ErSURBZ1B5Qk5ZWFJvTG0xaGVDZ3VMaTVqWVhSbFoyOXlhV1Z6TG0xaGNDaGNiaUFnSUNBZ0lDaHpLU0E5UGlCeklDRTlQU0J1ZFd4c0lEOGdkR2hwY3k1emNHeHBkSFJsY2lFb2N5a3ViR1Z1WjNSb0lEb2dNQ2twSURvZ01EdGNibHh1SUNBZ0lDOHZJRWRsZENCd2IzTnBkR2x2YmlCdVlXMWxjeUJtY205dElHUmhkR0VnWTI5c2RXMXVJSFJoWnlBbmNHOXphWFJwYjI1T1lXMWxjeWRjYmlBZ0lDQmpiMjV6ZENCd2IzTnBkR2x2Yms1aGJXVnpWSGgwSUQwZ2RHaHBjeTV6WlhGRGIyd3VaMlYwVkdGbktDZHdiM05wZEdsdmJrNWhiV1Z6SnlrN1hHNGdJQ0FnTHk4Z1JtRnNiR0poWTJzZ2FXWWdKM0J2YzJsMGFXOXVUbUZ0WlhNbklIUmhaeUJwY3lCdWIzUWdjSEp2ZG1sa1pXUmNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNZ1BTQndiM05wZEdsdmJrNWhiV1Z6VkhoMElEOGdjRzl6YVhScGIyNU9ZVzFsYzFSNGRDNXpjR3hwZENnbkxDQW5LUzV0WVhBb0tHNHBJRDArSUc0dWRISnBiU2dwS1NBNlhHNGdJQ0FnSUNCYkxpNHVRWEp5WVhrb2JXRjRUR1Z1WjNSb0tTNXJaWGx6S0NsZExtMWhjQ2dvYWxCdmN5a2dQVDRnWUNSN2FsQnZjeUFySURGOVlDazdYRzVjYmlBZ0lDQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQU0FvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpTQW1KaUIwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE1nSmlaY2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtTnNkV1JsY3loMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxLU2tnUDF4dUlDQWdJQ0FnZEdocGN5NXdiM05wZEdsdmJrNWhiV1Z6TG1sdVpHVjRUMllvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpTa2dPaUF3TzF4dUlDQWdJSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdQU0FvZEdocGN5NWxibVJRYjNOcGRHbHZiazVoYldVZ0ppWWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJQ1ltWEc0Z0lDQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE11YVc1amJIVmtaWE1vZEdocGN5NWxibVJRYjNOcGRHbHZiazVoYldVcEtTQS9YRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTXVhVzVrWlhoUFppaDBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU2tnT2lBb2JXRjRUR1Z1WjNSb0lDMGdNU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnYjI1UWNtOXdaWEowZVVOb1lXNW5aV1FvY0hKdmNHVnlkSGs2SUVSSExsQnliM0JsY25SNUtUb2dkbTlwWkNCN1hHNGdJQ0FnTHk4Z1kyOXVjMjlzWlM1a1pXSjFaeWhnVjJWaVRHOW5ieTV2YmxCeWIzQmxjblI1UTJoaGJtZGxaQ2dnSkh0d2NtOXdaWEowZVM1dVlXMWxmU0E5SUNjbklIMHBZQ2s3WEc0Z0lDQWdjM1Z3WlhJdWIyNVFjbTl3WlhKMGVVTm9ZVzVuWldRb2NISnZjR1Z5ZEhrcE8xeHVYRzRnSUNBZ2MzZHBkR05vSUNod2NtOXdaWEowZVM1dVlXMWxLU0I3WEc0Z0lDQWdZMkZ6WlNBblkyOXVjMmxrWlhKT2RXeHNVMlZ4ZFdWdVkyVnpKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5jMlZ4ZFdWdVkyVkRiMngxYlc1T1lXMWxKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVTJWeFEyOXNLQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R6ZEdGeWRGQnZjMmwwYVc5dVRtRnRaU2M2WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlZObGNVTnZiQ2dwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuWlc1a1VHOXphWFJwYjI1T1lXMWxKenBjYmlBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVTJWeFEyOXNLQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R3YjNOcGRHbHZibGRwWkhSb0p6cGNiaUFnSUNBZ0lIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ2dQU0IwYUdsekxuQnZjMmwwYVc5dVYybGtkR2c3WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMjFwYmtobGFXZG9kQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMjFoZUVobGFXZG9kQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMlpwZUZkcFpIUm9KenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5kbVZ5ZEdsallXeEJiR2xuYm0xbGJuUW5PbHh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZG9iM0pwZW05dWRHRnNRV3hwWjI1dFpXNTBKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5abWwwUVhKbFlTYzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0ozTm9jbWx1YTBWdGNIUjVWR0ZwYkNjNlhHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWQnZjMmwwYVc5dWN5Z3BPMXh1SUNBZ0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWVhONWJtTWdiMjVVWVdKc1pVRjBkR0ZqYUdWa0tDa2dlMXh1SUNBZ0lHTnZibk4wSUdSaGRHRkdjbUZ0WlZSNGREb2djM1J5YVc1bklEMGdkR2hwY3k1a1lYUmhSbkpoYldVZ1B5QW5aR0YwWVNjZ09pQW5iblZzYkNjN1hHNGdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdZbWx2T2lCWFpXSk1iMmR2UENSN2RHaHBjeTUyYVdWM1pYSkpaSDArTG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dnWkdGMFlVWnlZVzFsSUQwZ0pIdGtZWFJoUm5KaGJXVlVlSFI5SUNrZ2MzUmhjblJnS1R0Y2JpQWdJQ0J6ZFhCbGNpNXZibFJoWW14bFFYUjBZV05vWldRb0tUdGNibHh1SUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVWdJVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXpkV0p6TG5CMWMyZ29kR2hwY3k1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxtOXVRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LRjhwSUQwK0lIUm9hWE11Y21WdVpHVnlLQ2twS1R0Y2JpQWdJQ0FnSUhSb2FYTXVjM1ZpY3k1d2RYTm9LSFJvYVhNdVpHRjBZVVp5WVcxbExtWnBiSFJsY2k1dmJrTm9ZVzVuWldRdWMzVmljMk55YVdKbEtDaGZLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtDazdYRzRnSUNBZ0lDQjlLU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZWGRoYVhRZ2RHaHBjeTVwYm1sMEtDazdYRzRnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnWW1sdk9pQlhaV0pNYjJkdlBDUjdkR2hwY3k1MmFXVjNaWEpKWkgwK0xtOXVWR0ZpYkdWQmRIUmhZMmhsWkNncElHVnVaR0FwTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUc5MlpYSnlhV1JsSUdGemVXNWpJR1JsZEdGamFDZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCa1lYUmhSbkpoYldWVWVIUWdQU0JnSkh0MGFHbHpMbVJoZEdGR2NtRnRaU0EvSUNka1lYUmhKeUE2SUNkdWRXeHNKMzFnTzF4dUlDQWdJR052Ym5OdmJHVXVaR1ZpZFdjb1lHSnBiem9nVjJWaVRHOW5iendrZTNSb2FYTXVkbWxsZDJWeVNXUjlQaTV2YmxSaFlteGxRWFIwWVdOb1pXUW9JR1JoZEdGR2NtRnRaU0E5SUNSN1pHRjBZVVp5WVcxbFZIaDBmU0FwSUhOMFlYSjBZQ2s3WEc0Z0lDQWdjM1Z3WlhJdVpHVjBZV05vS0NrN1hHNWNiaUFnSUNCMGFHbHpMblpwWlhkVGRXSnpMbVp2Y2tWaFkyZ29LSE4xWWlrZ1BUNGdjM1ZpTG5WdWMzVmljMk55YVdKbEtDa3BPMXh1SUNBZ0lIUm9hWE11YUc5emRDRXVjbVZ0YjNabEtDazdYRzRnSUNBZ2RHaHBjeTVqWVc1MllYTWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lDQWdkR2hwY3k1dGMyZEliM04wSUQwZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUhSb2FYTXVhRzl6ZENBOUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lIUm9hWE11YVc1cGRHbGhiR2w2WldRZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQmlhVzg2SUZkbFlreHZaMjg4Skh0MGFHbHpMblpwWlhkbGNrbGtmVDR1YjI1VVlXSnNaVUYwZEdGamFHVmtLQ2tnWlc1a1lDazdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWDI1MWJHeFRaWEYxWlc1alpTaG1hV3hzWlhKU1pYTnBaSFZsSUQwZ0oxZ25LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1wWEc0Z0lDQWdJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLSFJvYVhNdVRHVnVaM1JvS1M1bWFXeHNLR1pwYkd4bGNsSmxjMmxrZFdVcExtcHZhVzRvSnljcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUNjbk8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJRjlqWVd4amRXeGhkR1VvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTVvYjNOMElIeDhJQ0YwYUdsekxuTmxjVU52YkNCOGZDQWhkR2hwY3k1a1lYUmhSbkpoYldVcFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0IwYUdsekxtTmhiR05UYVhwbEtDazdYRzVjYmlBZ0lDQjBhR2x6TG5CdmMybDBhVzl1Y3lBOUlHNWxkeUJCY25KaGVTaDBhR2x6TGt4bGJtZDBhQ2s3WEc0Z0lDQWdabTl5SUNoc1pYUWdhbEJ2Y3lBOUlEQTdJR3BRYjNNZ1BDQjBhR2x6TGt4bGJtZDBhRHNnYWxCdmN5c3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQndiM05PWVcxbE9pQnpkSEpwYm1jZ1BTQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTmJkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJQ3NnYWxCdmMxMDdYRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYU0E5SUc1bGR5QlFiM05wZEdsdmJrbHVabThvY0c5elRtRnRaU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnTWpBeU1pMHdOUzB3TlNCaGMydGhiR3RwYmlCcGJuTjBjblZqZEdWa0lIUnZJSE5vYjNjZ1YyVmlURzluYnlCaVlYTmxaQ0J2YmlCbWFXeDBaWElnS0c1dmRDQnpaV3hsWTNScGIyNHBYRzRnSUNBZ1kyOXVjM1FnYVc1a2FXTmxjeUE5SUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNW5aWFJUWld4bFkzUmxaRWx1WkdWNFpYTW9LVHRjYmlBZ0lDQXZMeUJqYjI1emRDQnBibVJwWTJWeklEMGdkR2hwY3k1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxuUnlkV1ZEYjNWdWRDQStJREFnUHlCMGFHbHpMbVJoZEdGR2NtRnRaUzV6Wld4bFkzUnBiMjR1WjJWMFUyVnNaV04wWldSSmJtUmxlR1Z6S0NrZ09seHVJQ0FnSUM4dklDQWdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVYRzRnSUNBZ2RHaHBjeTV5YjNkelRXRnphMlZrSUQwZ2FXNWthV05sY3k1c1pXNW5kR2c3WEc0Z0lDQWdkR2hwY3k1eWIzZHpUblZzYkNBOUlEQTdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR2tnYjJZZ2FXNWthV05sY3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJSE02SUhOMGNtbHVaeUE5SUR4emRISnBibWMrS0hSb2FYTXVjMlZ4UTI5c0xtZGxkQ2hwS1NrN1hHNWNiaUFnSUNBZ0lHbG1JQ2doY3lrZ2UxeHVJQ0FnSUNBZ0lDQnpJRDBnZEdocGN5NWZiblZzYkZObGNYVmxibU5sS0NrN1hHNGdJQ0FnSUNBZ0lDc3JkR2hwY3k1eWIzZHpUblZzYkR0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1kyOXVjM1FnYzJWeFRUb2djM1J5YVc1blcxMGdQU0IwYUdsekxuTndiR2wwZEdWeUlTaHpLVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3YlVsdVptOGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J6WlhGTlczUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQXJJR3BRYjNOZElIeDhJQ2N0Snp0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0VvYlNCcGJpQndiVWx1Wm04cEtWeHVJQ0FnSUNBZ0lDQWdJSEJ0U1c1bWIxdHRYU0E5SUc1bGR5QlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZLQ2s3WEc0Z0lDQWdJQ0FnSUhCdFNXNW1iMXR0WFM1amIzVnVkQ3NyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2STNKbFoybHZiaUJRYjJ4cGMyZ2dabkpsY1NCamIzVnVkSE5jYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJQzh2SUdSbGJHVjBaU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhXeWN0SjEwN1hHNWNiaUFnSUNBZ0lIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbkp2ZDBOdmRXNTBJRDBnTUR0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2JTQnBiaUIwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1bWNtVnhLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFM1eWIzZERiM1Z1ZENBclBTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeFcyMWRMbU52ZFc1ME8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlObGJtUnlaV2RwYjI1Y2JseHVJQ0FnSUdOdmJuTjBJSElnUFNCM2FXNWtiM2N1WkdWMmFXTmxVR2w0Wld4U1lYUnBienRjYmlBZ0lDQmpiMjV6ZENCdFlYaElaV2xuYUhRZ1BTQjBhR2x6TG1OaGJuWmhjeTVvWldsbmFIUWdMU0IwYUdsekxtRjRhWE5JWldsbmFIUWdLaUJ5TzF4dUlDQWdJQzh2SUdOdmJuTnZiR1V1WkdWaWRXY29ZRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHVYMk5oYkdOMWJHRjBaU2dwSUcxaGVFaGxhV2RvZEQwa2UyMWhlRWhsYVdkb2RIMHVZQ2s3WEc1Y2JpQWdJQ0F2THlOeVpXZHBiMjRnUTJGc1kzVnNZWFJsSUhOamNtVmxibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1puSmxjVG9nZXlCYll6b2djM1J5YVc1blhUb2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI5SUQwZ2RHaHBjeTV3YjNOcGRHbHZibk5iYWxCdmMxMHVabkpsY1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDBOdmRXNTBJRDBnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdWNtOTNRMjkxYm5RN1hHNWNiaUFnSUNBZ0lHeGxkQ0I1T2lCdWRXMWlaWElnUFNCMGFHbHpMbUY0YVhOSVpXbG5hSFE3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR1Z1ZEhKcFpYTWdQU0JQWW1wbFkzUXVaVzUwY21sbGN5aG1jbVZ4S1M1emIzSjBLQ2hoTENCaUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhXekJkSUNFOVBTQW5MU2NnSmlZZ1lsc3dYU0FoUFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJpV3pGZExtTnZkVzUwSUMwZ1lWc3hYUzVqYjNWdWREdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZVnN3WFNBOVBUMGdKeTBuSUNZbUlHSmJNRjBnUFQwOUlDY3RKeWxjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTUR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1lWc3dYU0E5UFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0F2S2lBb1lsc3dYU0E5UFQwZ0p5MG5LU0FxTDF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBck1UdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JsYm5SeWVTQnZaaUJsYm5SeWFXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ0U1c1bWJ6b2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUE5SUdWdWRISjVXekZkTzF4dUlDQWdJQ0FnSUNBdkx5QmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQmxiblJ5ZVZzd1hUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FEb2diblZ0WW1WeUlEMGdiV0Y0U0dWcFoyaDBJQ29nY0cxSmJtWnZMbU52ZFc1MElDOGdjbTkzUTI5MWJuUTdYRzVjYmlBZ0lDQWdJQ0FnY0cxSmJtWnZMbUp2ZFc1a2N5QTlJRzVsZHlCRVJ5NVNaV04wS0dwUWIzTWdLaUIwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvTENCNUxDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9MQ0JvS1R0Y2JpQWdJQ0FnSUNBZ2VTQXJQU0JvTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQXZMeU5sYm1SeVpXZHBiMjVjYmlBZ2ZWeHVYRzRnSUM4dklISmxabXhsWTNRZ1kyaGhibWRsY3lCdFlXUmxJSFJ2SUdacGJIUmxjaTl6Wld4bFkzUnBiMjVjYmlBZ2NtVnVaR1Z5S0hKbFkyRnNZeUE5SUhSeWRXVXBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXRjMmRJYjNOMEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXpaWEZEYjJ3Z0ppWWdJWFJvYVhNdVkzQXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXRjMmRJYjNOMElTNXBibTVsY2xSbGVIUWdQU0JnVlc1cmJtOTNiaUJ3WVd4bGRIUmxJQ2hqYjJ4MWJXNGdjMlZ0Vkhsd1pUb2dKeVI3ZEdocGN5NXpaWEZEYjJ3dWMyVnRWSGx3WlgwbktTNWdPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMXpaMGh2YzNRaExuTjBlV3hsTG1ScGMzQnNZWGtnUFNBbkp6dGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YlhOblNHOXpkQ0V1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2R1YjI1bEp6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElDRjBhR2x6TG5ObGNVTnZiQ0I4ZkNBaGRHaHBjeTVrWVhSaFJuSmhiV1VnZkh3Z0lYUm9hWE11WTNBcFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0JqYjI1emRDQm5JRDBnZEdocGN5NWpZVzUyWVhNdVoyVjBRMjl1ZEdWNGRDZ25NbVFuS1R0Y2JpQWdJQ0JwWmlBb0lXY3BJSEpsZEhWeWJqdGNibHh1SUNBZ0lHbG1JQ2h5WldOaGJHTXBYRzRnSUNBZ0lDQjBhR2x6TGw5allXeGpkV3hoZEdVb0tUdGNibHh1SUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNCbkxtWnBiR3hUZEhsc1pTQTlJQ2QzYUdsMFpTYzdYRzRnSUNBZ1p5NW1hV3hzVW1WamRDZ3dMQ0F3TENCMGFHbHpMbU5oYm5aaGN5NTNhV1IwYUN3Z2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMEtUdGNiaUFnSUNCbkxuUmxlSFJDWVhObGJHbHVaU0E5SUhSb2FYTXVkR1Y0ZEVKaGMyVnNhVzVsTzF4dVhHNGdJQ0FnTHk4Z1VISmxkbVZ1ZEhNZ1pHbDJhWE5wYjI0Z1lua2dlbVZ5YnlCdmJpQk1aVzVuZEdnZ1BTQXdYRzRnSUNBZ2FXWWdLSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE5UFQwZ0xURWdmSHdnZEdocGN5NWxibVJRYjNOcGRHbHZiaUE5UFQwZ0xURXBYRzRnSUNBZ0lDQnlaWFIxY200N1hHNWNiaUFnSUNBdkx5TnlaV2RwYjI0Z1VHeHZkQ0J3YjNOcGRHbHZiazVoYldWelhHNGdJQ0FnWnk1eVpYTmxkRlJ5WVc1elptOXliU2dwTzF4dUlDQWdJR2N1Wm1sc2JGTjBlV3hsSUQwZ0oySnNZV05ySnp0Y2JpQWdJQ0JuTG5SbGVIUkJiR2xuYmlBOUlDZGpaVzUwWlhJbk8xeHVJQ0FnSUdjdVptOXVkQ0E5SUNjeE1IQjRJRkp2WW05MGJ5d2dVbTlpYjNSdklFeHZZMkZzTENCellXNXpMWE5sY21sbUp6dGNiaUFnSUNCamIyNXpkQ0J3YjNOT1lXMWxUV0Y0VjJsa2RHZ2dQU0JOWVhSb0xtMWhlQ2d1TGk1MGFHbHpMbkJ2YzJsMGFXOXVjeTV0WVhBb0tIQnZjeWtnUFQ0Z1p5NXRaV0Z6ZFhKbFZHVjRkQ2h3YjNNdWJtRnRaU2t1ZDJsa2RHZ3BLVHRjYmlBZ0lDQmpiMjV6ZENCb1UyTmhiR1VnUFNCd2IzTk9ZVzFsVFdGNFYybGtkR2dnUENBb2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXRJRElwSUQ4Z01TQTZJQ2gwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUMwZ01pa2dMeUJ3YjNOT1lXMWxUV0Y0VjJsa2RHZzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJR052Ym5OMElIQnZjem9nVUc5emFYUnBiMjVKYm1adklEMGdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTA3WEc0Z0lDQWdJQ0JuTG5KbGMyVjBWSEpoYm5ObWIzSnRLQ2s3WEc0Z0lDQWdJQ0JuTG5ObGRGUnlZVzV6Wm05eWJTaGNiaUFnSUNBZ0lDQWdhRk5qWVd4bExDQXdMQ0F3TENBeExGeHVJQ0FnSUNBZ0lDQnFVRzl6SUNvZ2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDQXJJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dnTHlBeUxDQXdLVHRjYmlBZ0lDQWdJR2N1Wm1sc2JGUmxlSFFvY0c5ekxtNWhiV1VzSURBc0lEQXBPMXh1SUNBZ0lIMWNiaUFnSUNBdkx5TmxibVJ5WldkcGIyNGdVR3h2ZENCd2IzTnBkR2x2Yms1aGJXVnpYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnFVRzl6SUQwZ01Ec2dhbEJ2Y3lBOElIUm9hWE11VEdWdVozUm9PeUJxVUc5ekt5c3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnVzIxdmJtOXRaWElzSUhCdFNXNW1iMTBnYjJZZ1QySnFaV04wTG1WdWRISnBaWE1vZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdVpuSmxjU2twSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzF2Ym05dFpYSWdJVDA5SUNjdEp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzF2Ym05dFpYSlVlSFFnUFNCWFpXSk1iMmR2TG0xdmJtOXRaWEpVYjFSbGVIUW9iVzl1YjIxbGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZaUE5SUhCdFNXNW1ieTVpYjNWdVpITTdYRzVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JtYjI1MFUzUjViR1VnUFNBbk1UWndlQ0JTYjJKdmRHOHNJRkp2WW05MGJ5Qk1iMk5oYkN3Z2MyRnVjeTF6WlhKcFppYzdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1NHRmphM01nZEc4Z2MyTmhiR1VnZFhCd1pYSmpZWE5sSUdOb1lYSmhZM1JsY25NZ2RHOGdkR0Z5WjJWMElISmxZM1JoYm1kc1pWeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIVndjR1Z5WTJGelpVeGxkSFJsY2tGelkyVnVkQ0E5SURBdU1qVTdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwSUQwZ01USXVNanRjYmx4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZ6WlhSVWNtRnVjMlp2Y20wb0tUdGNiaUFnSUNBZ0lDQWdJQ0JuTG5OMGNtOXJaVk4wZVd4bElEMGdKMnhwWjJoMFozSmhlU2M3WEc0Z0lDQWdJQ0FnSUNBZ1p5NXNhVzVsVjJsa2RHZ2dQU0F4TzF4dUlDQWdJQ0FnSUNBZ0lHY3VjbVZqZENoaUxteGxablFzSUdJdWRHOXdMQ0JpTG5kcFpIUm9MQ0JpTG1obGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1p5NW1hV3hzVTNSNWJHVWdQU0IwYUdsekxtTndMbWRsZENodGIyNXZiV1Z5S1NBL1B5QjBhR2x6TG1Od0xtZGxkQ2duYjNSb1pYSW5LVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuUmxlSFJCYkdsbmJpQTlJQ2RzWldaMEp6dGNiaUFnSUNBZ0lDQWdJQ0JuTG1admJuUWdQU0JtYjI1MFUzUjViR1U3WEc0Z0lDQWdJQ0FnSUNBZ0x5OW5MbVpwYkd4U1pXTjBLR0l1YkdWbWRDd2dZaTUwYjNBc0lHSXVkMmxrZEdnc0lHSXVhR1ZwWjJoMEtUdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRWRzA2SUZSbGVIUk5aWFJ5YVdOeklEMGdaeTV0WldGemRYSmxWR1Y0ZENodGIyNXZiV1Z5VkhoMEtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHbG1JQ2h0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkQ0FoUFNBd0tWeHVJQ0FnSUNBZ0lDQWdJQzh2SUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnYlRvZ0pIdHRmU3dnYlUwdVlXTjBkV0ZzUW05MWJtUnBibWRDYjNoQmMyTmxiblE2SUNSN2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5SOVlDazdYRzVjYmlBZ0lDQWdJQ0FnSUNCbkxuTmxkRlJ5WVc1elptOXliU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lHSXVkMmxrZEdnZ0x5QnRWRzB1ZDJsa2RHZ3NJREFzSURBc0lHSXVhR1ZwWjJoMElDOGdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZaTVzWldaMExDQmlMblJ2Y0NrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2h0YjI1dmJXVnlWSGgwTENBd0xDQXRkWEJ3WlhKallYTmxUR1YwZEdWeVFYTmpaVzUwS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1kyRnNZMU5wZW1Vb0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lCOGZDQWhkR2hwY3k1b2IzTjBLVnh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVYRzRnSUNBZ2JHVjBJSGRwWkhSb09pQnVkVzFpWlhJZ1BTQjBhR2x6TGt4bGJtZDBhQ0FxSUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0JzWlhRZ2FHVnBaMmgwSUQwZ1RXRjBhQzV0YVc0b2RHaHBjeTV0WVhoSVpXbG5hSFFzSUUxaGRHZ3ViV0Y0S0hSb2FYTXViV2x1U0dWcFoyaDBMQ0IwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMEtTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NW1hWFJCY21WaEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCNFUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUWdMeUJvWldsbmFIUTdYRzRnSUNBZ0lDQmpiMjV6ZENCNVUyTmhiR1U2SUc1MWJXSmxjaUE5SUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQXZJSGRwWkhSb08xeHVJQ0FnSUNBZ1kyOXVjM1FnYzJOaGJHVWdQU0JOWVhSb0xtMWhlQ2d4TENCTllYUm9MbTFwYmloNFUyTmhiR1VzSUhsVFkyRnNaU2twTzF4dUlDQWdJQ0FnZDJsa2RHZ2dQU0IzYVdSMGFDQXFJSE5qWVd4bE8xeHVJQ0FnSUNBZ2FHVnBaMmgwSUQwZ2FHVnBaMmgwSUNvZ2MyTmhiR1U3WEc0Z0lDQWdJQ0IwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb0lDb2djMk5oYkdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjaUE5SUhkcGJtUnZkeTVrWlhacFkyVlFhWGhsYkZKaGRHbHZPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0lEMGdkMmxrZEdnZ0tpQnlPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1WEc0Z0lDQWdMeThnWTI5dWMzUWdZMkZ1ZG1GelNHVnBaMmgwT2lCdWRXMWlaWElnUFNCM2FXUjBhQ0ErSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDQS9JR2hsYVdkb2RDQXRJRGdnT2lCb1pXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0b1pXbG5hSFI5Y0hoZ0tUdGNiaUFnSUNCamIyNXpkQ0JqWVc1MllYTklaV2xuYUhRNklHNTFiV0psY2lBOUlIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFE3WEc0Z0lDQWdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJRDBnWTJGdWRtRnpTR1ZwWjJoMElDb2djanRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYUdWcFoyaDBKeXdnWUNSN1kyRnVkbUZ6U0dWcFoyaDBmWEI0WUNrN1hHNWNiaUFnSUNBdkx5QkJaR3AxYzNRZ2FHOXpkQ0JoYm1RZ2NtOXZkQ0IzYVdSMGFGeHVJQ0FnSUdsbUlDaDBhR2x6TG1acGVGZHBaSFJvS1NCN1hHNGdJQ0FnSUNBdkx5Qm1kV3hzSUhkcFpIUm9JR1p2Y2lCallXNTJZWE1nYUc5emRDQmhibVFnY205dmRGeHVJQ0FnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG5kcFpIUm9JRDBnZEdocGN5NW9iM04wTG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbWhsYVdkb2RDQTlJR0FrZTJobGFXZG9kSDF3ZUdBN1hHNGdJQ0FnSUNCMGFHbHpMbWh2YzNRdWMzUjViR1V1YzJWMFVISnZjR1Z5ZEhrb0oyOTJaWEptYkc5M0p5d2dKMmhwWkdSbGJpY3NJQ2RwYlhCdmNuUmhiblFuS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdMeThnWVd4c2IzY2djMk55YjJ4c0lHTmhiblpoY3lCcGJpQnliMjkwWEc0Z0lDQWdJQ0IwYUdsekxuSnZiM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQjBhR2x6TG1odmMzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXViM1psY21ac2IzZFlJRDBnSjJGMWRHOGhhVzF3YjNKMFlXNTBKenRjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2NuTENCdWRXeHNLVHRjYmx4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0NkMFpYaDBMV0ZzYVdkdUp5d2dkR2hwY3k1b2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEtUdGNibHh1SUNBZ0lDQWdMeThnZG1WeWRHbGpZV3dnWVd4cFoyNXRaVzUwWEc0Z0lDQWdJQ0JzWlhRZ2FHOXpkRlJ2Y0UxaGNtZHBiaUE5SURBN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVkbVZ5ZEdsallXeEJiR2xuYm0xbGJuUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ0ozUnZjQ2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0F3TzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJR05oYzJVZ0oyMXBaR1JzWlNjNlhHNGdJQ0FnSUNBZ0lHaHZjM1JVYjNCTllYSm5hVzRnUFNCTllYUm9MbTFoZUNnd0xDQW9kR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENBdElHaGxhV2RvZENrZ0x5QXlLVHRjYmlBZ0lDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ0lDQmpZWE5sSUNkaWIzUjBiMjBuT2x4dUlDQWdJQ0FnSUNCb2IzTjBWRzl3VFdGeVoybHVJRDBnVFdGMGFDNXRZWGdvTUN3Z2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2s3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R0WVhKbmFXNHRkRzl3Snl3Z1lDUjdhRzl6ZEZSdmNFMWhjbWRwYm4xd2VHQXNJQ2RwYlhCdmNuUmhiblFuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ1BDQm9aV2xuYUhRcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0MGFHbHpMbkp2YjNRdVkyeHBaVzUwU0dWcFoyaDBmWEI0WUNrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY3RlU2NzSUc1MWJHd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2R2ZG1WeVpteHZkeTE1Snl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktGeHVJQ0FnSUM4dklDQWdZSFJvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQWtlM1JvYVhNdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0E5SUNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kSDFjWEc1Z0lDdGNiaUFnSUNBdkx5QWdJR0IwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFFnUFNBa2UzUm9hWE11YUc5emRDNWpiR2xsYm5SSVpXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0FuWEZ4dUp5QXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUNBZ0lDQWdJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOVhGeHVZQ0FyWEc0Z0lDQWdMeThnSUNCZ2RHaHBjeTVqWVc1MllYTXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNW9aV2xuYUhSOVlDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdiV2x1VEdWdVozUm9JRzFwYm1sdGRXMGdiR1Z1WjNSb0lHOW1JSE5sY1hWbGJtTmxJSFJ2SUdSbGRHVmpkQ0J3WVd4bGRIUmxJQ2hsYlhCMGVTQnpkSEpwYm1keklHRnlaU0JoYkd4dmQyVmtLVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdFRaWEZRWVd4bGRIUmxmU0JRWVd4bGRIUmxJR052Y25KbGMzQnZibVJwYm1jZ2RHOGdkR2hsSUdGc2NHaGhZbVYwSUc5bUlIUm9aU0J6WlhGMVpXNWpaWE1nYVc0Z2RHaGxJR052YkhWdGJseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd2FXTnJWWEJRWVd4bGRIUmxLSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0J0YVc1TVpXNW5kR2c2SUc1MWJXSmxjaUE5SURVcE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnNaWFFnY21Wek9pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQ0FnYzNkcGRHTm9JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTa2dlMXh1SUNBZ0lHTmhjMlVnUVcxcGJtOWhZMmxrY3k1VFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2WEc0Z0lDQWdJQ0J5WlhNZ1BTQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjenRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdUblZqYkdWdmRHbGtaWE11VTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPbHh1SUNBZ0lDQWdjbVZ6SUQwZ1RuVmpiR1Z2ZEdsa1pYTlFZV3hsZEhSbGN5NURhSEp2YldGMGIyZHlZVzA3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCOVhHNGdJQ0FnWTI5dWMzUWdjM1JoZEhNNklGTmxjVU52YkZOMFlYUnpJRDBnVjJWaVRHOW5ieTVuWlhSVGRHRjBjeWh6WlhGRGIyd3NJRzFwYmt4bGJtZDBhQ3dnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWek9pQmJVMlYwUEhOMGNtbHVaejRzSUZObGNWQmhiR1YwZEdWZFcxMGdQU0JiWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loT2RXTnNaVzkwYVdSbGN5NU9ZVzFsY3lrcExDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpMa05vY205dFlYUnZaM0poYlYwc1hHNGdJQ0FnSUNCYmJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aEJiV2x1YjJGamFXUnpMazVoYldWektTa3NJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6WFN4Y2JpQWdJQ0JkTzF4dUlDQWdJQzh2SUVOaGJHTjFiR0YwWlNCc2FXdGxiR2xvYjI5a2N5Qm1iM0lnWVd4d2FHRmlaWFJmWTJGdVpHbGtZWFJsYzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiVG9nYm5WdFltVnlXMTBnUFNCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOY2JpQWdJQ0FnSUM1dFlYQW9LR01wSUQwK0lGZGxZa3h2WjI4dVoyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLSE4wWVhSekxtWnlaWEVzSUdOYk1GMHBLVHRjYmlBZ0lDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQWdJR2xtSUNodFlYaERiM01nUGlBd0xqVTFLVnh1SUNBZ0lDQWdjbVZ6SUQwZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelcyRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxTnBiUzVwYm1SbGVFOW1LRzFoZUVOdmN5bGRXekZkTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhKbGN5QTlJRlZ1YTI1dmQyNVRaWEZRWVd4bGRIUmxjeTVEYjJ4dmNqdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdSRWN1UTI5c2RXMXVmU0J6WlhGRGIyeGNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUcxcGJreGxibWQwYUZ4dUlDQWdLaUJBY0dGeVlXMGdlMU53YkdsMGRHVnlSblZ1WTMwZ2MzQnNhWFIwWlhKY2JpQWdJQ29nUUhKbGRIVnliaUI3SUZObGNVTnZiRk4wWVhSeklIMHNJSE5oYldWTVpXNW5kR2c2SUdKdmIyeGxZVzRnZlNCemRHRjBjeUJ2WmlCamIyeDFiVzRnYzJWeGRXVnVZMlZ6WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWjJWMFUzUmhkSE1vYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUcxcGJreGxibWQwYURvZ2JuVnRZbVZ5TENCemNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpLVG9nVTJWeFEyOXNVM1JoZEhNZ2UxeHVJQ0FnSUdOdmJuTjBJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUc1MWJXSmxjaUI5SUQwZ2UzMDdYRzRnSUNBZ2JHVjBJSE5oYldWTVpXNW5kR2dnUFNCMGNuVmxPMXh1SUNBZ0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhObGNTQnZaaUJ6WlhGRGIyd3VZMkYwWldkdmNtbGxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITndiR2wwZEdWeUtITmxjU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaG1hWEp6ZEV4bGJtZDBhQ0E5UFNCdWRXeHNLVnh1SUNBZ0lDQWdJQ0JtYVhKemRFeGxibWQwYUNBOUlHMVRaWEV1YkdWdVozUm9PMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9iVk5sY1M1c1pXNW5kR2dnSVQwOUlHWnBjbk4wVEdWdVozUm9LVnh1SUNBZ0lDQWdJQ0J6WVcxbFRHVnVaM1JvSUQwZ1ptRnNjMlU3WEc1Y2JpQWdJQ0FnSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0ErSUcxcGJreGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzBnYjJZZ2JWTmxjU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbG1JQ2doS0cwZ2FXNGdabkpsY1NrcFhHNGdJQ0FnSUNBZ0lDQWdJQ0JtY21WeFcyMWRJRDBnTUR0Y2JpQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElDczlJREU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIdG1jbVZ4T2lCbWNtVnhMQ0J6WVcxbFRHVnVaM1JvT2lCellXMWxUR1Z1WjNSb2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRV3h3YUdGaVpYUlRhVzFwYkdGeWFYUjVLR1p5WlhFNklFMXZibTl0WlhKR2NtVnhjeXdnWVd4d2FHRmlaWFE2SUZObGREeHpkSEpwYm1jK0xDQm5ZWEJUZVcxaWIydzZJSE4wY21sdVp5QTlJQ2N0SnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnWTI5dWMzUWdhMlY1Y3lBOUlHNWxkeUJUWlhROGMzUnlhVzVuUGloYkxpNHVibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhtY21WeEtTa3NJQzR1TG1Gc2NHaGhZbVYwWFNrN1hHNGdJQ0FnYTJWNWN5NWtaV3hsZEdVb1oyRndVM2x0WW05c0tUdGNibHh1SUNBZ0lHTnZibk4wSUdaeVpYRkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0FnSUdOdmJuTjBJR0ZzY0doaFltVjBRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYTJWNWN5a2dlMXh1SUNBZ0lDQWdabkpsY1VFdWNIVnphQ2h0SUdsdUlHWnlaWEVnUHlCbWNtVnhXMjFkSURvZ01DazdYRzRnSUNBZ0lDQmhiSEJvWVdKbGRFRXVjSFZ6YUNoaGJIQm9ZV0psZEM1b1lYTW9iU2tnUHlBeElEb2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHFJRlJvWlhKbElIZGxjbVVnWVNCbVpYY2dhV1JsWVhNNklHTm9hUzF6Y1hWaGNtVmtMQ0J3WldGeWMyOXVJR052Y25KbGJHRjBhVzl1SUNoMllYSnBZVzVqWlQ4cExDQnpZMkZzWVhJZ2NISnZaSFZqZENBcUwxeHVJQ0FnSUdOdmJuTjBJR1p5WlhGV09pQldaV04wYjNJZ1BTQnVaWGNnVm1WamRHOXlLR1p5WlhGQktUdGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1lXeHdhR0ZpWlhSQktUdGNiaUFnSUNCamIyNXpkQ0JqYjNNNklHNTFiV0psY2lBOUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb1puSmxjVllzSUdGc2NHaGhZbVYwVmlrZ0x5QW9kbVZqZEc5eVRHVnVaM1JvS0daeVpYRldLU0FxSUhabFkzUnZja3hsYm1kMGFDaGhiSEJvWVdKbGRGWXBLVHRjYmlBZ0lDQnlaWFIxY200Z1kyOXpPMXh1SUNCOVhHNWNiaUFnTHk4Z0x5b3FJRVpwY25OMElIUnllU0IwYnlCbWFXNWtJR052YkhWdGJpQjNhWFJvSUhObGJWUjVjR1VnSjJGc2FXZHVaV1JUWlhGMVpXNWpaU2N1WEc0Z0lDOHZJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQzh2SUNBcUlFQndZWEpoYlNCN1JFY3VSR0YwWVVaeVlXMWxmU0JrWVhSaFJuSmhiV1ZjYmlBZ0x5OGdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNCVWFHVWdZMjlzZFcxdUlIZGxJSGRsY21VZ2JHOXZhMmx1WnlCbWIzSWdiM0lnYm5Wc2JGeHVJQ0F2THlBZ0tpOWNiaUFnTHk4Z2NISnBkbUYwWlNCd2FXTnJWWEJUWlhGRGIyd29aR0YwWVVaeVlXMWxPaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnTHk4Z0lDQnNaWFFnY21Wek9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lEMGdaR0YwWVVaeVlXMWxMbU52YkhWdGJuTXVZbmxUWlcxVWVYQmxLQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5LVHRjYmlBZ0x5OGdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0x5OGdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdSaGRHRkdjbUZ0WlM1amIyeDFiVzV6S1NCN1hHNGdJQzh2SUNBZ0lDQWdJR052Ym5OMElHTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtHTnZiQ0JoY3lCRVJ5NURiMngxYlc0c0lEVXBPMXh1SUNBdkx5QWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0F2THlBZ0lDQWdJQ0FnSUhKbGN5QTlJR052YkR0Y2JpQWdMeThnSUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnTHk4Z0lDQWdJQ0FnZlZ4dUlDQXZMeUFnSUNBZ2ZWeHVJQ0F2THlBZ0lIMWNiaUFnTHk4Z0lDQnlaWFIxY200Z2NtVnpPMXh1SUNBdkx5QjlYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlRaWEZEYjJ3eUtHUm1PaUJFUnk1RVlYUmhSbkpoYldVcE9pQkVSeTVEYjJ4MWJXNGdmQ0J1ZFd4c0lIdGNiaUFnSUNCamIyNXpkQ0J6WlcxVWVYQmxRMjlzVEdsemRDQTlJR1JtTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsUVd4c0tFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNrN1hHNGdJQ0FnYkdWMElISmxjME52YkRvZ1JFY3VRMjlzZFcxdUlId2diblZzYkNBOUlITmxiVlI1Y0dWRGIyeE1hWE4wTG1acGJtUW9LR052YkNrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1YVhSeklEOGdkVzVwZEhNdWFXNWtaWGhQWmlnblRWTkJKeWtnSVQwOUlDMHhJRG9nWm1Gc2MyVTdYRzRnSUNBZ2ZTa2dQejhnYm5Wc2JEdGNiaUFnSUNCcFppQW9JWEpsYzBOdmJDQW1KaUJ6WlcxVWVYQmxRMjlzVEdsemRDNXNaVzVuZEdnZ1BpQXdLVnh1SUNBZ0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUNBZ2NtVjBkWEp1SUhKbGMwTnZiRHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJRzF2Ym05dFpYSlNaU0E5SUM5Y1hGc29YRngzS3lsY1hGMThLRnhjZHlsOEtDMHBMMmM3WEc1Y2JpQWdMeW9xSUZOd2JHbDBJSE5sY1hWbGJtTmxJR1p2Y2lCemFXNW5iR1VnWTJoaGNtRmpkR1Z5SUcxdmJtOXRaWEp6TENCemNYVmhjbVVnWW5KaFkydGxkSE1nYlhWc2RHbGphR0Z5SUcxdmJtOXRaWElnYm1GdFpYTWdiM0lnWjJGd0lITjViV0p2YkM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sOUlITmxjU0J2WW1wbFkzUWdkMmwwYUNCelpYRjFaVzVqWlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjVG9nWVc1NUtUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lHTnZibk4wSUhKbGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloelpYRXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbTF2Ym05dFpYSlNaU2twWEc0Z0lDQWdJQ0F1YldGd0tDaHRZVG9nVW1WblJYaHdUV0YwWTJoQmNuSmhlU2tnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnNaWFFnYlZKbGN6b2djM1J5YVc1bk8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQnRZVnN3WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzB1YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNodElHbHVJRmRsWWt4dloyOHVZV0ZUZVc1dmJubHRjeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlGZGxZa3h2WjI4dVlXRlRlVzV2Ym5sdGMxdHRYVHRjYmlBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdiVkpsY3lBOUlDY25PMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnVEc5dVp5QnRiMjV2YldWeUlDY2tlMjE5SnlCb1lYTWdibTkwSUdFZ2MyaHZjblFnYzNsdWIyNTViUzVnS1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUcxU1pYTTdYRzRnSUNBZ0lDQjlLUzUwYjBGeWNtRjVLQ2s3WEc1Y2JpQWdJQ0J5WlhSMWNtNGdjbVZ6TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYUdWc2JWSmxJRDBnTHloUVJWQlVTVVJGTVh4RVRrRXhmRkpPUVRFcFhGeDdLRnRlZlYwcktYMHZaenRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYUdWc2JWZHlZWEJ3WlhKelVtVWdQU0F2S0ZKY1hDaDhSRnhjS0h4Y1hDbFFLUzluTzF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCb1pXeHRVSEF4VW1VZ1BTQXZYRnhiS0Z0ZVhGeGJYRnhkWFNzcFhTOW5PMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYzNCc2FYUjBaWEpCYzBobGJHMG9jMlZ4T2lCaGJua3BJSHRjYmlBZ0lDQlhaV0pNYjJkdkxtaGxiRzFTWlM1c1lYTjBTVzVrWlhnZ1BTQXdPMXh1SUNBZ0lHTnZibk4wSUdWaE9pQlNaV2RGZUhCRmVHVmpRWEp5WVhrZ2ZDQnVkV3hzSUQwZ1YyVmlURzluYnk1b1pXeHRVbVV1WlhobFl5aHpaWEV1ZEc5VGRISnBibWNvS1NrN1hHNGdJQ0FnWTI5dWMzUWdhVzVUWlhFNklITjBjbWx1WnlCOElHNTFiR3dnUFNCbFlTQS9JR1ZoV3pKZExuSmxjR3hoWTJVb1YyVmlURzluYnk1b1pXeHRWM0poY0hCbGNuTlNaU3dnSnljcElEb2diblZzYkR0Y2JseHVJQ0FnSUdOdmJuTjBJRzF0VUc5emRGQnliMk5sYzNNZ1BTQW9iVzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUE5UGlCN1hHNGdJQ0FnSUNCWFpXSk1iMmR2TG1obGJHMVFjREZTWlM1c1lYTjBTVzVrWlhnZ1BTQXdPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NIQXhUU0E5SUZkbFlreHZaMjh1YUdWc2JWQndNVkpsTG1WNFpXTW9iVzBwTzF4dUlDQWdJQ0FnYVdZZ0tIQndNVTBnSmlZZ2NIQXhUUzVzWlc1bmRHZ2dQajBnTWlrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NIQXhUVnN4WFR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ0YlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5TzF4dVhHNGdJQ0FnWTI5dWMzUWdiVzFNYVhOME9pQnpkSEpwYm1kYlhTQTlJR2x1VTJWeElEOGdhVzVUWlhFdWMzQnNhWFFvSnk0bktTQTZJRnRkTzF4dUlDQWdJR052Ym5OMElHMXRUR2x6ZEZKbGN6b2djM1J5YVc1blcxMGdQU0J0YlV4cGMzUXViV0Z3S0cxdFVHOXpkRkJ5YjJObGMzTXBPMXh1SUNBZ0lISmxkSFZ5YmlCdGJVeHBjM1JTWlhNN1hHNGdJSDFjYmx4dUlDQXZLaW9nUjJWMGN5QnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJVZ1lua2djMlZ3WVhKaGRHOXlYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYQmhjbUYwYjNKY2JpQWdJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUlRjR3hwZEhSbGNsZHBkR2hUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5T2lCemRISnBibWNwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lISmxkSFZ5YmlBb2MyVnhPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ6WlhFdWMzQnNhWFFvYzJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ0x5b3FJRWRsZENCemNHeHBkSFJsY2lCdFpYUm9iMlFnZEc4Z2MzQnNhWFFnYzJWeGRXVnVZMlZ6SUhSdklHMXZibTl0WlhKelhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0IxYm1sMGMxeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYzJWd1lYSmhkRzl5WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMU53YkdsMGRHVnlSblZ1WTMxY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFUzQnNhWFIwWlhJb2RXNXBkSE02SUhOMGNtbHVaeXdnYzJWd1lYSmhkRzl5T2lCemRISnBibWNwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNBZ0lHbG1JQ2gxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb0oyWmhjM1JoSnlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LQ2R6WlhCaGNtRjBiM0luS1NsY2JpQWdJQ0FnSUhKbGRIVnliaUJYWldKTWIyZHZMbWRsZEZOd2JHbDBkR1Z5VjJsMGFGTmxjR0Z5WVhSdmNpaHpaWEJoY21GMGIzSXBPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2duYUdWc2JTY3BLVnh1SUNBZ0lDQWdjbVYwZFhKdUlGZGxZa3h2WjI4dWMzQnNhWFIwWlhKQmMwaGxiRzA3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JWYm1WNGNHVmpkR1ZrSUhWdWFYUnpJQ1I3ZFc1cGRITjlJQzVnS1R0Y2JseHVJQ0FnSUM4dklGUlBSRTg2SUZOd2JHbDBkR1Z5SUdadmNpQklSVXhOWEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEZOd2JHbDBkR1Z5Um05eVEyOXNkVzF1S0dOdmJEb2dSRWN1UTI5c2RXMXVLVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCcFppQW9ZMjlzTG5ObGJWUjVjR1VnSVQwOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnUjJWMElITndiR2wwZEdWeUlHWnZjaUJ6WlcxVWVYQmxJRndpSkh0RVJ5NVRSVTFVV1ZCRkxrMUJRMUpQVFU5TVJVTlZURVY5WENJZ2IyNXNlUzVnS1R0Y2JseHVJQ0FnSUdOdmJuTjBJSFZ1YVhSeklEMGdZMjlzTG1kbGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVEtUdGNiaUFnSUNCamIyNXpkQ0J6WlhCaGNtRjBiM0lnUFNCamIyd3VaMlYwVkdGbktDZHpaWEJoY21GMGIzSW5LVHRjYmlBZ0lDQnlaWFIxY200Z1YyVmlURzluYnk1blpYUlRjR3hwZEhSbGNpaDFibWwwY3l3Z2MyVndZWEpoZEc5eUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCUGJteDVJSE52YldVZ2IyWWdkR2hsSUhONWJtOXVlVzF6TGlCVWFHVnpaU0IzWlhKbElHOWlkR0ZwYm1Wa0lHWnliMjBnZEdobElHTnNkWE4wWlhKbFpDQnZiR2xuYjNCbGNIUnBaR1VnWkdGMFlYTmxkQzRnS2k5Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1lXRlRlVzV2Ym5sdGN6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2djM1J5YVc1bklIMGdQU0I3WEc0Z0lDQWdKMXROWlU1c1pWMG5PaUFuVENjc0lDOHZJRTVzWlNBdElHNXZjbXhsZFdOcGJtVmNiaUFnSUNBblcwMWxRVjBuT2lBblFTY3NYRzRnSUNBZ0oxdE5aVWRkSnpvZ0owY25MRnh1SUNBZ0lDZGJUV1ZHWFNjNklDZEdKeXhjYmlBZ2ZUdGNibHh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJzYjI1blRXOXViMjFsY2xCaGNuUlNaU0E5SUM4b1hGeDNLeWt2Wnp0Y2JseHVJQ0F2S2lCVGFHOXlkR1Z1Y3lCdGIyNXZiV1Z5SUhKbGNISmxjMlZ1ZEdGMGFXOXVJSFJsZUhRZ1ptOXlJRzF2Ym05dFpYSnpJSGRwZEdnZ2JHOXVaeUJ1WVcxbGN5NWNiaUFnS2lvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2JXOXViMjFsY2xSdlZHVjRkQ2h6Y21NNklHRnVlU2s2SUhOMGNtbHVaeUI3WEc0Z0lDQWdZMjl1YzNRZ2MzSmpWSGgwT2lCemRISnBibWNnUFNCemNtTXVkRzlUZEhKcGJtY29LVHRjYmlBZ0lDQnBaaUFvYzNKalZIaDBMbXhsYm1kMGFDQThQU0ExS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYzNKalZIaDBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCamIyNXpkQ0J3WVhKMGN6b2djM1J5YVc1blcxMGdQU0IzZFR4U1pXZEZlSEJOWVhSamFFRnljbUY1UGloemNtTXVkRzlUZEhKcGJtY29LUzV0WVhSamFFRnNiQ2hYWldKTWIyZHZMbXh2Ym1kTmIyNXZiV1Z5VUdGeWRGSmxLU2xjYmlBZ0lDQWdJQ0FnTG0xaGNDZ29iV0U2SUZKbFowVjRjRTFoZEdOb1FYSnlZWGtwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRVbVZ6T2lCemRISnBibWNnUFNCdFlWc3dYVHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnYlZKbGN6dGNiaUFnSUNBZ0lDQWdmU2t1ZEc5QmNuSmhlU2dwTzF4dVhHNGdJQ0FnSUNCcFppQW9jR0Z5ZEhNdWJHVnVaM1JvSUQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2NnSnp0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJoY25Rd09pQnpkSEpwYm1jZ1BTQndZWEowYzFzd1hUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NtVnpWSGgwT2lCemRISnBibWNnUFNCd1lYSjBNQzVzWlc1bmRHZ2dQQ0EySUQ4Z1lDUjdjR0Z5ZERCOTRvQ21ZQ0E2SUdBa2UzQmhjblF3TG5OMVluTjBjbWx1Wnlnd0xDQTFLWDNpZ0taZ08xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpWSGgwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyIH0gZnJvbSAnLi93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yJztcbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24oZGF0YUNvbCwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzID0geWllbGQgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKHsgZGF0YTogZGF0YUNvbCwgbWV0cmljOiBzaW1pbGFyaXR5TWV0cmljIH0sIG1ldGhvZE5hbWUsIG9wdGlvbnMpO1xuICAgICAgICBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcgPSBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcubWFwKGl0ID0+IG5vcm1hbGl6ZShpdCkpO1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXM7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRjM0JoWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6WlhGMVpXNWpaUzF6Y0dGalpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZGUVN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhOVVVzVDBGQlR5eEZRVUZGTEdsRFFVRnBReXhGUVVFclFpeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJSMnhKTEUxQlFVMHNWVUZCWjBJc2IwTkJRVzlETEVOQlEzUkVMRTlCUVhGRExFVkJRM0pETEZWQlFXdENMRVZCUTJ4Q0xHZENRVUUyUkN4RlFVTTNSQ3hQUVVGaE96dFJRVVZpTEUxQlFVMHNkVUpCUVhWQ0xFZEJRM3BDTEUxQlFVMHNhVU5CUVdsRExFTkJRMjVETEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVdkQ0xFVkJRM3BFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1FpeDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTVUZEYmtNc1EwRkJRenREUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdleUJOWVhSeWFYZ3NJRlpsWTNSdmNpQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzWmxZM1J2Y2kxdmNHVnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZXlCQ2FYUkJjbkpoZVUxbGRISnBZM01zSUZOMGNtbHVaMDFsZEhKcFkzTXNJRlpoYkdsa1ZIbHdaWE1zSUZabFkzUnZjazFsZEhKcFkzTWdmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIc2dZM0psWVhSbFJHbHRaVzV6YVc1aGJHbDBlVkpsWkhWamFXNW5WMjl5YTJWeUxDQkpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUWdmU0JtY205dElDY3VMM2R2Y210bGNuTXZaR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0luTzF4dVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeVpXUjFZMlZFYVcxbGJuTnBibUZzYVhSNVYybDBhRTV2Y20xaGJHbDZZWFJwYjI0b1hHNGdJQ0FnWkdGMFlVTnZiRG9nUW1sMFFYSnlZWGxiWFh4V1pXTjBiM0piWFh4emRISnBibWRiWFN3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJDYVhSQmNuSmhlVTFsZEhKcFkzTjhWbVZqZEc5eVRXVjBjbWxqYzN4VGRISnBibWROWlhSeWFXTnpMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCUWNtOXRhWE5sUEVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZEQ0Z2UxeHVYRzRnSUNBZ1kyOXVjM1FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTZJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0E5WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR055WldGMFpVUnBiV1Z1YzJsdVlXeHBkSGxTWldSMVkybHVaMWR2Y210bGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUhzZ1pHRjBZVG9nWkdGMFlVTnZiQ3dnYldWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpJSDBnWVhNZ1ZtRnNhV1JVZVhCbGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRTVoYldVc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuSUQwZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuTG0xaGNDaHBkQ0E5UGlCdWIzSnRZV3hwZW1Vb2FYUXBLVHRjYmlBZ0lDQnlaWFIxY200Z1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE03WEc1OUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZGlzdGFuY2VNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgJ1ZlY3Rvcic6IHtcbiAgICAgICAgJ0V1Y2xpZGVhbkRpc3RhbmNlJzogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG4gICAgfSxcbiAgICAnU3RyaW5nJzoge1xuICAgICAgICAnTGV2ZW5zaHRlaW4nOiBmbC5kaXN0YW5jZSxcbiAgICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH0sXG4gICAgJ0JpdEFycmF5Jzoge1xuICAgICAgICAnVGFuaW1vdG8nOiBkaXN0YW5jZU1ldHJpY3NbJ1Rhbmltb3RvJ10sXG4gICAgICAgICdEaWNlJzogZGlzdGFuY2VNZXRyaWNzWydEaWNlJ10sXG4gICAgICAgICdBc3ltbWV0cmljJzogZGlzdGFuY2VNZXRyaWNzWydBc3ltbWV0cmljJ10sXG4gICAgICAgICdCcmF1bi1CbGFucXVldCc6IGRpc3RhbmNlTWV0cmljc1snQnJhdW4tQmxhbnF1ZXQnXSxcbiAgICAgICAgJ0Nvc2luZSc6IGRpc3RhbmNlTWV0cmljc1snQ29zaW5lJ10sXG4gICAgICAgICdLdWxjenluc2tpJzogZGlzdGFuY2VNZXRyaWNzWydLdWxjenluc2tpJ10sXG4gICAgICAgICdNYy1Db25uYXVnaGV5JzogZGlzdGFuY2VNZXRyaWNzWydNYy1Db25uYXVnaGV5J10sXG4gICAgICAgICdSb2dvdC1Hb2xkYmVyZyc6IGRpc3RhbmNlTWV0cmljc1snUm9nb3QtR29sZGJlcmcnXSxcbiAgICAgICAgJ1J1c3NlbCc6IGRpc3RhbmNlTWV0cmljc1snUnVzc2VsJ10sXG4gICAgICAgICdTb2thbCc6IGRpc3RhbmNlTWV0cmljc1snU29rYWwnXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZSgpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIHJldHVybiBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVUZETEdWQlFXVXNSVUZCUXl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlEycEdMRTlCUVU4c1JVRkJReXd3UWtGQk1FSXNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlNUTkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMGxCUXpsQ0xGRkJRVkVzUlVGQlJUdFJRVU5TTEcxQ1FVRnRRaXhGUVVGRkxEQkNRVUV3UWp0TFFVTm9SRHRKUVVORUxGRkJRVkVzUlVGQlJUdFJRVU5TTEdGQlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVVHRSUVVNeFFpeGpRVUZqTEVWQlFVVXNWMEZCVnp0TFFVTTFRanRKUVVORUxGVkJRVlVzUlVGQlJUdFJRVU5XTEZWQlFWVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNSVUZCUlN4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJReTlDTEZsQlFWa3NSVUZCUlN4bFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRek5ETEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOdVJDeFJRVUZSTEVWQlFVVXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVOdVF5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNelF5eGxRVUZsTEVWQlFVVXNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOcVJDeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRia1FzVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRia01zVDBGQlR5eEZRVUZGTEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRiRU03UTBGRFJpeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFYRkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1MwRkROVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCY1VJc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdEpRVU55UXl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUjBGQmVVSXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRNVVVzUjBGQlJ5eERRVUZETEVkQlFYbENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRGRFTTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFWZFVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NWVUZCVlR0UlFVTm1MRTFCUVUwc1NVRkJTU3hIUVVGelJDeG5Ra0ZCWjBJc1EwRkJRenRSUVVOcVJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzAxQlJVVTdTVUZEUml4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0a2FYTjBZVzVqWlUxbGRISnBZM045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ2UyTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3Vm1WamRHOXlMQ0JUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpJRDBnZTF4dUlDQW5WbVZqZEc5eUp6b2dlMXh1SUNBZ0lDZEZkV05zYVdSbFlXNUVhWE4wWVc1alpTYzZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCOUxGeHVJQ0FuVTNSeWFXNW5Kem9nZTF4dUlDQWdJQ2RNWlhabGJuTm9kR1ZwYmljNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNBZ0lDZEtZWEp2TFZkcGJtdHNaWEluT2lCcVlYSnZWMmx1YTJ4bGNpeGNiaUFnZlN4Y2JpQWdKMEpwZEVGeWNtRjVKem9nZTF4dUlDQWdJQ2RVWVc1cGJXOTBieWM2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVkdGdWFXMXZkRzhuWFN4Y2JpQWdJQ0FuUkdsalpTYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25SR2xqWlNkZExGeHVJQ0FnSUNkQmMzbHRiV1YwY21sakp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZEJjM2x0YldWMGNtbGpKMTBzWEc0Z0lDQWdKMEp5WVhWdUxVSnNZVzV4ZFdWMEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZENjbUYxYmkxQ2JHRnVjWFZsZENkZExGeHVJQ0FnSUNkRGIzTnBibVVuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjBOdmMybHVaU2RkTEZ4dUlDQWdJQ2RMZFd4amVubHVjMnRwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkTGRXeGplbmx1YzJ0cEoxMHNYRzRnSUNBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjAxakxVTnZibTVoZFdkb1pYa25YU3hjYmlBZ0lDQW5VbTluYjNRdFIyOXNaR0psY21jbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkoxSnZaMjkwTFVkdmJHUmlaWEpuSjEwc1hHNGdJQ0FnSjFKMWMzTmxiQ2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVW5WemMyVnNKMTBzWEc0Z0lDQWdKMU52YTJGc0p6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZFRiMnRoYkNkZExGeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSYmRtRnNJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwZ1BTQnJaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc0lIdDlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEhKcGJtZE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFOMGNtbHVaeWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjBKcGRFRnljbUY1SjEwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSk5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFabFkzUnZjaWRkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQU0I3WkdGMFlUb2djM1J5YVc1blcxMHNJRzFsZEhKcFl6b2dVM1J5YVc1blRXVjBjbWxqYzMwZ2ZDQjdaR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjMzBnZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0a1lYUmhPaUJDYVhSQmNuSmhlVnRkTENCdFpYUnlhV002SUVKcGRFRnljbUY1VFdWMGNtbGpjMzA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dlMXRyWlhrNklITjBjbWx1WjEwNklIdGJhMlY1TWpvZ2MzUnlhVzVuWFRvZ1JHbHpkR0Z1WTJWTlpYUnlhV045ZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnY21WMGRYSnVJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5sZXQgem9vbSA9IGZhbHNlO1xuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcUNvbCwgYXhlc05hbWVzLCBzY2F0dGVyVGl0bGUsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIHNpbWlsYXJpdHlNZXRyaWMsIG1ldGhvZE5hbWUsIHNlbVR5cGUsIHVuaXRzLCBzZXFTcGFjZUZ1bmMsIHNpbUZ1bmMsIHRvb2x0aXBEcmF3RnVuYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBNSU5fU0lNSUxBUklUWSA9IDgwO1xuICAgICAgICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCB7IGRpc3RhbmNlLCBjb29yZGluYXRlcyB9ID0geWllbGQgc2VxU3BhY2VGdW5jKHtcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBjb25zdCBkZlNlcSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCAnc2VxJywgc2VxQ29sLnRvTGlzdCgpKV0pO1xuICAgICAgICBjb25zdCBkaW0gPSBzZXFDb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBzaW1BcnIgPSBBcnJheShkaW0gLSAxKTtcbiAgICAgICAgaWYgKCFkaXN0YW5jZSlcbiAgICAgICAgICAgIHlpZWxkIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG4gICAgICAgIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG4gICAgICAgIGNvbnN0IHNpbVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2FsaVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgbjEgPSBbXTtcbiAgICAgICAgY29uc3QgbjIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2ltID0gc2ltQXJyW2ldLmdldChqKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOCAvIChzYWxpTWF4IC0gc2FsaU1pbik7XG4gICAgICAgIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuICAgICAgICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gICAgICAgIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgICAgICAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgICAgICAgICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICAgICAgICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICAgICAgICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgICAgICAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgICAgICAgICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICAgICAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSB7fTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPVxuICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG4gICAgICAgIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB6b29tID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnQWN0aXZpdHkgY2xpZmZzJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICAgIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcbiAgICAgICAgbGV0IHRpbWVyO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLCBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgem9vbUxlZnQsIHpvb21SaWdodCwgem9vbVRvcCwgem9vbUJvdHRvbSB9ID0gZ2V0Wm9vbUNvb3JkaW5hdGVzKHNwLnZpZXdwb3J0LndpZHRoLCBzcC52aWV3cG9ydC5oZWlnaHQsIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzBdKSwgc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pLCBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSksIHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzFdKSk7XG4gICAgICAgICAgICAgICAgICAgIHNwLnpvb20oem9vbUxlZnQsIHpvb21Ub3AsIHpvb21SaWdodCwgem9vbUJvdHRvbSk7XG4gICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB6b29tID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5hZGRQcm9wZXJ0eSgnc2ltaWxhcml0eUxpbWl0JywgJ2RvdWJsZScsIG9wdFNpbWlsYXJpdHlMaW1pdCk7XG4gICAgICAgIHJldHVybiBzcDtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldFpvb21Db29yZGluYXRlcyhXMCwgSDAsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgY29uc3QgVzEgPSBNYXRoLmFicyh4MSAtIHgyKTtcbiAgICBjb25zdCBIMSA9IE1hdGguYWJzKHkxIC0geTIpO1xuICAgIGNvbnN0IHNjYWxlVyA9IFcwIC8gVzE7XG4gICAgY29uc3Qgc2NhbGVIID0gSDAgLyBIMTtcbiAgICBjb25zdCBzY2FsZSA9IE1hdGgubWluKHNjYWxlVywgc2NhbGVIKTtcbiAgICBjb25zdCBXMiA9IChXMCAvIHNjYWxlKSAqIDU7XG4gICAgY29uc3QgSDIgPSAoSDAgLyBzY2FsZSkgKiA1O1xuICAgIGNvbnN0IGxlZnQgPSB4MSA8IHgyID8geDEgOiB4MjtcbiAgICBjb25zdCB0b3AgPSB5MSA+IHkyID8geTEgOiB5MjtcbiAgICBjb25zdCB6b29tTGVmdCA9IChsZWZ0ICsgVzEgLyAyKSAtIFcyIC8gMjtcbiAgICBjb25zdCB6b29tUmlnaHQgPSB6b29tTGVmdCArIFcyO1xuICAgIGNvbnN0IHpvb21Ub3AgPSAodG9wIC0gSDEgLyAyKSArIEgyIC8gMjtcbiAgICBjb25zdCB6b29tQm90dG9tID0gem9vbVRvcCAtIEgyO1xuICAgIHJldHVybiB7IHpvb21MZWZ0OiB6b29tTGVmdCwgem9vbVJpZ2h0OiB6b29tUmlnaHQsIHpvb21Ub3A6IHpvb21Ub3AsIHpvb21Cb3R0b206IHpvb21Cb3R0b20gfTtcbn1cbmZ1bmN0aW9uIGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzKSB7XG4gICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB4ID0gZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdDtcbiAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCBkaXN0ID0gTWF0aC5hYnMoTWF0aC5oeXBvdChsaW5lLmFbMF0gLSB4LCBsaW5lLmFbMV0gLSB5KSArXG4gICAgICAgICAgICBNYXRoLmh5cG90KGxpbmUuYlswXSAtIHgsIGxpbmUuYlsxXSAtIHkpIC0gTWF0aC5oeXBvdChsaW5lLmFbMF0gLSBsaW5lLmJbMF0sIGxpbmUuYVsxXSAtIGxpbmUuYlsxXSkpO1xuICAgICAgICBpZiAoZGlzdCA8IDIpXG4gICAgICAgICAgICByZXR1cm4gbGluZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZW5kZXJMaW5lcyhzcCwgeEF4aXMsIHlBeGlzLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbikge1xuICAgIGNvbnN0IGxpbmVzID0gbGluZXNSZXMubGluZXM7XG4gICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCB4ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHhBeGlzKTtcbiAgICBjb25zdCB5ID0gc3AuZGF0YUZyYW1lLmNvbHVtbnMuYnlOYW1lKHlBeGlzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBvaW50RnJvbSA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1swXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICAgICAgY29uc3QgcG9pbnRUbyA9IHNwLndvcmxkVG9TY3JlZW4oeC5nZXQobGluZXNbaV0ubW9sc1sxXSksIHkuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICAgICAgbGluZXNbaV0uYSA9IFtwb2ludEZyb20ueCwgcG9pbnRGcm9tLnldO1xuICAgICAgICBsaW5lc1tpXS5iID0gW3BvaW50VG8ueCwgcG9pbnRUby55XTtcbiAgICAgICAgY29uc3QgbGluZSA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgbGluZS5tb3ZlVG8obGluZXNbaV0uYVswXSwgbGluZXNbaV0uYVsxXSk7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gbGluZXNbaV0uc2VsZWN0ZWQgPyAnMjU1LDI1NSwwJyA6ICcwLDEyOCwwJztcbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IHNhbGlWYWxzW2ldID09PSBJbmZpbml0eSA/IDEgOiAwLjIgKyAoc2FsaVZhbHNbaV0gLSBzYWxpTWluKSAqIHNhbGlPcGFjaXR5Q29lZjtcbiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gYHJnYmEoJHtjb2xvcn0sJHtvcGFjaXR5fSlgO1xuICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZXNbaV0uaWQgPT09IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA/IDMgOiAxO1xuICAgICAgICBsaW5lLmxpbmVUbyhsaW5lc1tpXS5iWzBdLCBsaW5lc1tpXS5iWzFdKTtcbiAgICAgICAgY3R4LnN0cm9rZShsaW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuZnVuY3Rpb24gY3JlYXRlTGluZXMobjEsIG4yLCBzZXEsIGFjdGl2aXRpZXMsIHNhbGlWYWxzLCBzZW1UeXBlLCB1bml0cykge1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuMS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBudW0xID0gbjFbaV07XG4gICAgICAgIGNvbnN0IG51bTIgPSBuMltpXTtcbiAgICAgICAgbGluZXMucHVzaCh7IGlkOiBpLCBtb2xzOiBbbnVtMSwgbnVtMl0sIHNlbGVjdGVkOiBmYWxzZSwgYTogW10sIGI6IFtdIH0pO1xuICAgIH1cbiAgICBjb25zdCBsaW5lc0RmID0gREcuRGF0YUZyYW1lLmNyZWF0ZShsaW5lcy5sZW5ndGgpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzFfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMl9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ2FjdF9kaWZmJylcbiAgICAgICAgLmluaXQoKGkpID0+IE1hdGguYWJzKGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pIC0gYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1sxXSkpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3SW50KCdsaW5lX2luZGV4JykuaW5pdCgoaSkgPT4gaSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdzYWxpJykuaW5pdCgoaSkgPT4gc2FsaVZhbHNbaV0pO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykuc2VtVHlwZSA9IHNlbVR5cGU7XG4gICAgcmV0dXJuIHsgbGluZXMsIGxpbmVzRGYgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeChkaW0sIHNlcUNvbCwgZGZTZXEsIHNpbUFyciwgc2ltRnVuYykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGRpbSAtIDE7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gc2VxQ29sLmdldChpKTtcbiAgICAgICAgICAgIGRmU2VxLnJvd3MucmVtb3ZlQXQoMCwgMSwgZmFsc2UpO1xuICAgICAgICAgICAgc2ltQXJyW2ldID0gKHlpZWxkIHNpbUZ1bmMoZGZTZXEuY29sKCdzZXEnKSwgbW9sKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNpbUFycjtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZXMsIHNpbUFycikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltIC0gMTsgKytpKSB7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlBcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZGltOyArK2opXG4gICAgICAgICAgICBzaW1pbGFyaXR5QXJyLnB1c2goZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZXNbaV1bal0pKTtcbiAgICAgICAgc2ltQXJyW2ldID0gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkoJ3NpbWlsYXJpdHknLCBGbG9hdDMyQXJyYXkuZnJvbShzaW1pbGFyaXR5QXJyKSk7XG4gICAgfVxuICAgIHJldHVybiBzaW1BcnI7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZV04wYVhacGRIa3RZMnhwWm1aekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWVdOMGFYWnBkSGt0WTJ4cFptWnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdPenRCUVVGQkxFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU03UVVGRE1VTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVTjBReXhQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJSWFJETEU5QlFVOHNSVUZCUlN4NVFrRkJlVUlzUlVGQlJTeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJjME0zUml4SlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGRmFrSXNkMFZCUVhkRk8wRkJRM2hGTEUxQlFVMHNWVUZCWjBJc2FVSkJRV2xDTEVOQlEyNURMRVZCUVdkQ0xFVkJRMmhDTEUxQlFXbENMRVZCUTJwQ0xGTkJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEZWQlFYRkNMRVZCUTNKQ0xGVkJRV3RDTEVWQlEyeENMR2RDUVVGM1FpeEZRVU40UWl4VlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVN4RlFVTmlMRmxCUVRaRkxFVkJRemRGTEU5QlFXMUZMRVZCUTI1RkxHVkJRWEZFTEVWQlEzSkVMRTlCUVdFN08xRkJRMllzVFVGQlRTeDNRa0ZCZDBJc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRGRrTXNUVUZCVFN4alFVRmpMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSVEZDTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVVMVJpeE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhIUVVGSExFMUJRVTBzV1VGQldTeERRVUZETzFsQlEycEVMRTFCUVUwc1JVRkJSU3hOUVVGTk8xbEJRMlFzVlVGQlZTeEZRVUZGTEZWQlFWVTdXVUZEZEVJc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ08xbEJRMnhETEdOQlFXTXNSVUZCUlN4VFFVRlRPMWxCUTNwQ0xFOUJRVThzUlVGQlJTeFBRVUZQTzFOQlEycENMRU5CUVVNc1EwRkJRenRSUVVWSUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NWMEZCVnp0WlFVTXpRaXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWMFFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeExRVUZMTEVWQlFVVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hOUVVGTkxFZEJRV2RDTEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wTXNTVUZCU1N4RFFVRkRMRkZCUVZFN1dVRkRXQ3hOUVVGTkxHOUNRVUZ2UWl4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenM3V1VGRmFFVXNhVU5CUVdsRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVVelJDeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExITkNRVUZ6UWl4RFFVRkRPMUZCUld4RUxFMUJRVTBzVDBGQlR5eEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxGRkJRVkVzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hGUVVGRkxFZEJRV0VzUlVGQlJTeERRVUZETzFGQlEzaENMRTFCUVUwc1JVRkJSU3hIUVVGaExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5xUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdaMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZYTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlhKRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEd0Q1FVRnJRaXhGUVVGRk8yOUNRVU0zUWl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTllMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGJrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOeVJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPM2RDUVVOV0xGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdPM2RDUVVWb1F5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8ybENRVU16UWp0aFFVTkdPMU5CUTBZN1VVRkZSQ3hOUVVGTkxIVkNRVUYxUWl4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRGRrVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRGNrUXNUVUZCVFN4bFFVRmxMRWRCUVVjc1IwRkJSeXhIUVVGRExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUjJoRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXZReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNURMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkROVUlzWlVGQlpTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU0xUWl4bFFVRmxMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja01zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJReTlETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08yOUNRVVZvUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMjVETzFOQlEwWTdVVUZGUkN4TlFVRk5MRWxCUVVrc1IwRkJZeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlJXcEpMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlhKQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTTVReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnNSQ3hYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEWml4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFbEJRVWs3V1VGRGRFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1owSkJRV2RDTEVWQlFVVXNTMEZCU3p0WlFVTjJRaXhwUWtGQmFVSXNSVUZCUlN4TFFVRkxPMWxCUTNoQ0xHRkJRV0VzUlVGQlJTeERRVUZETzFsQlEyaENMR0ZCUVdFc1JVRkJSU3hGUVVGRk8xbEJRMnBDTEV0QlFVc3NSVUZCUlN4WlFVRlpPMU5CUTNCQ0xFTkJRVU1zUTBGQmVVSXNRMEZCUXp0UlFVVTFRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRlZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4UlFVRlJMRWRCUVVjc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1JVRkJSU3hSUVVGUkxFVkJRVVVzVDBGQlR5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTI1R0xFMUJRVTBzVVVGQlVTeEhRVUZSTEVWQlFVVXNRMEZCUXp0UlFVVjZRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZEYmtRc1RVRkJUU3hoUVVGaExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhPMmRDUVVONFFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRiRWdzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdXVUZETTBRc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xbEJRekZFTEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVklMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEYkVRc1NVRkJTU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSVHRuUWtGRE0wTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8yZENRVU01UkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0blFrRkRMMElzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPMjlDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dGhRVU01UWp0WlFVTkVMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFN2IwSkJRMW9zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEwZ3NWMEZCVnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hYUVVGWExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJUZEZMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTnlReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZTQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEZOQlFWTXNSVUZCUlN4SFFVRkhMRVZCUVVVN1dVRkRNMFVzVFVGQlRTeFpRVUZaTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhEUVVGRE8ybENRVU4yUkN4SFFVRkhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF6dHBRa0ZEY2tJc1NVRkJTU3hGUVVGRkxFTkJRVU03V1VGRFZpeFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRGVrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNSMEZCUnl4VlFVRlZMRU5CUVVNN1VVRkRNME1zWTBGQll5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRMnhETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU53UXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0UlFVVXZRaXhKUVVGSkxFdEJRWEZDTEVOQlFVTTdVVUZETVVJc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRV2xDTzFsQlF6bEVMRmxCUVZrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU53UWl4TFFVRkxMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEZUVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8zZENRVU4wUWl4TlFVRk5MR2xDUVVGcFFpeEhRVUZIT3pSQ1FVTjRRaXhSUVVGUkxFVkJRVVVzVVVGQlVUczBRa0ZEYkVJc1NVRkJTU3hGUVVGRkxFbEJRVWs3TkVKQlExWXNSVUZCUlN4RlFVRkZMRVZCUVVVN05FSkJRMDRzVFVGQlRTeEZRVUZGTEUxQlFVMDdORUpCUTJRc1VVRkJVU3hGUVVGRkxGVkJRVlU3TkVKQlEzQkNMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6czBRa0ZEYUVJc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNsQ1FVTnFRaXhEUVVGQk8zZENRVU5FTEdWQlFXVXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzNGQ1FVTndRenR2UWtGRFJDeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMmxDUVVOc1JUdFpRVU5JTEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOWUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlRMRXRCUVdsQ08xbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN1owSkJRM0pETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHR2UWtGRGFrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdiMEpCUXk5Q0xGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR2UWtGRmRrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8zZENRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0dlFrRkZOMElzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZETTBJc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVUczBRa0ZEV2l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU5LTzNGQ1FVRk5PMjlDUVVOTUxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJUdDNRa0ZET1VNc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenQzUWtGRGVrTXNSVUZCUlN4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVOb1F5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzNkQ1FVTnFSQ3hGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenR4UWtGRGFrUTdhVUpCUTBZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXh6UWtGQmMwSXNRMEZCUXp0aFFVTXZRaXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTm1MRTFCUVUwc1MwRkJTeXhIUVVGSExGZEJRVmNzUTBGQlF5eEZRVUZGTEVWQlF6RkNMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1VVRkJVU3hGUVVGRkxGRkJRVkVzUlVGQlJTeGxRVUZsTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkROVVVzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1RVRkJUU3hYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03WjBKQlF6RkVMRlZCUVZVc1EwRkJReXhIUVVGRkxFVkJRVVU3YjBKQlEySXNUVUZCVFN4RlFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNSVUZCUXl4SFFVRkhMR3RDUVVGclFpeERRVU51UlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGRGFrSXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFVkJRMnhDTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlEyNUVMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUTI1RUxFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRMjVFTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlEzQkVMRU5CUVVFN2IwSkJRMFFzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUTJRc1QwRkJUeXhGUVVOUUxGTkJRVk1zUlVGRFZDeFZRVUZWTEVOQlFVTXNRMEZCUXp0blFrRkRhRUlzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOU0xFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdZVUZEWkR0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVXdzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeFJRVUZSTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6dFJRVU5vUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOYUxFTkJRVU03UTBGQlFUdEJRVVZFTEZOQlFWTXNhMEpCUVd0Q0xFTkJRVU1zUlVGQlZTeEZRVUZGTEVWQlFWVXNSVUZCUlN4RlFVRlZMRVZCUVVVc1JVRkJWU3hGUVVGRkxFVkJRVlVzUlVGQlJTeEZRVUZWTzBsQlEyaEhMRTFCUVUwc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRemRDTEUxQlFVMHNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRka0lzVFVGQlRTeE5RVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOMlFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VSXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpWQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXk5Q0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUXpGRExFMUJRVTBzVTBGQlV5eEhRVUZITEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRhRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFZRVUZWTEVkQlFVY3NUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOb1F5eFBRVUZQTEVWQlFVTXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzVTBGQlV5eEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bEdMRU5CUVVNN1FVRkZSQ3hUUVVGVExHbENRVUZwUWl4RFFVRkRMRXRCUVZVc1JVRkJSU3hOUVVGWExFVkJRVVVzUzBGQll6dEpRVU5vUlN4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc1EwRkJRenRKUVVNMVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEY0VNc1RVRkJUU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wbEJRMjVETEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNTVUZCU1N4SFFVTlNMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnFSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU4yUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRE8xbEJRMVlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTMEZEWmp0SlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFTEZOQlFWTXNWMEZCVnl4RFFVRkRMRVZCUVhkQ0xFVkJRek5ETEV0QlFXRXNSVUZCUlN4TFFVRmhMRVZCUVVVc1VVRkJkMElzUlVGQlJTeFJRVUZyUWl4RlFVRkZMR1ZCUVhWQ0xFVkJRVVVzVDBGQlpUdEpRVU53U0N4TlFVRk5MRXRCUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVWQlFUaENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03U1VGRGJrVXNUVUZCVFN4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFUWkNMRU5CUVVNN1NVRkRhRVVzVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXpsRExFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4VFFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTTVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTnlReXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1R0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGNFTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hOUVVGTkxFVkJRVVVzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUXpGRUxFMUJRVTBzVDBGQlR5eEhRVUZITEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhIUVVGRExHVkJRV1VzUTBGQlF6dFJRVU0zUml4SFFVRkhMRU5CUVVNc1YwRkJWeXhIUVVGSExGRkJRVkVzUzBGQlN5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRPMUZCUXpsRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka1VzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRMnhDTzBsQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFhRVUZYTEVOQlEyeENMRVZCUVZrc1JVRkRXaXhGUVVGWkxFVkJRMW9zUjBGQll5eEZRVU5rTEZWQlFYRkNMRVZCUTNKQ0xGRkJRV3RDTEVWQlEyeENMRTlCUVdVc1JVRkRaaXhMUVVGaE8wbEJRMklzVFVGQlRTeExRVUZMTEVkQlFWa3NSVUZCUlN4RFFVRkRPMGxCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMUZCUTJ4RExFMUJRVTBzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrSXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJUdEpRVU5FTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1lzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNKR0xFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRlZCUVZVc1EwRkJRenRUUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1JITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETDBRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55UlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTnNSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVOc1JDeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJSU3hEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTVUZEZUVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJRM2hETEU5QlFVOHNSVUZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRExFTkJRVU03UVVGRE1VSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJaMElzYjBKQlFXOUNMRU5CUTNSRExFZEJRVmNzUlVGRFdDeE5RVUZwUWl4RlFVTnFRaXhMUVVGdFFpeEZRVU51UWl4TlFVRnRRaXhGUVVOdVFpeFBRVUZ0UlRzN1VVRkhja1VzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRha01zVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVVXNRMEZCUXp0VFFVTjBSRHRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1EwRkJRVHRCUVVWRUxFMUJRVTBzVlVGQlZTeHBRMEZCYVVNc1EwRkJReXhIUVVGWExFVkJRVVVzVTBGQmFVSXNSVUZCUlN4TlFVRnRRanRKUVVWdVJ5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVOb1F5eE5RVUZOTEdGQlFXRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRla0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRPMWxCUXpsQ0xHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF5eFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzaEdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnZXlCTllYUnlhWGdnZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZjMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpKenRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlRHbHVaU0I3WEc0Z0lHbGtPaUJ1ZFcxaVpYSTdYRzRnSUcxdmJITTZJRzUxYldKbGNsdGRPMXh1SUNCelpXeGxZM1JsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdZVG9nYm5WdFltVnlXMTA3SUM4dklGdDRMQ0I1WFZ4dUlDQmlPaUJ1ZFcxaVpYSmJYVHNnTHk4Z1czZ3NJSGxkWEc1OVhHNWNibWx1ZEdWeVptRmpaU0JKVW1WdVpHVnlaV1JNYVc1bGN5QjdYRzRnSUd4cGJtVnpPaUJKVEdsdVpWdGRPMXh1SUNCc2FXNWxjMFJtT2lCRVJ5NUVZWFJoUm5KaGJXVTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTWdlMXh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxGeHVJQ0FnSUcxbGRHaHZaRTVoYldVNklITjBjbWx1Wnl4Y2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJ6ZEhKcGJtY3NYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUhOMGNtbHVaMXRkTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5sY2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKVTJWeGRXVnVZMlZUY0dGalpWSmxjM1ZzZENCN1hHNGdJQ0FnWkdsemRHRnVZMlU2SUUxaGRISnBlRHRjYmlBZ0lDQmpiMjl5WkdsdVlYUmxjem9nUkVjdVEyOXNkVzF1VEdsemREdGNiaUFnZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbEVjbUYzVkc5dmJIUnBjRkJoY21GdGN5QjdYRzRnSUhSdmIyeDBhWEJ6T2lCaGJua3NYRzRnSUd4cGJtVTZJRWxNYVc1bExGeHVJQ0JrWmpvZ1JFY3VSR0YwWVVaeVlXMWxMRnh1SUNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Yml4Y2JpQWdZV04wYVhacGRIazZJRVJITGtOdmJIVnRiaXhjYmlBZ2VEb2diblZ0WW1WeUxGeHVJQ0I1T2lCdWRXMWlaWEpjYm4xY2JseHViR1YwSUhwdmIyMGdQU0JtWVd4elpUdGNibHh1THk4Z1UyVmhjbU5vWlhNZ1ptOXlJR0ZqZEdsMmFYUjVJR05zYVdabWN5QnBiaUJoSUdOb1pXMXBZMkZzSUdSaGRHRnpaWFFnWW5rZ2MyVnNaV04wWldRZ1kzVjBiMlptWEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwUVdOMGFYWnBkSGxEYkdsbVpuTW9YRzRnSUNBZ1pHWTZJRVJITGtSaGRHRkdjbUZ0WlN3Z1hHNGdJQ0FnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzSUZ4dUlDQWdJR0Y0WlhOT1lXMWxjem9nYzNSeWFXNW5XMTBzWEc0Z0lDQWdjMk5oZEhSbGNsUnBkR3hsT2lCemRISnBibWNzWEc0Z0lDQWdZV04wYVhacGRHbGxjem9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1T2lCdWRXMWlaWElzWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVTFsZEhKcFl6b2djM1J5YVc1bkxDQmNiaUFnSUNCdFpYUm9iMlJPWVcxbE9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhObGJWUjVjR1U2SUhOMGNtbHVaeXhjYmlBZ0lDQjFibWwwY3pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE5sY1ZOd1lXTmxSblZ1WXpvZ0tIQmhjbUZ0Y3pvZ1NWTmxjWFZsYm1ObFUzQmhZMlZRWVhKaGJYTXBJRDArSUZCeWIyMXBjMlU4U1ZObGNYVmxibU5sVTNCaFkyVlNaWE4xYkhRK0xGeHVJQ0FnSUhOcGJVWjFibU02SUNoamIydzZJRVJITGtOdmJIVnRiaXdnYlc5c09pQnpkSEpwYm1jcElEMCtJRkJ5YjIxcGMyVThSRWN1UTI5c2RXMXVJSHdnYm5Wc2JENHNYRzRnSUNBZ2RHOXZiSFJwY0VSeVlYZEdkVzVqT2lBb2NHRnlZVzF6T2lCSlJISmhkMVJ2YjJ4MGFYQlFZWEpoYlhNcElEMCtJSFp2YVdRc1hHNGdJQ0FnYjNCMGFXOXVjejg2SUdGdWVTa2dPaUJRY205dGFYTmxQRVJITGxacFpYZGxjajRnZTF4dUlDQmpiMjV6ZENCaGRYUnZiV0YwYVdOVGFXMXBiR0Z5YVhSNVRHbHRhWFFnUFNCbVlXeHpaVHRjYmlBZ1kyOXVjM1FnVFVsT1gxTkpUVWxNUVZKSlZGa2dQU0E0TUR0Y2JseHVJQ0JqYjI1emRDQnBibWwwYVdGc1UybHRhV3hoY21sMGVVeHBiV2wwSUQwZ1lYVjBiMjFoZEdsalUybHRhV3hoY21sMGVVeHBiV2wwSUQ4Z1RVbE9YMU5KVFVsTVFWSkpWRmtnT2lCemFXMXBiR0Z5YVhSNUlDOGdNVEF3TzF4dVhHNGdJR052Ym5OMElIdGthWE4wWVc1alpTd2dZMjl2Y21ScGJtRjBaWE45SUQwZ1lYZGhhWFFnYzJWeFUzQmhZMlZHZFc1aktIdGNiaUFnSUNCelpYRkRiMnc2SUhObGNVTnZiQ3hjYmlBZ0lDQnRaWFJvYjJST1lXMWxPaUJ0WlhSb2IyUk9ZVzFsTEZ4dUlDQWdJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSE5wYldsc1lYSnBkSGxOWlhSeWFXTXNYRzRnSUNBZ1pXMWlaV1JCZUdWelRtRnRaWE02SUdGNFpYTk9ZVzFsY3l4Y2JpQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpYRzRnSUgwcE8xeHVYRzRnSUdadmNpQW9ZMjl1YzNRZ1kyOXNJRzltSUdOdmIzSmthVzVoZEdWektWeHVJQ0FnSUdSbUxtTnZiSFZ0Ym5NdVlXUmtLR052YkNrN1hHNWNiaUFnWTI5dWMzUWdaR1pUWlhFZ1BTQkVSeTVFWVhSaFJuSmhiV1V1Wm5KdmJVTnZiSFZ0Ym5Nb1cwUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dKM05sY1Njc0lITmxjVU52YkM1MGIweHBjM1FvS1NsZEtUdGNiaUFnWTI5dWMzUWdaR2x0SUQwZ2MyVnhRMjlzTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYzJsdFFYSnlPaUJFUnk1RGIyeDFiVzViWFNBOUlFRnljbUY1S0dScGJTQXRJREVwTzF4dVhHNGdJR2xtSUNnaFpHbHpkR0Z1WTJVcFhHNGdJQ0FnWVhkaGFYUWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGdvWkdsdExDQnpaWEZEYjJ3c0lHUm1VMlZ4TENCemFXMUJjbklzSUhOcGJVWjFibU1wTzF4dUlDQmxiSE5sWEc0Z0lDQWdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGhHY205dFJHbHpkR0Z1WTJWektHUnBiU3dnWkdsemRHRnVZMlVzSUhOcGJVRnljaWs3WEc1Y2JpQWdZMjl1YzNRZ2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMElEMGdhVzVwZEdsaGJGTnBiV2xzWVhKcGRIbE1hVzFwZER0Y2JseHVJQ0JqYjI1emRDQnphVzFXWVd4ek9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCellXeHBWbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYmpFNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUc0eU9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUdScGJTQXRJREU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlDRTlJR1JwYlNBdElERWdMU0JwT3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElITnBiVG9nYm5WdFltVnlJRDBnYzJsdFFYSnlXMmxkTG1kbGRDaHFLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tITnBiU0ErUFNCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcElIdGNiaUFnSUNBZ0lDQWdiakV1Y0hWemFDaHBLVHRjYmlBZ0lDQWdJQ0FnYmpJdWNIVnphQ2hwSUNzZ2FpQXJJREVwTzF4dUlDQWdJQ0FnSUNCemFXMVdZV3h6TG5CMWMyZ29jMmx0S1R0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWkdsbVppQTlJRTFoZEdndVlXSnpLR0ZqZEdsMmFYUnBaWE11WjJWMEtHa3BJQzBnWVdOMGFYWnBkR2xsY3k1blpYUW9hU0FySUdvZ0t5QXhLU2s3WEc0Z0lDQWdJQ0FnSUdsbUlDaHphVzBnSVQwZ01TbGNiaUFnSUNBZ0lDQWdJQ0J6WVd4cFZtRnNjeTV3ZFhOb0tHUnBabVlnTHlBb01TQXRJSE5wYlNrcE8xeHVJQ0FnSUNBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0FnSUNBZ2MyRnNhVlpoYkhNdWNIVnphQ2hKYm1acGJtbDBlU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjMkZzYVZaaGJITlhhWFJvYjNWMFNXNW1hVzVwZEhrZ1BTQnpZV3hwVm1Gc2N5NW1hV3gwWlhJb2FYUWdQVDRnYVhRZ0lUMDlJRWx1Wm1sdWFYUjVLVHRjYmlBZ1kyOXVjM1FnYzJGc2FVMXBiaUE5SUUxaGRHZ3ViV2x1S0M0dUxuTmhiR2xXWVd4elYybDBhRzkxZEVsdVptbHVhWFI1S1R0Y2JpQWdZMjl1YzNRZ2MyRnNhVTFoZUNBOUlFMWhkR2d1YldGNEtDNHVMbk5oYkdsV1lXeHpWMmwwYUc5MWRFbHVabWx1YVhSNUtUdGNiaUFnWTI5dWMzUWdjMkZzYVU5d1lXTnBkSGxEYjJWbUlEMGdNQzQ0THloellXeHBUV0Y0SUMwZ2MyRnNhVTFwYmlrN1hHNWNibHh1SUNCamIyNXpkQ0J1WldsbmFHSnZkWEp6UTI5MWJuUWdQU0J1WlhjZ1FYSnlZWGtvWkdsdEtTNW1hV3hzS0RBcE8xeHVJQ0JqYjI1emRDQnphVzFwYkdGeWFYUjVRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dUlDQmpiMjV6ZENCellXeHBRMjkxYm5RZ1BTQnVaWGNnUVhKeVlYa29aR2x0S1M1bWFXeHNLREFwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJQ0U5SUc0eExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdibVZwWjJoaWIzVnljME52ZFc1MFcyNHhXMmxkWFNBclBTQXhPMXh1SUNBZ0lHNWxhV2RvWW05MWNuTkRiM1Z1ZEZ0dU1sdHBYVjBnS3owZ01UdGNiaUFnSUNCemFXMXBiR0Z5YVhSNVEyOTFiblJiYmpGYmFWMWRJQ3M5SUhOcGJWWmhiSE5iYVYwN1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6YVcxV1lXeHpXMmxkTzF4dUlDQWdJR2xtSUNoellXeHBWbUZzYzF0cFhTQWhQU0JKYm1acGJtbDBlU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHRmpkR2wyYVhScFpYTXVaMlYwS0c0eFcybGRLU0ErSUdGamRHbDJhWFJwWlhNdVoyVjBLRzR5VzJsZEtTbGNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR4VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdjMkZzYVVOdmRXNTBXMjR5VzJsZFhTQXJQU0J6WVd4cFZtRnNjMXRwWFR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J6WVd4cE9pQkVSeTVEYjJ4MWJXNGdQU0JFUnk1RGIyeDFiVzR1Wm5KdmJVeHBjM1FvSjJSdmRXSnNaU2NzSUdCellXeHBYeVI3WVhobGMwNWhiV1Z6V3pCZExuTjFZbk4wY21sdVp5aGhlR1Z6VG1GdFpYTmJNRjB1YkdGemRFbHVaR1Y0VDJZb0oxOG5LU2w5WUN3Z2MyRnNhVU52ZFc1MEtUdGNibHh1SUNCa1ppNWpiMngxYlc1ekxtRmtaQ2h6WVd4cEtUdGNibHh1SUNCamIyNXpkQ0IyYVdWM0lEMGdaM0p2YXk1emFHVnNiQzVuWlhSVVlXSnNaVlpwWlhjb1pHWXVibUZ0WlNrN1hHNGdJR052Ym5OMElITndJRDBnZG1sbGR5NWhaR1JXYVdWM1pYSW9SRWN1Vm1sbGQyVnlMbk5qWVhSMFpYSlFiRzkwS0dSbUxDQjdYRzRnSUNBZ2VFTnZiSFZ0Yms1aGJXVTZJR0Y0WlhOT1lXMWxjMXN3WFN4Y2JpQWdJQ0I1UTI5c2RXMXVUbUZ0WlRvZ1lYaGxjMDVoYldWeld6RmRMRnh1SUNBZ0lITnBlbVU2SUhOaGJHa3VibUZ0WlN4Y2JpQWdJQ0JqYjJ4dmNqb2dZV04wYVhacGRHbGxjeTV1WVcxbExGeHVJQ0FnSUhOb2IzZFlVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFpVMlZzWldOMGIzSTZJR1poYkhObExGeHVJQ0FnSUhOb2IzZFRhWHBsVTJWc1pXTjBiM0k2SUdaaGJITmxMRnh1SUNBZ0lITm9iM2REYjJ4dmNsTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J0WVhKclpYSk5hVzVUYVhwbE9pQTFMRnh1SUNBZ0lHMWhjbXRsY2sxaGVGTnBlbVU2SURJMUxGeHVJQ0FnSUhScGRHeGxPaUJ6WTJGMGRHVnlWR2wwYkdWY2JpQWdmU2twSUdGeklFUkhMbE5qWVhSMFpYSlFiRzkwVm1sbGQyVnlPMXh1WEc0Z0lHTnZibk4wSUdOaGJuWmhjeUE5SUNoemNDNW5aWFJKYm1adktDa2dZWE1nWVc1NUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR3hwYm1WelVtVnpJRDBnWTNKbFlYUmxUR2x1WlhNb2JqRXNJRzR5TENCelpYRkRiMndzSUdGamRHbDJhWFJwWlhNc0lITmhiR2xXWVd4ekxDQnpaVzFVZVhCbExDQjFibWwwY3lrN1hHNGdJR052Ym5OMElIUnZiMngwYVhCek9pQmhibmtnUFNCN2ZUdGNibHh1SUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG05dVEzVnljbVZ1ZEVObGJHeERhR0Z1WjJWa0xuTjFZbk5qY21saVpTZ29LU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdZM1Z5Y21WdWRFMXZiRWxrZUNBOUlHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEVOdmJDQW1KaUJzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUkRiMnd1Ym1GdFpTQTlQVDBnSnpKZmMyVnhKeUEvSURFZ09pQXdPMXh1SUNBZ0lITndMbVJoZEdGR2NtRnRaUzVqZFhKeVpXNTBVbTkzU1dSNElEMWNiaUFnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0FoUFQwZ0xURWdQeUJzYVc1bGMxSmxjeTVzYVc1bGMxdHNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGhkTG0xdmJITmJZM1Z5Y21WdWRFMXZiRWxrZUYwZ09pQXRNVHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0FoYkdsdVpYTlNaWE11YkdsdVpYTmJNRjB1YzJWc1pXTjBaV1FwTzF4dUlDQWdJSE53TG1SaGRHRkdjbUZ0WlM1elpXeGxZM1JwYjI0dWMyVjBLREFzSUd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0JzYVc1bGMwUm1SM0pwWkM1cGJuWmhiR2xrWVhSbEtDazdYRzRnSUgwcE8xeHVYRzRnSUd4cGJtVnpVbVZ6TG14cGJtVnpSR1l1YjI1VFpXeGxZM1JwYjI1RGFHRnVaMlZrTG5OMVluTmpjbWxpWlNnb1h5a2dQVDRnZTF4dUlDQWdJR2xtSUNoc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG0xdmRYTmxUM1psY2xKdmQwbGtlQ0FoUFQwZ0xURXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMXRzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbTF2ZFhObFQzWmxjbEp2ZDBsa2VGMDdYRzRnSUNBZ0lDQnNhVzVsTG5ObGJHVmpkR1ZrSUQwZ0lXeHBibVV1YzJWc1pXTjBaV1E3WEc0Z0lDQWdJQ0JwWmlBb0lXeHBibVV1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dUlDQWdJSDFjYmlBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsY3k1bWIzSkZZV05vS0Noc0tTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2JDNXpaV3hsWTNSbFpDbGNiaUFnSUNBZ0lDQWdiQzV0YjJ4ekxtWnZja1ZoWTJnb0tHMHBJRDArSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFFvYlN3Z2RISjFaU2twTzF4dUlDQWdJSDBwTzF4dUlDQWdJR3hwYm1WelJHWkhjbWxrTG1sdWRtRnNhV1JoZEdVb0tUdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdiR2x1WlhORVprZHlhV1FnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5Cc2IzUXVaM0pwWkNncExuTnZjblFvV3lkaFkzUmZaR2xtWmlkZExDQmJabUZzYzJWZEtUdGNibHh1SUNCc2FXNWxjMFJtUjNKcFpDNXZia05sYkd4RGJHbGpheTV6ZFdKelkzSnBZbVVvS0NrZ1BUNGdlMXh1SUNBZ0lIcHZiMjBnUFNCMGNuVmxPMXh1SUNCOUtUdGNibHh1SUNCamIyNXpkQ0JzYVhOMFEyeHBabVp6VEdsdWF5QTlJSFZwTG1KMWRIUnZiaWhnSkh0c2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5KdmQwTnZkVzUwZlNCamJHbG1abk5nTENBb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kyeHBabVp6UkdsaGJHOW5JRDBnZFdrdVpHbGhiRzluS0h0MGFYUnNaVG9nSjBGamRHbDJhWFI1SUdOc2FXWm1jeWQ5S1Z4dUlDQWdJQ0FnTG1Ga1pDaHNhVzVsYzBSbVIzSnBaQzV5YjI5MEtWeHVJQ0FnSUNBZ0xuTm9iM2NvS1R0Y2JpQWdJQ0JqYkdsbVpuTkVhV0ZzYjJjdWNtOXZkQzVwWkNBOUlDZGpiR2xtWm5OZlpHbGhiRzluSnp0Y2JpQWdmU2s3WEc0Z0lHeHBjM1JEYkdsbVpuTk1hVzVyTG5OMGVXeGxMbkJ2YzJsMGFXOXVJRDBnSjJGaWMyOXNkWFJsSnp0Y2JpQWdiR2x6ZEVOc2FXWm1jMHhwYm1zdWMzUjViR1V1ZEc5d0lEMGdKekV3Y0hnbk8xeHVJQ0JzYVhOMFEyeHBabVp6VEdsdWF5NXpkSGxzWlM1eWFXZG9kQ0E5SUNjeE1IQjRKenRjYmlBZ2MzQXVjbTl2ZEM1aGNIQmxibVFvYkdsemRFTnNhV1ptYzB4cGJtc3BPMXh1WEc0Z0lHeGxkQ0IwYVcxbGNqb2dUbTlrWlVwVExsUnBiV1Z2ZFhRN1hHNGdJR05oYm5aaGN5NWhaR1JGZG1WdWRFeHBjM1JsYm1WeUtDZHRiM1Z6WlcxdmRtVW5MQ0JtZFc1amRHbHZiaUFvWlhabGJuUTZJRTF2ZFhObFJYWmxiblFwSUh0Y2JpQWdJQ0JqYkdWaGNsUnBiV1Z2ZFhRb2RHbHRaWElwTzF4dUlDQWdJSFJwYldWeUlEMGdaMnh2WW1Gc0xuTmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiR2x1WlNBOUlHTm9aV05yUTNWeWMyOXlUMjVNYVc1bEtHVjJaVzUwTENCallXNTJZWE1zSUd4cGJtVnpVbVZ6TG14cGJtVnpLVHRjYmlBZ0lDQWdJR2xtSUNoc2FXNWxJQ1ltSUdSbUxtMXZkWE5sVDNabGNsSnZkMGxrZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwYjI5c2RHbHdjMXRzYVc1bExtbGtYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdSeVlYZFViMjlzZEdsd1VHRnlZVzF6SUQwZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5dmJIUnBjSE02SUhSdmIyeDBhWEJ6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiR2x1WlRvZ2JHbHVaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHUm1PaUJrWml4Y2JpQWdJQ0FnSUNBZ0lDQWdJSE5sY1VOdmJEb2djMlZ4UTI5c0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdOMGFYWnBkSGs2SUdGamRHbDJhWFJwWlhNc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I0T2lCbGRtVnVkQzVqYkdsbGJuUllMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VUb2daWFpsYm5RdVkyeHBaVzUwV1Z4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0IwYjI5c2RHbHdSSEpoZDBaMWJtTW9aSEpoZDFSdmIyeDBhWEJRWVhKaGJYTXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhWcExuUnZiMngwYVhBdWMyaHZkeWgwYjI5c2RHbHdjMXRzYVc1bExtbGtYU3dnWlhabGJuUXVZMnhwWlc1MFdDd2daWFpsYm5RdVkyeHBaVzUwV1NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN3Z01UQXdNQ2s3WEc0Z0lIMHBPMXh1WEc0Z0lHTmhiblpoY3k1aFpHUkZkbVZ1ZEV4cGMzUmxibVZ5S0NkdGIzVnpaV1J2ZDI0bkxDQm1kVzVqZEdsdmJpaGxkbVZ1ZERvZ1RXOTFjMlZGZG1WdWRDa2dlMXh1SUNBZ0lHTnZibk4wSUd4cGJtVWdQU0JqYUdWamEwTjFjbk52Y2s5dVRHbHVaU2hsZG1WdWRDd2dZMkZ1ZG1GekxDQnNhVzVsYzFKbGN5NXNhVzVsY3lrN1hHNGdJQ0FnYVdZZ0tHeHBibVVnSmlZZ1pHWXViVzkxYzJWUGRtVnlVbTkzU1dSNElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR1YyWlc1MExtTjBjbXhMWlhrcElIdGNiaUFnSUNBZ0lDQWdiR2x1WlM1elpXeGxZM1JsWkNBOUlDRnNhVzVsTG5ObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG5ObGJHVmpkR2x2Ymk1elpYUW9iR2x1WlM1cFpDd2diR2x1WlM1elpXeGxZM1JsWkNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0NGc2FXNWxMbk5sYkdWamRHVmtLVnh1SUNBZ0lDQWdJQ0FnSUdSbUxuTmxiR1ZqZEdsdmJpNXpaWFJCYkd3b1ptRnNjMlVwTzF4dVhHNGdJQ0FnSUNBZ0lHeHBibVZ6VW1WekxteHBibVZ6TG1admNrVmhZMmdvS0d3cElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9iQzV6Wld4bFkzUmxaQ2xjYmlBZ0lDQWdJQ0FnSUNBZ0lHd3ViVzlzY3k1bWIzSkZZV05vS0NodEtTQTlQaUJrWmk1elpXeGxZM1JwYjI0dWMyVjBLRzBzSUhSeWRXVXBLVHRjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCcFppQW9iR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFVtOTNTV1I0SUNFOVBTQnNhVzVsTG1sa0tTQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEMGdiR2x1WlM1cFpEdGNiaUFnSUNBZ0lDQWdJQ0JrWmk1amRYSnlaVzUwVW05M1NXUjRJRDBnYkdsdVpTNXRiMnh6V3pCZE8xeHVJQ0FnSUNBZ0lDQWdJR1JtTG5ObGJHVmpkR2x2Ymk1elpYUW9NQ3dnSVd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtEQXNJR3hwYm1WelVtVnpMbXhwYm1Weld6QmRMbk5sYkdWamRHVmtLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTazdYRzVjYmlBZ2MzQXViMjVGZG1WdWRDZ25aRFF0WW1WbWIzSmxMV1J5WVhjdGMyTmxibVVuS1Z4dUlDQWdJQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVZ6SUQwZ2NtVnVaR1Z5VEdsdVpYTW9jM0FzWEc0Z0lDQWdJQ0FnSUdGNFpYTk9ZVzFsYzFzd1hTd2dZWGhsYzA1aGJXVnpXekZkTENCc2FXNWxjMUpsY3l3Z2MyRnNhVlpoYkhNc0lITmhiR2xQY0dGamFYUjVRMjlsWml3Z2MyRnNhVTFwYmlrN1hHNGdJQ0FnSUNCcFppQW9lbTl2YlNrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamRYSnlaVzUwVEdsdVpTQTlJR3hwYm1WelcyeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlRjA3WEc0Z0lDQWdJQ0FnSUhObGRGUnBiV1Z2ZFhRb0tDazlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZTNwdmIyMU1aV1owTENCNmIyOXRVbWxuYUhRc0lIcHZiMjFVYjNBc0lIcHZiMjFDYjNSMGIyMTlJRDBnWjJWMFdtOXZiVU52YjNKa2FXNWhkR1Z6S0Z4dUlDQWdJQ0FnSUNBZ0lDQWdjM0F1ZG1sbGQzQnZjblF1ZDJsa2RHZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNTJhV1YzY0c5eWRDNW9aV2xuYUhRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN3WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzd1hTa3NYRzRnSUNBZ0lDQWdJQ0FnSUNCemNDNWtZWFJoUm5KaGJXVXVaMlYwS0dGNFpYTk9ZVzFsYzFzeFhTd2dZM1Z5Y21WdWRFeHBibVV1Ylc5c2Mxc3dYU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1WjJWMEtHRjRaWE5PWVcxbGMxc3dYU3dnWTNWeWNtVnVkRXhwYm1VdWJXOXNjMXN4WFNrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdVoyVjBLR0Y0WlhOT1lXMWxjMXN4WFN3Z1kzVnljbVZ1ZEV4cGJtVXViVzlzYzFzeFhTbGNiaUFnSUNBZ0lDQWdJQ0FwSUNBZ0lDQWdJQ0JjYmlBZ0lDQWdJQ0FnSUNCemNDNTZiMjl0S0hwdmIyMU1aV1owTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlbTl2YlZSdmNDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhwdmIyMVNhV2RvZEN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSHB2YjIxQ2IzUjBiMjBwTzF4dUlDQWdJQ0FnSUNCOUxDQXpNREFwTzF4dUlDQWdJQ0FnSUNCNmIyOXRJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ2MzQXVZV1JrVUhKdmNHVnlkSGtvSjNOcGJXbHNZWEpwZEhsTWFXMXBkQ2NzSUNka2IzVmliR1VuTENCdmNIUlRhVzFwYkdGeWFYUjVUR2x0YVhRcE8xeHVJQ0J5WlhSMWNtNGdjM0E3WEc1OVhHNWNibVoxYm1OMGFXOXVJR2RsZEZwdmIyMURiMjl5WkdsdVlYUmxjeWhYTURvZ2JuVnRZbVZ5TENCSU1Eb2diblZ0WW1WeUxDQjRNVG9nYm5WdFltVnlMQ0I1TVRvZ2JuVnRZbVZ5TENCNE1qb2diblZ0WW1WeUxDQjVNam9nYm5WdFltVnlLU0I3WEc0Z0lHTnZibk4wSUZjeElEMGdUV0YwYUM1aFluTW9lREVnTFNCNE1pazdYRzRnSUdOdmJuTjBJRWd4SUQwZ1RXRjBhQzVoWW5Nb2VURWdMU0I1TWlrN1hHNGdJR052Ym5OMElITmpZV3hsVnlBOUlGY3dJQzhnVnpFN1hHNGdJR052Ym5OMElITmpZV3hsU0NBOUlFZ3dJQzhnU0RFN1hHNGdJR052Ym5OMElITmpZV3hsSUQwZ1RXRjBhQzV0YVc0b2MyTmhiR1ZYTENCelkyRnNaVWdwTzF4dUlDQmpiMjV6ZENCWE1pQTlJQ2hYTUNBdklITmpZV3hsS1NBcUlEVTdYRzRnSUdOdmJuTjBJRWd5SUQwZ0tFZ3dJQzhnYzJOaGJHVXBJQ29nTlR0Y2JpQWdZMjl1YzNRZ2JHVm1kQ0E5SUhneElEd2dlRElnUHlCNE1TQTZJSGd5TzF4dUlDQmpiMjV6ZENCMGIzQWdQU0I1TVNBK0lIa3lJRDhnZVRFZ09pQjVNanRjYmlBZ1kyOXVjM1FnZW05dmJVeGxablFnUFNBb2JHVm1kQ0FySUZjeElDOGdNaWtnTFNCWE1pQXZJREk3WEc0Z0lHTnZibk4wSUhwdmIyMVNhV2RvZENBOUlIcHZiMjFNWldaMElDc2dWekk3WEc0Z0lHTnZibk4wSUhwdmIyMVViM0FnUFNBb2RHOXdJQzBnU0RFZ0x5QXlLU0FySUVneUlDOGdNanRjYmlBZ1kyOXVjM1FnZW05dmJVSnZkSFJ2YlNBOUlIcHZiMjFVYjNBZ0xTQklNanRjYmlBZ2NtVjBkWEp1SUh0NmIyOXRUR1ZtZERvZ2VtOXZiVXhsWm5Rc0lIcHZiMjFTYVdkb2REb2dlbTl2YlZKcFoyaDBMQ0I2YjI5dFZHOXdPaUI2YjI5dFZHOXdMQ0I2YjI5dFFtOTBkRzl0T2lCNmIyOXRRbTkwZEc5dGZUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kyaGxZMnREZFhKemIzSlBia3hwYm1Vb1pYWmxiblE2SUdGdWVTd2dZMkZ1ZG1Gek9pQmhibmtzSUd4cGJtVnpPaUJKVEdsdVpWdGRLVG9nU1V4cGJtVWdmQ0J1ZFd4c0lIdGNiaUFnWTI5dWMzUWdjbVZqZENBOUlHTmhiblpoY3k1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVHRjYmlBZ1kyOXVjM1FnZUNBOUlHVjJaVzUwTG1Oc2FXVnVkRmdnTFNCeVpXTjBMbXhsWm5RN1hHNGdJR052Ym5OMElIa2dQU0JsZG1WdWRDNWpiR2xsYm5SWklDMGdjbVZqZEM1MGIzQTdYRzRnSUdadmNpQW9ZMjl1YzNRZ2JHbHVaU0J2WmlCc2FXNWxjeWtnZTF4dUlDQWdJR052Ym5OMElHUnBjM1FnUFZ4dUlDQWdJQ0FnVFdGMGFDNWhZbk1vVFdGMGFDNW9lWEJ2ZENoc2FXNWxMbUZiTUYwZ0xTQjRMQ0JzYVc1bExtRmJNVjBnTFNCNUtTQXJYRzRnSUNBZ0lDQk5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlsc3dYU0F0SUhnc0lHeHBibVV1WWxzeFhTQXRJSGtwSUMwZ1RXRjBhQzVvZVhCdmRDaHNhVzVsTG1GYk1GMGdMU0JzYVc1bExtSmJNRjBzSUd4cGJtVXVZVnN4WFNBdElHeHBibVV1WWxzeFhTa3BPMXh1SUNBZ0lHbG1JQ2hrYVhOMElEd2dNaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQnNhVzVsTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ1ZFd4c08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCeVpXNWtaWEpNYVc1bGN5aHpjRG9nUkVjdVUyTmhkSFJsY2xCc2IzUldhV1YzWlhJc1hHNGdJSGhCZUdsek9pQnpkSEpwYm1jc0lIbEJlR2x6T2lCemRISnBibWNzSUd4cGJtVnpVbVZ6T2lCSlVtVnVaR1Z5WldSTWFXNWxjeXdnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkTENCellXeHBUM0JoWTJsMGVVTnZaV1k2SUc1MWJXSmxjaXdnYzJGc2FVMXBiam9nYm5WdFltVnlLVG9nU1V4cGJtVWdXMTBnZTF4dUlDQmpiMjV6ZENCc2FXNWxjeUE5SUd4cGJtVnpVbVZ6TG14cGJtVnpPMXh1SUNCamIyNXpkQ0JqWVc1MllYTWdQU0FvYzNBdVoyVjBTVzVtYnlncElHRnpJSHRiYVc1a1pYZzZJSE4wY21sdVoxMGdPaUJoYm5sOUtWc25ZMkZ1ZG1GekoxMDdYRzRnSUdOdmJuTjBJR04wZUNBOUlHTmhiblpoY3k1blpYUkRiMjUwWlhoMEtDY3laQ2NwSUdGeklFTmhiblpoYzFKbGJtUmxjbWx1WjBOdmJuUmxlSFF5UkR0Y2JpQWdZMjl1YzNRZ2VDQTlJSE53TG1SaGRHRkdjbUZ0WlNFdVkyOXNkVzF1Y3k1aWVVNWhiV1VvZUVGNGFYTXBPMXh1SUNCamIyNXpkQ0I1SUQwZ2MzQXVaR0YwWVVaeVlXMWxJUzVqYjJ4MWJXNXpMbUo1VG1GdFpTaDVRWGhwY3lrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdsdVpYTXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0JqYjI1emRDQndiMmx1ZEVaeWIyMGdQU0J6Y0M1M2IzSnNaRlJ2VTJOeVpXVnVLSGd1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcExDQjVMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjRzlwYm5SVWJ5QTlJSE53TG5kdmNteGtWRzlUWTNKbFpXNG9lQzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrc0lIa3VaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdJQ0JzYVc1bGMxdHBYUzVoSUQwZ1czQnZhVzUwUm5KdmJTNTRMQ0J3YjJsdWRFWnliMjB1ZVYwN1hHNGdJQ0FnYkdsdVpYTmJhVjB1WWlBOUlGdHdiMmx1ZEZSdkxuZ3NJSEJ2YVc1MFZHOHVlVjA3WEc0Z0lDQWdZMjl1YzNRZ2JHbHVaU0E5SUc1bGR5QlFZWFJvTWtRb0tUdGNiaUFnSUNCc2FXNWxMbTF2ZG1WVWJ5aHNhVzVsYzF0cFhTNWhXekJkTENCc2FXNWxjMXRwWFM1aFd6RmRLVHRjYmlBZ0lDQmpiMjV6ZENCamIyeHZjaUE5SUd4cGJtVnpXMmxkTG5ObGJHVmpkR1ZrSUQ4Z0p6STFOU3d5TlRVc01DY2dPaUFuTUN3eE1qZ3NNQ2M3WEc0Z0lDQWdZMjl1YzNRZ2IzQmhZMmwwZVNBOUlITmhiR2xXWVd4elcybGRJRDA5UFNCSmJtWnBibWwwZVNBL0lERWdPaUF3TGpJZ0t5QW9jMkZzYVZaaGJITmJhVjBnTFNCellXeHBUV2x1S1NwellXeHBUM0JoWTJsMGVVTnZaV1k3WEc0Z0lDQWdZM1I0TG5OMGNtOXJaVk4wZVd4bElEMGdZSEpuWW1Fb0pIdGpiMnh2Y24wc0pIdHZjR0ZqYVhSNWZTbGdPMXh1SUNBZ0lHTjBlQzVzYVc1bFYybGtkR2dnUFNCc2FXNWxjMXRwWFM1cFpDQTlQVDBnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBVbTkzU1dSNElEOGdNeUE2SURFN1hHNGdJQ0FnYkdsdVpTNXNhVzVsVkc4b2JHbHVaWE5iYVYwdVlsc3dYU3dnYkdsdVpYTmJhVjB1WWxzeFhTazdYRzRnSUNBZ1kzUjRMbk4wY205clpTaHNhVzVsS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYkdsdVpYTTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlHTnlaV0YwWlV4cGJtVnpLRnh1SUNCdU1Ub2diblZ0WW1WeVcxMHNJRnh1SUNCdU1qb2diblZ0WW1WeVcxMHNJRnh1SUNCelpYRTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lHRmpkR2wyYVhScFpYTTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lITmhiR2xXWVd4ek9pQnVkVzFpWlhKYlhTeGNiaUFnYzJWdFZIbHdaVG9nYzNSeWFXNW5MRnh1SUNCMWJtbDBjem9nYzNSeWFXNW5LU0E2SUVsU1pXNWtaWEpsWkV4cGJtVnpJSHRjYmlBZ1kyOXVjM1FnYkdsdVpYTTZJRWxNYVc1bFcxMGdQU0JiWFR0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1TVM1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lHTnZibk4wSUc1MWJURWdQU0J1TVZ0cFhUdGNiaUFnSUNCamIyNXpkQ0J1ZFcweUlEMGdiakpiYVYwN1hHNGdJQ0FnYkdsdVpYTXVjSFZ6YUNoN2FXUTZJR2tzSUcxdmJITTZJRnR1ZFcweExDQnVkVzB5WFN3Z2MyVnNaV04wWldRNklHWmhiSE5sTENCaE9pQmJYU3dnWWpvZ1cxMTlLVHRjYmlBZ2ZWeHVJQ0JqYjI1emRDQnNhVzVsYzBSbUlEMGdSRWN1UkdGMFlVWnlZVzFsTG1OeVpXRjBaU2hzYVc1bGN5NXNaVzVuZEdncE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1UzUnlhVzVuS0NjeFgzTmxjU2NwTG1sdWFYUW9LR2s2SUc1MWJXSmxjaWtnUFQ0Z2MyVnhMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekJkS1NrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkVGRISnBibWNvSnpKZmMyVnhKeWt1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCelpYRXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNVjBwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2RoWTNSZlpHbG1aaWNwWEc0Z0lDQWdMbWx1YVhRb0tHazZJRzUxYldKbGNpa2dQVDRnVFdGMGFDNWhZbk1vWVdOMGFYWnBkR2xsY3k1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzd1hTa2dMU0JoWTNScGRtbDBhV1Z6TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pGZEtTa3BPMXh1SUNCc2FXNWxjMFJtTG1OdmJIVnRibk11WVdSa1RtVjNTVzUwS0Nkc2FXNWxYMmx1WkdWNEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDBac2IyRjBLQ2R6WVd4cEp5a3VhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJ6WVd4cFZtRnNjMXRwWFNrN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeVgzTmxjU2NwSVM1MFlXZHpXMFJITGxSQlIxTXVWVTVKVkZOZElEMGdkVzVwZEhNN1hHNGdJR3hwYm1WelJHWXVZMjlzS0NjeFgzTmxjU2NwSVM1elpXMVVlWEJsSUQwZ2MyVnRWSGx3WlR0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpKZmMyVnhKeWtoTG5ObGJWUjVjR1VnUFNCelpXMVVlWEJsTzF4dUlDQnlaWFIxY200Z2UyeHBibVZ6TENCc2FXNWxjMFJtZlR0Y2JuMWNibHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRLRnh1SUNBZ0lHUnBiVG9nYm5WdFltVnlMQ0JjYmlBZ0lDQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpd2dYRzRnSUNBZ1pHWlRaWEU2SUVSSExrUmhkR0ZHY21GdFpTd2dYRzRnSUNBZ2MybHRRWEp5T2lCRVJ5NURiMngxYlc1YlhTeGNiaUFnSUNCemFXMUdkVzVqT2lBb1kyOXNPaUJFUnk1RGIyeDFiVzRzSUcxdmJEb2djM1J5YVc1bktTQTlQaUJRY205dGFYTmxQRVJITGtOdmJIVnRiaUI4SUc1MWJHdytYRzRnSUNBZ0tWeHVJQ0E2SUZCeWIyMXBjMlU4UkVjdVEyOXNkVzF1VzEwK0lIdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnSVQwZ1pHbHRJQzBnTVRzZ0t5dHBLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JXOXNJRDBnYzJWeFEyOXNMbWRsZENocEtUdGNiaUFnSUNCa1psTmxjUzV5YjNkekxuSmxiVzkyWlVGMEtEQXNJREVzSUdaaGJITmxLVHRjYmlBZ0lDQnphVzFCY25KYmFWMGdQU0FvWVhkaGFYUWdjMmx0Um5WdVl5aGtabE5sY1M1amIyd29KM05sY1NjcElTd2diVzlzS1NraE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXMUJjbkk3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFJwWlhOTllYSnBlRVp5YjIxRWFYTjBZVzVqWlhNb1pHbHRPaUJ1ZFcxaVpYSXNJR1JwYzNSaGJtTmxjem9nVFdGMGNtbDRMQ0J6YVcxQmNuSTZJRVJITGtOdmJIVnRibHRkS1Z4dUlDQTZJRVJITGtOdmJIVnRibHRkSUh0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCamIyNXpkQ0J6YVcxcGJHRnlhWFI1UVhKeUlEMGdXMTA3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z1pHbHRPeUFySzJvcFhHNGdJQ0FnSUNCemFXMXBiR0Z5YVhSNVFYSnlMbkIxYzJnb1oyVjBVMmx0YVd4aGNtbDBlVVp5YjIxRWFYTjBZVzVqWlNoa2FYTjBZVzVqWlhOYmFWMWJhbDBwS1R0Y2JpQWdJQ0J6YVcxQmNuSmJhVjBnUFNCRVJ5NURiMngxYlc0dVpuSnZiVVpzYjJGME16SkJjbkpoZVNnbmMybHRhV3hoY21sMGVTY3NJRVpzYjJGME16SkJjbkpoZVM1bWNtOXRLSE5wYldsc1lYSnBkSGxCY25JcEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2MybHRRWEp5TzF4dWZTSmRmUT09IiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcihkYXRhTWV0cmljLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2RpbWVuc2lvbmFsaXR5LXJlZHVjZXInLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGNvbHVtbkRhdGE6IGRhdGFNZXRyaWMuZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICAgICAgbWVhc3VyZTogZGF0YU1ldHJpYy5tZXRyaWMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZGlzdGFuY2UsIGVtYmVkZGluZyB9IH0pID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoeyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUprYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJsdVp5MTNiM0pyWlhJdFkzSmxZWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRnBRa0VzVFVGQlRTeFZRVUZWTEdsRFFVRnBReXhEUVVGRExGVkJRWE5DTEVWQlFVVXNUVUZCWXl4RlFVTnNSaXhQUVVGaE8wbEJSV3BDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJVeXhQUVVGUE8xRkJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETERCQ1FVRXdRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0WlFVTXpRaXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVOHNSVUZCUlN4VlFVRlZMRU5CUVVNc1RVRkJUVHRaUVVNeFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeE5RVUZOTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0JFTEU5QlFVOHNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRXWVd4cFpGUjVjR1Z6ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCQklIZHZjbXRsY2lCMGJ5QndaWEptYjNKdElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFaaGJHbGtWSGx3WlhOOUlHUmhkR0ZOWlhSeWFXTWdWR2hsSUdSaGRHRWdkRzhnY0hKdlkyVnpjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYUm9iMlFnUVNCdFpYUm9iMlFnYjJZZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDb2dRSEJoY21GdElHOXdkR2x2Ym5NZ0xTQnJaWGt0ZG1Gc2RXVWdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQnlaWFIxY201RWFYTjBZVzVqWlUxaGRISnBlRnh1SUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK2ZTQlNaWE4xYkhScGJtY2daVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBJSHRjYmlBZ1pHbHpkR0Z1WTJVNklFMWhkSEpwZUR0Y2JpQWdaVzFpWldSa2FXNW5PaUJOWVhSeWFYZzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZFYVcxbGJuTnBibUZzYVhSNVVtVmtkV05wYm1kWGIzSnJaWElvWkdGMFlVMWxkSEpwWXpvZ1ZtRnNhV1JVZVhCbGN5d2diV1YwYUc5a09pQnpkSEpwYm1jc1hHNGdJQ0FnSUNCdmNIUnBiMjV6UHpvZ1lXNTVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRvY21WemIyeDJaU2tnZTF4dUlDQWdJR052Ym5OMElIZHZjbXRsY2lBOUlHNWxkeUJYYjNKclpYSW9ibVYzSUZWU1RDZ25MaTlrYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJWeUp5d2dhVzF3YjNKMExtMWxkR0V1ZFhKc0tTazdYRzRnSUNBZ2QyOXlhMlZ5TG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNBZ0lHTnZiSFZ0YmtSaGRHRTZJR1JoZEdGTlpYUnlhV011WkdGMFlTeGNiaUFnSUNBZ0lHMWxkR2h2WkRvZ2JXVjBhRzlrTEZ4dUlDQWdJQ0FnYldWaGMzVnlaVG9nWkdGMFlVMWxkSEpwWXk1dFpYUnlhV01zWEc0Z0lDQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpMRnh1SUNBZ0lIMHBPMXh1SUNBZ0lIZHZjbXRsY2k1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGthWE4wWVc1alpTd2daVzFpWldSa2FXNW5mWDBwSUQwK0lIdGNiaUFnSUNBZ2NtVnpiMngyWlNoN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzBwTzF4dUlDQWdJSDA3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgJ0RpY2UnOiBkaWNlU2ltaWxhcml0eSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5LFxuICAgICdDb3NpbmUnOiBjb3NpbmVTaW1pbGFyaXR5LFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraVNpbWlsYXJpdHksXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgICdSdXNzZWwnOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgICdTb2thbCc6IHNva2FsU2ltaWxhcml0eSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICAnRGljZSc6IGRpY2VEaXN0YW5jZSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgJ0Nvc2luZSc6IGNvc2luZURpc3RhbmNlLFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraURpc3RhbmNlLFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgICdSdXNzZWwnOiBydXNzZWxEaXN0YW5jZSxcbiAgICAnU29rYWwnOiBzb2thbERpc3RhbmNlLFxuICAgICdIYW1taW5nJzogaGFtbWluZ0Rpc3RhbmNlLFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbJ1Rhbmltb3RvJywgJ0RpY2UnLCAnQ29zaW5lJywgJ0hhbW1pbmcnLCAnRXVjbGlkZWFuJ107XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKHRvdGFsIC0gY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gMiAqIGNvbW1vbiAvIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoZGljZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBNYXRoLnNxcnQodG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShjb3NpbmVTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoeC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoaGFtbWluZ0Rpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKDIgKiB0b3RhbCAtIDMgKiBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNva2FsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsKSAvICgyICogdG90YWxQcm9kKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCAtIHRvdGFsUHJvZCkgLyB0b3RhbFByb2Q7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWluID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtaW47XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtYXggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1heDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBpZiAoeC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIHgubGVuZ3RoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShydXNzZWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIGNvbnN0IHRvdGFsID0geC5jb3VudEJpdHModHJ1ZSkgKyB5LmNvdW50Qml0cyh0cnVlKTtcbiAgICBjb25zdCBsZW4gPSB4Lmxlbmd0aDtcbiAgICBjb25zdCBkaWZmID0gbGVuIC0gdG90YWwgKyBjb21tb247XG4gICAgaWYgKChjb21tb24gPT0gbGVuKSB8fCAoZGlmZiA9PSBsZW4pKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNvbW1vbiAvIHRvdGFsICsgZGlmZiAvICgyICogbGVuIC0gdG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2UpIHtcbiAgICByZXR1cm4gMSAvICgxICsgZGlzdGFuY2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc2ltaWxhcml0eSkge1xuICAgIHJldHVybiAxIC8gc2ltaWxhcml0eSAtIDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVTXNUVUZCVFN4VlFVRlZMRU5CUVVNN1FVRkZia01zVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVEpFTzBsQlEzUkdMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSTdTVUZET1VJc1RVRkJUU3hGUVVGRkxHTkJRV003U1VGRGRFSXNXVUZCV1N4RlFVRkZMRzlDUVVGdlFqdEpRVU5zUXl4blFrRkJaMElzUlVGQlJTeDFRa0ZCZFVJN1NVRkRla01zVVVGQlVTeEZRVUZGTEdkQ1FVRm5RanRKUVVNeFFpeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wbEJRMnhETEdWQlFXVXNSVUZCUlN4elFrRkJjMEk3U1VGRGRrTXNaMEpCUVdkQ0xFVkJRVVVzZFVKQlFYVkNPMGxCUTNwRExGRkJRVkVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRNVUlzVDBGQlR5eEZRVUZGTEdWQlFXVTdTVUZEZUVJc1UwRkJVeXhGUVVGRkxHbENRVUZwUWp0SlFVTTFRaXhYUVVGWExFVkJRVVVzYlVKQlFXMUNPME5CUTJwRExFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4bFFVRmxMRWRCUVRKRU8wbEJRM0pHTEZWQlFWVXNSVUZCUlN4blFrRkJaMEk3U1VGRE5VSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3h4UWtGQmNVSTdTVUZEZGtNc1VVRkJVU3hGUVVGRkxHTkJRV003U1VGRGVFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTzBsQlEzSkRMR2RDUVVGblFpeEZRVUZGTEhGQ1FVRnhRanRKUVVOMlF5eFJRVUZSTEVWQlFVVXNZMEZCWXp0SlFVTjRRaXhQUVVGUExFVkJRVVVzWVVGQllUdEpRVU4wUWl4VFFVRlRMRVZCUVVVc1pVRkJaVHRKUVVNeFFpeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ08wTkJReTlDTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVVNVJpeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNM1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkRXaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnVSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM0pFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU14UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM2hFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOMFJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOd1JDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzlDUVVGdlFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dlFrRkJiMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXpSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2IwSkJRVzlDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRNMFFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hyUWtGQmEwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONlJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OUVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHhRa0ZCY1VJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU0xUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdVVUZEWml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5MaTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFKYm5SOUlHWnliMjBnSnk0dmNtRnVaRzl0Snp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5ZlNBOUlIdGNiaUFnSjFSaGJtbHRiM1J2SnpvZ2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUkdsalpTYzZJR1JwWTJWVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUVhONWJXMWxkSEpwWXljNklHRnplVzF0WlhSeWFXTlRhVzFwYkdGeWFYUjVMRnh1SUNBblFuSmhkVzR0UW14aGJuRjFaWFFuT2lCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RMZFd4amVubHVjMnRwSnpvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTll5MURiMjV1WVhWbmFHVjVKem9nYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkU2RYTnpaV3duT2lCeWRYTnpaV3hUYVcxcGJHRnlhWFI1TEZ4dUlDQW5VMjlyWVd3bk9pQnpiMnRoYkZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZEZkV05zYVdSbFlXNG5PaUJsZFdOc2FXUmxZVzVUYVcxcGJHRnlhWFI1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnBjM1JoYm1ObFRXVjBjbWxqY3pvZ2UxdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhKOUlEMGdlMXh1SUNBblZHRnVhVzF2ZEc4bk9pQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVJQ0FuUkdsalpTYzZJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdKMEZ6ZVcxdFpYUnlhV01uT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDYzZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0FuUzNWc1kzcDVibk5yYVNjNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnSjAxakxVTnZibTVoZFdkb1pYa25PaUJ0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQW5VblZ6YzJWc0p6b2djblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJQ2RUYjJ0aGJDYzZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNBblJYVmpiR2xrWldGdUp6b2daWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUTBoRlRWOVRTVTFKVEVGU1NWUlpYMDFGVkZKSlExTWdQU0JiSjFSaGJtbHRiM1J2Snl3Z0owUnBZMlVuTENBblEyOXphVzVsSnl3Z0owaGhiVzFwYm1jbkxDQW5SWFZqYkdsa1pXRnVKMTA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBYRzRnSUNBZ2NtVjBkWEp1SURFdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0hSdmRHRnNJQzBnWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmhibWx0YjNSdlJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SURJZ0tpQmpiMjF0YjI0Z0x5QjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoa2FXTmxVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESXFlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHaGhiVzFwYm1kRWFYTjBZVzVqWlNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZVzF0YVc1blJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BJQzBnTWlwNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tESWdLaUIwYjNSaGJDQXRJRE1nS2lCamIyMXRiMjRwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4RWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoemIydGhiRk5wYldsc1lYSnBkSGtvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3cElDOGdLRElnS2lCMGIzUmhiRkJ5YjJRcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0d0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzFqUTI5dWJtRjFaMmhsZVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dnTFNCMGIzUmhiRkJ5YjJRcElDOGdkRzkwWVd4UWNtOWtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29iV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0YVc0Z1BTQk5ZWFJvTG0xcGJpaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFwYmlBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxcGJqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRZWGdnUFNCTllYUm9MbTFoZUNoNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMWhlQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFoZUR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWRYTnpaV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2g0TG14bGJtZDBhQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb0lERWdLeUJrYVhOMFlXNWpaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtITnBiV2xzWVhKcGRIazZJRzUxYldKbGNpa2dlMXh1SUNCeVpYUjFjbTRnTVNBdklITnBiV2xzWVhKcGRIa2dMU0F4TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJR1oxYm1OMGFXOXVJRzFoZUVKNUtIWmhiSFZsY3pvZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTENCdmNtUmxja0o1T2lBb2FUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnNaWFFnYldGNFZtRnNkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J0WVhoUGNtUmxja0o1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWld4bGJXVnVkQ0J2WmlCMllXeDFaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1ZzWlcxbGJuUlBjbVJsY2tKNUlEMGdiM0prWlhKQ2VTaGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhoUGNtUmxja0o1SUQwOUlHNTFiR3dnZkh3Z1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUGlCdFlYaFBjbVJsY2tKNUtTQjdYRzRnSUNBZ0lDQWdJRzFoZUZaaGJIVmxJRDBnWld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYldGNFQzSmtaWEpDZVNBOUlHVnNaVzFsYm5SUGNtUmxja0o1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCemRXSnpaWFFnUFNCYmNtRnVaRzl0U1c1MEtHeGxibWQwYUNBdElERXBYVHRjYmlBZ1kyOXVjM1FnWTI5dGNHeGxiV1Z1ZENBOUlHNWxkeUJUWlhRb0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdhV1lnS0NGemRXSnpaWFF1YVc1amJIVmtaWE1vYVNrcFhHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtRmtaQ2hwS1R0Y2JpQWdmVnh1WEc0Z0lIZG9hV3hsSUNoemRXSnpaWFF1YkdWdVozUm9JRHdnYmlrZ2UxeHVJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHMWhlRUo1S0Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1MllXeDFaWE1vS1NCaGN5QkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c1hHNGdJQ0FnSUNBb2FTa2dQVDRnVFdGMGFDNXRhVzR1WVhCd2JIa29UV0YwYUN3Z2MzVmljMlYwTG0xaGNDaG1kVzVqZEdsdmJpaDJZV3dzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOMEtHa3NJSFpoYkNrN1hHNGdJQ0FnSUNCOUtTa3BPMXh1SUNBZ0lHbG1JQ2hwWkhncElIdGNiaUFnSUNBZ0lITjFZbk5sZEM1d2RYTm9LR2xrZUNrN1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtUmxiR1YwWlNocFpIZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2MzVmljMlYwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JcbiAqIEBleHRlbmRzIHtGbG9hdDMyQXJyYXl9XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWF0cml4XG4gKiBAZXh0ZW5kcyB7QXJyYXk8VmVjdG9yPn1cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvb3JkaW5hdGVzXG4gKiBAZXh0ZW5kcyB7TWF0cml4fVxuICovXG5leHBvcnQgY2xhc3MgQ29vcmRpbmF0ZXMgZXh0ZW5kcyBNYXRyaXgge1xufVxuLyoqXG4gKiBEZW5vdGVzIGFuIGFycmF5IG9mIGFyYml0cmFyeS10eXBlZCB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JzXG4gKiBAZXh0ZW5kcyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvcnMgZXh0ZW5kcyBBcnJheSB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRmxCUVZrN1EwRkJSenRCUVVVelF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxFdEJRV0U3UTBGQlJ6dEJRVVUxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVjBGQldTeFRRVUZSTEUxQlFVMDdRMEZCUnp0QlFVVXhRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUMEZCVVN4VFFVRlJMRXRCUVZVN1EwRkJSeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4qXG4qIEBleHBvcnRcbiogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRXRCUVVzc1EwRkJReXc0UTBGQk9FTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEZUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRkZCUVdkQ0xFVkJRVVU3U1VGRGVrWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVVjJSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRja003U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1F5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGNFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRUxHdEdRVUZyUmp0QlFVTnNSaXhOUVVGTkxGVkJRVlVzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1dVRkJXU3hIUVVGSExFdEJRVXM3U1VGRGRrVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVWNFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVUU3T3pzN096czdSVUZQUlR0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zVFVGQllTeEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNjVUpCUVhGQ08wbEJRMnhGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdTVUZEZGtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhSU3hQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJWb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmJFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVVTNReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJXNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlJXNURMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVUdEpRVU01UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkZMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UwMWhkSEpwZUN3Z1ZtVmpkRzl5TENCRGIyOXlaR2x1WVhSbGN5d2dWbVZqZEc5eWN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSnk0dmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxR2JHOWhkQ3dnY21GdVpHOXRTVzUwZlNCbWNtOXRJQ2N1TDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowY3lCaElHTnZibVJwZEdsdmJpQmllU0IwYUhKdmQybHVaeUJoYmlCRmNuSnZjaTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0amIyNWthWFJwYjI0OVptRnNjMlZkSUVOdmJtUnBkR2x2YmlCMGJ5QmhjM05sY25RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjFsYzNOaFoyVTlKMEZ6YzJWeWRHbHZiaUJsY25KdmNpNG5YU0JOWlhOellXZGxJSFJ2SUc5MWRIQjFkQzVjYmlBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWE56WlhKMEtHTnZibVJwZEdsdmJqb2dZbTl2YkdWaGJpQTlJR1poYkhObExDQnRaWE56WVdkbE9pQnpkSEpwYm1jZ1BTQW5RWE56WlhKMGFXOXVJR1Z5Y205eUxpY3BJSHRjYmlBZ2FXWWdLQ0ZqYjI1a2FYUnBiMjRwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nYm1WM0lIUjNieTFrYVcxbGJuTnBiMjVoYkNCaGNuSmhlU0JoYm1RZ1ptbHNiSE1nYVhRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdZMjl2Y21ScGJtRjBaWE1nS0c1MWJXSmxjaUJ2WmlCeWIzZHpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eUlGUm9aU0J6WldOdmJtUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUdOdmJIVnRibk1wTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdG1hV3hzUFRCZElFRWdkbUZzZFdVZ2RHOGdabWxzYkNCMGFHVWdZMjl2Y21ScGJtRjBaWE1nZDJsMGFDNWNiaUFxSUVCeVpYUjFjbTRnZTBOdmIzSmthVzVoZEdWemZTQkJJSFIzYnkxa2FXMWxibk5wYjI1aGJDQm1hV3hzWldRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2lCQWRHOWtieUJOYVdkb2RDQmlaU0J6Ykc5M0lITnBibU5sSUhWelpXUWdRWEp5WVhrdWJXRndMaUJRY205aVlXSnNlU0J1WldWa2N5QndaWEptYjNKdFlXNWpaU0J5WlhacGMybHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOdmIzSmthVzVoZEdWektHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0JtYVd4c09pQnVkVzFpWlhJZ1BTQXdLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLR1JwYldWdWMybHZiakVwTG1acGJHd29abWxzYkNrdWJXRndLQ2dwSUQwK0lDaHVaWGNnVm1WamRHOXlLR1JwYldWdWMybHZiaklwTG1acGJHd29abWxzYkNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVWNtRnVjM0J2YzJVZ2JXRjBjbWw0TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1RXRjBjbWw0ZlNCdFlYUnlhWGdnVkdobElHMWhkSEpwZUNCMGJ5QmlaU0IwY21GdWMzQnZjMlZrTGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQlVjbUZ1YzNCdmMyVmtJRzFoZEhKcGVDNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RISmhibk53YjNObFRXRjBjbWw0S0cxaGRISnBlRG9nVFdGMGNtbDRLVG9nVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNodFlYUnlhWGhiTUYwdWJHVnVaM1JvS1M1bWFXeHNLREFwWEc0Z0lDQWdMbTFoY0Nnb1h5d2dhU2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9iV0YwY21sNExteGxibWQwYUNrdVptbHNiQ2d3S1M1dFlYQW9LRjhzSUdvcElEMCtJQ2h0WVhSeWFYaGJhbDFiYVYwcEtTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaSE1nZEhkdklIWmxZM1J2Y25NZ2QybDBhQ0IwYUdVZ2MyVmpiMjVrSUc5dVpTQjBieUJpWlNCdGRXeDBhWEJzYVdWa0lHSjVJSFJvWlNCbmFYWmxiaUJ5WVhScGJ5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJYVnNkR2x3YkdsbGNqMHhYU0JCSUcxMWJIUnBjR3hwWlhJZ2RHOGdZbVVnZFhObFpDQmlaV1p2Y21VZ2RHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2FYTWdZV1JrWldRdVhHNGdLaUJBY21WMGRYSnVJSHRXWldOMGIzSjlJRTVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibVZrSUhSb1pTQnlaWE4xYkhRZ2IyWWdiM0JsY21GMGFXOXVJSEFyYlhWc2RHbHdiR2xsY2lweExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZG1WamRHOXlRV1JrS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUxDQnRkV3gwYVhCc2FXVnlPaUJ1ZFcxaVpYSWdQU0F4S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnWVhOelpYSjBLRzVKZEdWdGN5QTlQU0J4TG14bGJtZDBhQ3dnSjFabFkzUnZjaUJzWlc1bmRHaHpJR1J2SUc1dmRDQnRZWFJqYUM0bktUdGNibHh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEF1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCd1cybGRJQ3NnYlhWc2RHbHdiR2xsY2lBcUlIRmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xYlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnWW1VZ2MzVnRiV1ZrTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlVhR1VnZG1WamRHOXlKM01nYVhSbGJYTWdjM1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwZEdWdGMxTjFiU2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnZEc5MFlXd2dQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiQ0FyUFNCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkWEZoY21WeklIUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2RpQlVhR1VnZG1WamRHOXlJSFJ2SUhOeGRXRnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1FTQnVaWGNnZG1WamRHOXlJR052Ym5SaGFXNXBibWNnZEdobElHOXlhV2RwYm1Gc0ozTWdhWFJsYlhNZ2MzRjFZWEpsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1WamRHOXlVM0YxWVhKbEtIWTZJRlpsWTNSdmNpazZJRlpsWTNSdmNpQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSFl1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCMlcybGRJQ29nZGx0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pNWlc1bmRHZ29kam9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJSE54Y2xOMWJUb2diblZ0WW1WeUlEMGdNRHRjYmlBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjM0Z5VTNWdElDczlJSFpiYVYwZ0tpQjJXMmxkTzF4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITnhjbE4xYlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkViM1JRY205a2RXTjBLSFl4T2lCV1pXTjBiM0lzSUhZeU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JwWmlBb2RqRXViR1Z1WjNSb0lDRTlJSFl5TG14bGJtZDBhQ2xjYmlBZ0lDQjBhSEp2ZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUlDOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnYkdWMElHMWxZVzRnUFNBd08xeHVJQ0JzWlhRZ2MzUmtJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdiV1ZoYmlBclBTQmtZWFJoVzJsZE8xeHVYRzRnSUcxbFlXNGdMejBnWkdGMFlTNXNaVzVuZEdnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSE4wWkNBclBTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2dLR1JoZEdGYmFWMGdMU0J0WldGdUtUdGNibHh1SUNCemRHUWdQU0JOWVhSb0xuTnhjblFvYzNSa0lDOGdaR0YwWVM1c1pXNW5kR2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQmtZWFJoVzJsZElEMGdLR1JoZEdGYmFWMGdMU0J0WldGdUtTQXZJSE4wWkR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBwZXEgPSBuZXcgVWludDMyQXJyYXkoMHgxMDAwMCk7XG5jb25zdCBteWVyc18zMiA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBsc3QgPSAxIDw8IChuIC0gMSk7XG4gIGxldCBwdiA9IC0xO1xuICBsZXQgbXYgPSAwO1xuICBsZXQgc2MgPSBuO1xuICBsZXQgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSB8PSAxIDw8IGk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBlcSB8PSAoKGVxICYgcHYpICsgcHYpIF4gcHY7XG4gICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICBwdiAmPSBlcTtcbiAgICBpZiAobXYgJiBsc3QpIHtcbiAgICAgIHNjKys7XG4gICAgfVxuICAgIGlmIChwdiAmIGxzdCkge1xuICAgICAgc2MtLTtcbiAgICB9XG4gICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgIHB2ID0gKHB2IDw8IDEpIHwgfih4diB8IG12KTtcbiAgICBtdiAmPSB4djtcbiAgfVxuICBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgfVxuICByZXR1cm4gc2M7XG59O1xuXG5jb25zdCBteWVyc194ID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IG1oYyA9IFtdO1xuICBjb25zdCBwaGMgPSBbXTtcbiAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgY29uc3QgdnNpemUgPSBNYXRoLmNlaWwobSAvIDMyKTtcbiAgbGV0IHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoc2l6ZTsgaSsrKSB7XG4gICAgcGhjW2ldID0gLTE7XG4gICAgbWhjW2ldID0gMDtcbiAgfVxuICBsZXQgaiA9IDA7XG4gIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBwdiA9IC0xO1xuICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtKSArIHN0YXJ0O1xuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gICAgfVxuICAgIHNjb3JlID0gbTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICB9XG4gIGxldCBtdiA9IDA7XG4gIGxldCBwdiA9IC0xO1xuICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gIH1cbiAgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgc2NvcmUgKz0gKHBoID4+PiAobSAtIDEpKSAmIDE7XG4gICAgc2NvcmUgLT0gKG1oID4+PiAobSAtIDEpKSAmIDE7XG4gICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgIG12ID0gcGggJiB4djtcbiAgfVxuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgfVxuICByZXR1cm4gc2NvcmU7XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gIGlmIChhLmxlbmd0aCA+IGIubGVuZ3RoKSB7XG4gICAgY29uc3QgdG1wID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdG1wO1xuICB9XG4gIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiLmxlbmd0aDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPD0gMzIpIHtcbiAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gIH1cbiAgcmV0dXJuIG15ZXJzX3goYSwgYik7XG59O1xuXG5jb25zdCBjbG9zZXN0ID0gKHN0ciwgYXJyKSA9PiB7XG4gIGxldCBtaW5fZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pbl9pbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0YW5jZSkge1xuICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdDtcbiAgICAgIG1pbl9pbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjbG9zZXN0LCBkaXN0YW5jZVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJleHBvcnQgY29uc3QganNvblNkZk1vbm9tZXJMaWJEaWN0ID0ge1xuICAgICdtb25vbWVyVHlwZSc6IG51bGwsXG4gICAgJ3NtaWxlcyc6IG51bGwsXG4gICAgJ25hbWUnOiAnTW9ub21lck5hbWUnLFxuICAgICdhdXRob3InOiBudWxsLFxuICAgICdtb2xmaWxlJzogJ21vbGVjdWxlJyxcbiAgICAnbmF0dXJhbEFuYWxvZyc6ICdNb25vbWVyTmF0dXJhbEFuYWxvZ0NvZGUnLFxuICAgICdyZ3JvdXBzJzogJ01vbm9tZXJDYXBzJyxcbiAgICAnY3JlYXRlRGF0ZSc6IG51bGwsXG4gICAgJ2lkJzogbnVsbCxcbiAgICAncG9seW1lclR5cGUnOiAnTW9ub21lclR5cGUnLFxuICAgICdzeW1ib2wnOiAnTW9ub21lckNvZGUnXG59O1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9GSUVMRCA9ICdyZ3JvdXBzJztcbmV4cG9ydCBjb25zdCBDQVBfR1JPVVBfU01JTEVTID0gJ2NhcEdyb3VwU21pbGVzJztcbmV4cG9ydCBjb25zdCBSR1JPVVBfQUxURVJfSUQgPSAnYWx0ZXJuYXRlSWQnO1xuZXhwb3J0IGNvbnN0IENBUF9HUk9VUF9OQU1FID0gJ2NhcEdyb3VwTmFtZSc7XG5leHBvcnQgY29uc3QgUkdST1VQX0xBQkVMID0gJ2xhYmVsJztcbmV4cG9ydCBjb25zdCBNT05PTUVSX1NZTUJPTCA9ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IFNERl9NT05PTUVSX05BTUUgPSAnTW9ub21lck5hbWUnO1xuIiwiY2xhc3MgQ2VsbCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEkgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEogPSAwO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBBbGlnbmVkIHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIHNjb3JlXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMuc2NvcmUgPSBzY29yZV87XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIFNlcXVlbmNlQWxpZ25tZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIGdhcF8sIGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9ICcnO1xuICAgICAgICB0aGlzLnNlcTIgPSAnJztcbiAgICAgICAgdGhpcy5nYXAgPSAxO1xuICAgICAgICB0aGlzLmxlbjEgPSAwO1xuICAgICAgICB0aGlzLmxlbjIgPSAwO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICB0aGlzLmFsaWduR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuQkxPU1VNNDUgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAwLCAtMSwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDMsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDYsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtMiwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAyLCA3LCAtMywgMCwgMiwgLTEsIDAsIC00LCAtMywgMCwgLTMsIC00LCAtMSwgMCwgLTEsIC00LCAtMiwgLTMsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTMsIDEyLCAtMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMiwgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA2LCAyLCAtMiwgMSwgLTIsIC0yLCAxLCAwLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTIsIDAsIC0zLCAtMiwgMSwgLTIsIC0zLCAwLCAwLCAtMSwgLTMsIC0yLCAtMywgMSwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDcsIC0yLCAtNCwgLTMsIC0yLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAwLCAtMywgMSwgMCwgLTIsIDEwLCAtMywgLTIsIC0xLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIDIsIC0zLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC00LCAtMywgLTIsIC0zLCAtNCwgLTMsIDUsIDIsIC0zLCAyLCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMywgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC0zLCAtMiwgLTIsIC0yLCAtMywgLTIsIDIsIDUsIC0zLCAyLCAxLCAtMywgLTMsIC0xLCAtMiwgMCwgMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAwLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTMsIDUsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMiwgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgMCwgMiwgMiwgLTEsIDYsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAxLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTQsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgMSwgLTMsIDAsIDgsIC0zLCAtMiwgLTEsIDEsIDMsIDAsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTQsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgOSwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMSwgNCwgMiwgLTQsIC0yLCAtMSwgMCwgMCwgMCwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyLCA1LCAtMywgLTEsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtNCwgLTQsIC01LCAtMiwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIDEsIC0zLCAtNCwgLTMsIDE1LCAzLCAtMywgLTQsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgMiwgMCwgMCwgLTEsIDAsIDMsIC0zLCAtMiwgLTEsIDMsIDgsIC0xLCAtMiwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtMywgLTEsIC0zLCAtMywgLTMsIC0zLCAzLCAxLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMywgLTEsIDUsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDQsIDUsIC0yLCAwLCAxLCAtMSwgMCwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAwLCAwLCAtNCwgLTIsIC0zLCA0LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNCwgLTIsIDAsIC0zLCAtMiwgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNTAgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgLTEsIC0yLCAtNCwgMSwgMCwgLTMsIDAsIC00LCAtMywgMywgLTIsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0zLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDcsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMywgLTQsIDAsIC0yLCAtNCwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAyLCA4LCAtNCwgMCwgMiwgLTEsIC0xLCAtNCwgLTQsIC0xLCAtNCwgLTUsIC0xLCAwLCAtMSwgLTUsIC0zLCAtNCwgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0yLCAtNCwgMTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0zLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDcsIDIsIC0yLCAxLCAtMywgLTIsIDIsIDAsIC00LCAtMSwgMCwgLTEsIC0xLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMywgMCwgLTQsIC0zLCAxLCAtMiwgLTMsIC0xLCAtMSwgLTEsIC0zLCAtMiwgLTMsIDEsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC0xLCAtMywgLTIsIC0zLCA4LCAtMiwgLTQsIC00LCAtMiwgLTMsIC00LCAtMiwgMCwgLTIsIC0zLCAtMywgLTQsIC0xLCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAxLCAwLCAtMiwgMTAsIC00LCAtMywgMCwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMywgMiwgLTQsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMywgLTQsIC0yLCAtMywgLTQsIC00LCAtNCwgNSwgMiwgLTMsIDIsIDAsIC0zLCAtMywgLTEsIC0zLCAtMSwgNCwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtNCwgLTMsIDIsIDUsIC0zLCAzLCAxLCAtNCwgLTMsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTEsIC0zLCAyLCAxLCAtMiwgMCwgLTMsIC0zLCA2LCAtMiwgLTQsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMywgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtNCwgLTIsIDAsIC0yLCAtMywgLTEsIDIsIDMsIC0yLCA3LCAwLCAtMywgLTIsIC0xLCAtMSwgMCwgMSwgLTMsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtMiwgLTQsIC0zLCAtNCwgLTEsIDAsIDEsIC00LCAwLCA4LCAtNCwgLTMsIC0yLCAxLCA0LCAtMSwgLTQsIC00LCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0xLCAtNCwgLTEsIC0xLCAtMiwgLTIsIC0zLCAtNCwgLTEsIC0zLCAtNCwgMTAsIC0xLCAtMSwgLTQsIC0zLCAtMywgLTIsIC0xLCAtMiwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgLTEsIDAsIC0xLCAtMywgLTMsIDAsIC0yLCAtMywgLTEsIDUsIDIsIC00LCAtMiwgLTIsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDIsIDUsIC0zLCAtMiwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTUsIC0xLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC00LCAtMywgMTUsIDIsIC0zLCAtNSwgLTIsIC0zLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAwLCA0LCAtMywgLTIsIC0yLCAyLCA4LCAtMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTQsIC0xLCAtMywgLTMsIC00LCAtNCwgNCwgMSwgLTMsIDEsIC0xLCAtMywgLTIsIDAsIC0zLCAtMSwgNSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNCwgNSwgLTMsIDAsIDEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTIsIDAsIDAsIC01LCAtMywgLTQsIDUsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTQsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgMCwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTYyID0gW1s0LCAtMSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0xLCA1LCAwLCAtMiwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDIsIC0xLCAtMywgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMywgLTEsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDYsIDEsIC0zLCAwLCAwLCAwLCAxLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDMsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAxLCA2LCAtMywgMCwgMiwgLTEsIC0xLCAtMywgLTQsIC0xLCAtMywgLTMsIC0xLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCA5LCAtMywgLTQsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0yLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMywgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA1LCAyLCAtMiwgMCwgLTMsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0xLCAtMiwgLTEsIC0yLCAwLCAzLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtNCwgMiwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTIsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA2LCAtMiwgLTQsIC00LCAtMiwgLTMsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAwLCAwLCAtMiwgOCwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtMiwgLTEsIC0yLCAtMiwgMiwgLTMsIDAsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC0xLCAtMywgLTMsIC00LCAtMywgNCwgMiwgLTMsIDEsIDAsIC0zLCAtMiwgLTEsIC0zLCAtMSwgMywgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC00LCAtMSwgLTIsIC0zLCAtNCwgLTMsIDIsIDQsIC0yLCAyLCAwLCAtMywgLTIsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMiwgNSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDAsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0xLCAwLCAtMiwgLTMsIC0yLCAxLCAyLCAtMSwgNSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAxLCAtMywgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTMsIC0yLCAtMywgLTMsIC0zLCAtMSwgMCwgMCwgLTMsIDAsIDYsIC00LCAtMiwgLTIsIDEsIDMsIC0xLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC00LCA3LCAtMSwgLTEsIC00LCAtMywgLTIsIC0yLCAtMSwgLTIsIC00XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMiwgLTEsIDQsIDEsIC0zLCAtMiwgLTIsIDAsIDAsIDAsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgNSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC0zLCAtMiwgMTEsIDIsIC0zLCAtNCwgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTMsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAtMSwgMywgLTMsIC0yLCAtMiwgMiwgNywgLTEsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAtMSwgLTIsIC0yLCAwLCAtMywgLTEsIDQsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDMsIDQsIC0zLCAwLCAxLCAtMSwgMCwgLTMsIC00LCAwLCAtMywgLTMsIC0yLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDMsIDQsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTgwID0gW1s3LCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAwLCAtMywgLTMsIC0zLCAtMSwgLTIsIC00LCAtMSwgMiwgMCwgLTUsIC00LCAtMSwgLTMsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCA5LCAtMSwgLTMsIC02LCAxLCAtMSwgLTQsIDAsIC01LCAtNCwgMywgLTMsIC01LCAtMywgLTIsIC0yLCAtNSwgLTQsIC00LCAtMiwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTEsIDksIDIsIC01LCAwLCAtMSwgLTEsIDEsIC02LCAtNiwgMCwgLTQsIC02LCAtNCwgMSwgMCwgLTcsIC00LCAtNSwgNSwgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAyLCAxMCwgLTcsIC0xLCAyLCAtMywgLTIsIC03LCAtNywgLTIsIC02LCAtNiwgLTMsIC0xLCAtMiwgLTgsIC02LCAtNiwgNiwgMSwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC01LCAtNywgMTMsIC01LCAtNywgLTYsIC03LCAtMiwgLTMsIC02LCAtMywgLTQsIC02LCAtMiwgLTIsIC01LCAtNSwgLTIsIC02LCAtNywgLTQsIC04XSxcbiAgICAgICAgICAgIFstMiwgMSwgMCwgLTEsIC01LCA5LCAzLCAtNCwgMSwgLTUsIC00LCAyLCAtMSwgLTUsIC0zLCAtMSwgLTEsIC00LCAtMywgLTQsIC0xLCA1LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTEsIDIsIC03LCAzLCA4LCAtNCwgMCwgLTYsIC02LCAxLCAtNCwgLTYsIC0yLCAtMSwgLTIsIC02LCAtNSwgLTQsIDEsIDYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTQsIC0xLCAtMywgLTYsIC00LCAtNCwgOSwgLTQsIC03LCAtNywgLTMsIC01LCAtNiwgLTUsIC0xLCAtMywgLTYsIC02LCAtNiwgLTIsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0zLCAwLCAxLCAtMiwgLTcsIDEsIDAsIC00LCAxMiwgLTYsIC01LCAtMSwgLTQsIC0yLCAtNCwgLTIsIC0zLCAtNCwgMywgLTUsIC0xLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNSwgLTYsIC03LCAtMiwgLTUsIC02LCAtNywgLTYsIDcsIDIsIC01LCAyLCAtMSwgLTUsIC00LCAtMiwgLTUsIC0zLCA0LCAtNiwgLTYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNiwgLTcsIC0zLCAtNCwgLTYsIC03LCAtNSwgMiwgNiwgLTQsIDMsIDAsIC01LCAtNCwgLTMsIC00LCAtMiwgMSwgLTcsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMiwgLTYsIDIsIDEsIC0zLCAtMSwgLTUsIC00LCA4LCAtMywgLTUsIC0yLCAtMSwgLTEsIC02LCAtNCwgLTQsIC0xLCAxLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC02LCAtMywgLTEsIC00LCAtNSwgLTQsIDIsIDMsIC0zLCA5LCAwLCAtNCwgLTMsIC0xLCAtMywgLTMsIDEsIC01LCAtMywgLTIsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTUsIC02LCAtNiwgLTQsIC01LCAtNiwgLTYsIC0yLCAtMSwgMCwgLTUsIDAsIDEwLCAtNiwgLTQsIC00LCAwLCA0LCAtMiwgLTYsIC02LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC0zLCAtNiwgLTMsIC0yLCAtNSwgLTQsIC01LCAtNSwgLTIsIC00LCAtNiwgMTIsIC0yLCAtMywgLTcsIC02LCAtNCwgLTQsIC0yLCAtMywgLThdLFxuICAgICAgICAgICAgWzIsIC0yLCAxLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtNCwgLTQsIC0xLCAtMywgLTQsIC0yLCA3LCAyLCAtNiwgLTMsIC0zLCAwLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMywgLTIsIC0zLCAtMSwgLTEsIC00LCAtMywgMiwgOCwgLTUsIC0zLCAwLCAtMSwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNywgLTgsIC01LCAtNCwgLTYsIC02LCAtNCwgLTUsIC00LCAtNiwgLTMsIDAsIC03LCAtNiwgLTUsIDE2LCAzLCAtNSwgLTgsIC01LCAtNSwgLThdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC02LCAtNSwgLTMsIC01LCAtNiwgMywgLTMsIC0yLCAtNCwgLTMsIDQsIC02LCAtMywgLTMsIDMsIDExLCAtMywgLTUsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTUsIC02LCAtMiwgLTQsIC00LCAtNiwgLTUsIDQsIDEsIC00LCAxLCAtMiwgLTQsIC0zLCAwLCAtNSwgLTMsIDcsIC02LCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTIsIDUsIDYsIC02LCAtMSwgMSwgLTIsIC0xLCAtNiwgLTcsIC0xLCAtNSwgLTYsIC00LCAwLCAtMSwgLTgsIC01LCAtNiwgNiwgMCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDEsIC03LCA1LCA2LCAtNCwgMCwgLTYsIC01LCAxLCAtMywgLTYsIC0yLCAtMSwgLTIsIC01LCAtNCwgLTQsIDAsIDYsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTMsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0xLCAtNSwgLTMsIC0yLCAtMywgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNOTAgPSBbWzUsIC0yLCAtMiwgLTMsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0xLCAxLCAwLCAtNCwgLTMsIC0xLCAtMiwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDYsIC0xLCAtMywgLTUsIDEsIC0xLCAtMywgMCwgLTQsIC0zLCAyLCAtMiwgLTQsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNywgMSwgLTQsIDAsIC0xLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0zLCAwLCAwLCAtNSwgLTMsIC00LCA0LCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIDEsIDcsIC01LCAtMSwgMSwgLTIsIC0yLCAtNSwgLTUsIC0xLCAtNCwgLTUsIC0zLCAtMSwgLTIsIC02LCAtNCwgLTUsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNCwgLTUsIDksIC00LCAtNiwgLTQsIC01LCAtMiwgLTIsIC00LCAtMiwgLTMsIC00LCAtMiwgLTIsIC00LCAtNCwgLTIsIC00LCAtNSwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgLTEsIC00LCA3LCAyLCAtMywgMSwgLTQsIC0zLCAxLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTMsIC0zLCAtMywgLTEsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMSwgLTYsIDIsIDYsIC0zLCAtMSwgLTQsIC00LCAwLCAtMywgLTUsIC0yLCAtMSwgLTEsIC01LCAtNCwgLTMsIDAsIDQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgNiwgLTMsIC01LCAtNSwgLTIsIC00LCAtNSwgLTMsIC0xLCAtMywgLTQsIC01LCAtNSwgLTIsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAwLCAwLCAtMiwgLTUsIDEsIC0xLCAtMywgOCwgLTQsIC00LCAtMSwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMywgMSwgLTQsIC0xLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAtMiwgLTQsIC00LCAtNSwgLTQsIDUsIDEsIC00LCAxLCAtMSwgLTQsIC0zLCAtMSwgLTQsIC0yLCAzLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTQsIC01LCAtNCwgMSwgNSwgLTMsIDIsIDAsIC00LCAtMywgLTIsIC0zLCAtMiwgMCwgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTQsIDEsIDAsIC0yLCAtMSwgLTQsIC0zLCA2LCAtMiwgLTQsIC0yLCAtMSwgLTEsIC01LCAtMywgLTMsIC0xLCAxLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTMsIC00LCAtMiwgMCwgLTMsIC00LCAtMywgMSwgMiwgLTIsIDcsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTIsIDAsIC00LCAtMiwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMywgLTQsIC00LCAtNSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMSwgMCwgLTQsIC0xLCA3LCAtNCwgLTMsIC0zLCAwLCAzLCAtMiwgLTQsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTMsIC00LCAtNCwgLTIsIC0zLCAtNCwgOCwgLTIsIC0yLCAtNSwgLTQsIC0zLCAtMywgLTIsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgLTIsIDUsIDEsIC00LCAtMywgLTIsIDAsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0yLCAxLCA2LCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNSwgLTYsIC00LCAtMywgLTUsIC00LCAtMywgLTQsIC0zLCAtNSwgLTIsIDAsIC01LCAtNCwgLTQsIDExLCAyLCAtMywgLTYsIC00LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTMsIC00LCAtNCwgLTMsIC00LCAtNSwgMSwgLTIsIC0yLCAtMywgLTIsIDMsIC00LCAtMywgLTIsIDIsIDgsIC0zLCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTMsIC01LCAtNCwgMywgMCwgLTMsIDAsIC0yLCAtMywgLTIsIC0xLCAtMywgLTMsIDUsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDQsIDQsIC00LCAtMSwgMCwgLTIsIC0xLCAtNSwgLTUsIC0xLCAtNCwgLTQsIC0zLCAwLCAtMSwgLTYsIC00LCAtNCwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTEsIDAsIC01LCA0LCA0LCAtMywgMCwgLTQsIC00LCAxLCAtMiwgLTQsIC0yLCAtMSwgLTEsIC00LCAtMywgLTMsIDAsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0yLCAtMiwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAxXV07XG4gICAgICAgIHRoaXMuTlVDTEVPVElERVMgPSBbWzEsIC0xLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAxLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0zMCA9IFtbNiwgLTcsIC00LCAtMywgLTYsIC00LCAtMiwgLTIsIC03LCAtNSwgLTYsIC03LCAtNSwgLTgsIC0yLCAwLCAtMSwgLTEzLCAtOCwgLTIsIC0zLCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDgsIC02LCAtMTAsIC04LCAtMiwgLTksIC05LCAtMiwgLTUsIC04LCAwLCAtNCwgLTksIC00LCAtMywgLTYsIC0yLCAtMTAsIC04LCAtNywgLTQsIC02LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtNiwgOCwgMiwgLTExLCAtMywgLTIsIC0zLCAwLCAtNSwgLTcsIC0xLCAtOSwgLTksIC02LCAwLCAtMiwgLTgsIC00LCAtOCwgNiwgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtMTAsIDIsIDgsIC0xNCwgLTIsIDIsIC0zLCAtNCwgLTcsIC0xMiwgLTQsIC0xMSwgLTE1LCAtOCwgLTQsIC01LCAtMTUsIC0xMSwgLTgsIDYsIDEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTExLCAtMTQsIDEwLCAtMTQsIC0xNCwgLTksIC03LCAtNiwgLTE1LCAtMTQsIC0xMywgLTEzLCAtOCwgLTMsIC04LCAtMTUsIC00LCAtNiwgLTEyLCAtMTQsIC05LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtMiwgLTMsIC0yLCAtMTQsIDgsIDEsIC03LCAxLCAtOCwgLTUsIC0zLCAtNCwgLTEzLCAtMywgLTUsIC01LCAtMTMsIC0xMiwgLTcsIC0zLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0yLCAyLCAtMTQsIDEsIDgsIC00LCAtNSwgLTUsIC05LCAtNCwgLTcsIC0xNCwgLTUsIC00LCAtNiwgLTE3LCAtOCwgLTYsIDEsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTMsIC0zLCAtOSwgLTcsIC00LCA2LCAtOSwgLTExLCAtMTAsIC03LCAtOCwgLTksIC02LCAtMiwgLTYsIC0xNSwgLTE0LCAtNSwgLTMsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNywgLTIsIDAsIC00LCAtNywgMSwgLTUsIC05LCA5LCAtOSwgLTYsIC02LCAtMTAsIC02LCAtNCwgLTYsIC03LCAtNywgLTMsIC02LCAtMSwgLTEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC03LCAtNiwgLTgsIC01LCAtMTEsIC05LCA4LCAtMSwgLTYsIC0xLCAtMiwgLTgsIC03LCAtMiwgLTE0LCAtNiwgMiwgLTYsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC03LCAtMTIsIC0xNSwgLTUsIC05LCAtMTAsIC02LCAtMSwgNywgLTgsIDEsIC0zLCAtNywgLTgsIC03LCAtNiwgLTcsIC0yLCAtOSwgLTcsIC02LCAtMTddLFxuICAgICAgICAgICAgWy03LCAwLCAtMSwgLTQsIC0xNCwgLTMsIC00LCAtNywgLTYsIC02LCAtOCwgNywgLTIsIC0xNCwgLTYsIC00LCAtMywgLTEyLCAtOSwgLTksIC0yLCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC00LCAtOSwgLTExLCAtMTMsIC00LCAtNywgLTgsIC0xMCwgLTEsIDEsIC0yLCAxMSwgLTQsIC04LCAtNSwgLTQsIC0xMywgLTExLCAtMSwgLTEwLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC05LCAtOSwgLTE1LCAtMTMsIC0xMywgLTE0LCAtOSwgLTYsIC0yLCAtMywgLTE0LCAtNCwgOSwgLTEwLCAtNiwgLTksIC00LCAyLCAtOCwgLTEwLCAtMTMsIC04LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTYsIC04LCAtOCwgLTMsIC01LCAtNiwgLTQsIC04LCAtNywgLTYsIC04LCAtMTAsIDgsIC0yLCAtNCwgLTE0LCAtMTMsIC02LCAtNywgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtNCwgLTMsIC01LCAtNCwgLTIsIC02LCAtNywgLTgsIC00LCAtNSwgLTYsIC0yLCA2LCAwLCAtNSwgLTcsIC02LCAtMSwgLTUsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTIsIC01LCAtOCwgLTUsIC02LCAtNiwgLTcsIC0yLCAtNywgLTMsIC00LCAtOSwgLTQsIDAsIDcsIC0xMywgLTYsIC0zLCAtMywgLTYsIC00LCAtMTddLFxuICAgICAgICAgICAgWy0xMywgLTIsIC04LCAtMTUsIC0xNSwgLTEzLCAtMTcsIC0xNSwgLTcsIC0xNCwgLTYsIC0xMiwgLTEzLCAtNCwgLTE0LCAtNSwgLTEzLCAxMywgLTUsIC0xNSwgLTEwLCAtMTQsIC0xMSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTEwLCAtNCwgLTExLCAtNCwgLTEyLCAtOCwgLTE0LCAtMywgLTYsIC03LCAtOSwgLTExLCAyLCAtMTMsIC03LCAtNiwgLTUsIDEwLCAtNywgLTYsIC05LCAtNywgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTgsIC04LCAtOCwgLTYsIC03LCAtNiwgLTUsIC02LCAyLCAtMiwgLTksIC0xLCAtOCwgLTYsIC02LCAtMywgLTE1LCAtNywgNywgLTgsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTcsIDYsIDYsIC0xMiwgLTMsIDEsIC0zLCAtMSwgLTYsIC05LCAtMiwgLTEwLCAtMTAsIC03LCAtMSwgLTMsIC0xMCwgLTYsIC04LCA2LCAwLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAxLCAtMTQsIDYsIDYsIC01LCAtMSwgLTYsIC03LCAtNCwgLTUsIC0xMywgLTQsIC01LCAtNiwgLTE0LCAtOSwgLTYsIDAsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNiwgLTMsIC01LCAtOSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNiwgLTUsIC01LCAtOCwgLTUsIC0zLCAtNCwgLTExLCAtNywgLTUsIC01LCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIDFdXTtcbiAgICAgICAgdGhpcy5QQU03MCA9IFtbNSwgLTQsIC0yLCAtMSwgLTQsIC0yLCAtMSwgMCwgLTQsIC0yLCAtNCwgLTQsIC0zLCAtNiwgMCwgMSwgMSwgLTksIC01LCAtMSwgLTEsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstNCwgOCwgLTMsIC02LCAtNSwgMCwgLTUsIC02LCAwLCAtMywgLTYsIDIsIC0yLCAtNywgLTIsIC0xLCAtNCwgMCwgLTcsIC01LCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgNiwgMywgLTcsIC0xLCAwLCAtMSwgMSwgLTMsIC01LCAwLCAtNSwgLTYsIC0zLCAxLCAwLCAtNiwgLTMsIC01LCA1LCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC02LCAzLCA2LCAtOSwgMCwgMywgLTEsIC0xLCAtNSwgLTgsIC0yLCAtNywgLTEwLCAtNCwgLTEsIC0yLCAtMTAsIC03LCAtNSwgNSwgMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNywgLTksIDksIC05LCAtOSwgLTYsIC01LCAtNCwgLTEwLCAtOSwgLTksIC04LCAtNSwgLTEsIC01LCAtMTEsIC0yLCAtNCwgLTgsIC05LCAtNiwgLTExXSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDAsIC05LCA3LCAyLCAtNCwgMiwgLTUsIC0zLCAtMSwgLTIsIC05LCAtMSwgLTMsIC0zLCAtOCwgLTgsIC00LCAtMSwgNSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAwLCAzLCAtOSwgMiwgNiwgLTIsIC0yLCAtNCwgLTYsIC0yLCAtNCwgLTksIC0zLCAtMiwgLTMsIC0xMSwgLTYsIC00LCAyLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFswLCAtNiwgLTEsIC0xLCAtNiwgLTQsIC0yLCA2LCAtNiwgLTYsIC03LCAtNSwgLTYsIC03LCAtMywgMCwgLTMsIC0xMCwgLTksIC0zLCAtMSwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAwLCAxLCAtMSwgLTUsIDIsIC0yLCAtNiwgOCwgLTYsIC00LCAtMywgLTYsIC00LCAtMiwgLTMsIC00LCAtNSwgLTEsIC00LCAwLCAxLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNSwgLTQsIC01LCAtNCwgLTYsIC02LCA3LCAxLCAtNCwgMSwgMCwgLTUsIC00LCAtMSwgLTksIC00LCAzLCAtNCwgLTQsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNiwgLTUsIC04LCAtMTAsIC0zLCAtNiwgLTcsIC00LCAxLCA2LCAtNSwgMiwgLTEsIC01LCAtNiwgLTQsIC00LCAtNCwgMCwgLTYsIC00LCAtNCwgLTExXSxcbiAgICAgICAgICAgIFstNCwgMiwgMCwgLTIsIC05LCAtMSwgLTIsIC01LCAtMywgLTQsIC01LCA2LCAwLCAtOSwgLTQsIC0yLCAtMSwgLTcsIC03LCAtNiwgLTEsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMywgLTIsIC01LCAtNywgLTksIC0yLCAtNCwgLTYsIC02LCAxLCAyLCAwLCAxMCwgLTIsIC01LCAtMywgLTIsIC04LCAtNywgMCwgLTYsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNiwgLTcsIC02LCAtMTAsIC04LCAtOSwgLTksIC03LCAtNCwgMCwgLTEsIC05LCAtMiwgOCwgLTcsIC00LCAtNiwgLTIsIDQsIC01LCAtNywgLTksIC01LCAtMTFdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTQsIC01LCAtMSwgLTMsIC0zLCAtMiwgLTUsIC01LCAtNCwgLTUsIC03LCA3LCAwLCAtMiwgLTksIC05LCAtMywgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgLTEsIC0xLCAtMywgLTIsIDAsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIDAsIDUsIDIsIC0zLCAtNSwgLTMsIDAsIC0yLCAtMSwgLTExXSxcbiAgICAgICAgICAgIFsxLCAtNCwgMCwgLTIsIC01LCAtMywgLTMsIC0zLCAtNCwgLTEsIC00LCAtMSwgLTIsIC02LCAtMiwgMiwgNiwgLTgsIC00LCAtMSwgLTEsIC0zLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstOSwgMCwgLTYsIC0xMCwgLTExLCAtOCwgLTExLCAtMTAsIC01LCAtOSwgLTQsIC03LCAtOCwgLTIsIC05LCAtMywgLTgsIDEzLCAtMywgLTEwLCAtNywgLTEwLCAtNywgLTExXSxcbiAgICAgICAgICAgIFstNSwgLTcsIC0zLCAtNywgLTIsIC04LCAtNiwgLTksIC0xLCAtNCwgLTQsIC03LCAtNywgNCwgLTksIC01LCAtNCwgLTMsIDksIC01LCAtNCwgLTcsIC01LCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTUsIC01LCAtNCwgLTQsIC00LCAtMywgLTQsIDMsIDAsIC02LCAwLCAtNSwgLTMsIC0zLCAtMSwgLTEwLCAtNSwgNiwgLTUsIC00LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTQsIDUsIDUsIC04LCAtMSwgMiwgLTEsIDAsIC00LCAtNiwgLTEsIC02LCAtNywgLTQsIDAsIC0xLCAtNywgLTQsIC01LCA1LCAxLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0xLCAyLCAtOSwgNSwgNSwgLTMsIDEsIC00LCAtNCwgLTIsIC0zLCAtOSwgLTIsIC0yLCAtMywgLTEwLCAtNywgLTQsIDEsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTIsIC0zLCAtNiwgLTIsIC0zLCAtMywgLTMsIC0zLCAtNCwgLTMsIC0zLCAtNSwgLTMsIC0xLCAtMiwgLTcsIC01LCAtMiwgLTIsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTI1MCA9IFtbMiwgLTIsIDAsIDAsIC0yLCAwLCAwLCAxLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0zLCAxLCAxLCAxLCAtNiwgLTMsIDAsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFstMiwgNiwgMCwgLTEsIC00LCAxLCAtMSwgLTMsIDIsIC0yLCAtMywgMywgMCwgLTQsIDAsIDAsIC0xLCAyLCAtNCwgLTIsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDIsIC00LCAxLCAxLCAwLCAyLCAtMiwgLTMsIDEsIC0yLCAtMywgMCwgMSwgMCwgLTQsIC0yLCAtMiwgMiwgMSwgMCwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCA0LCAtNSwgMiwgMywgMSwgMSwgLTIsIC00LCAwLCAtMywgLTYsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAxMiwgLTUsIC01LCAtMywgLTMsIC0yLCAtNiwgLTUsIC01LCAtNCwgLTMsIDAsIC0yLCAtOCwgMCwgLTIsIC00LCAtNSwgLTMsIC04XSxcbiAgICAgICAgICAgIFswLCAxLCAxLCAyLCAtNSwgNCwgMiwgLTEsIDMsIC0yLCAtMiwgMSwgLTEsIC01LCAwLCAtMSwgLTEsIC01LCAtNCwgLTIsIDEsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDEsIDMsIC01LCAyLCA0LCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtNSwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTMsIDAsIDEsIC0zLCAtMSwgMCwgNSwgLTIsIC0zLCAtNCwgLTIsIC0zLCAtNSwgMCwgMSwgMCwgLTcsIC01LCAtMSwgMCwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMiwgMiwgMSwgLTMsIDMsIDEsIC0yLCA2LCAtMiwgLTIsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAtMywgMCwgLTIsIDEsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMiwgNSwgMiwgLTIsIDIsIDEsIC0yLCAtMSwgMCwgLTUsIC0xLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAtMiwgMiwgNiwgLTMsIDQsIDIsIC0zLCAtMywgLTIsIC0yLCAtMSwgMiwgLTMsIC0zLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAxLCAwLCAtNSwgMSwgMCwgLTIsIDAsIC0yLCAtMywgNSwgMCwgLTUsIC0xLCAwLCAwLCAtMywgLTQsIC0yLCAxLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMiwgLTMsIC01LCAtMSwgLTIsIC0zLCAtMiwgMiwgNCwgMCwgNiwgMCwgLTIsIC0yLCAtMSwgLTQsIC0yLCAyLCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgLTYsIC00LCAtNSwgLTUsIC01LCAtMiwgMSwgMiwgLTUsIDAsIDksIC01LCAtMywgLTMsIDAsIDcsIC0xLCAtNCwgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMCwgLTEsIC0zLCAwLCAtMSwgMCwgMCwgLTIsIC0zLCAtMSwgLTIsIC01LCA2LCAxLCAwLCAtNiwgLTUsIC0xLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEsIC0xLCAtMywgMCwgLTIsIC0zLCAxLCAyLCAxLCAtMiwgLTMsIC0xLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIDAsIC0yLCAtMSwgMCwgMCwgLTEsIDAsIC0yLCAwLCAtMSwgLTMsIDAsIDEsIDMsIC01LCAtMywgMCwgMCwgLTEsIDAsIC04XSxcbiAgICAgICAgICAgIFstNiwgMiwgLTQsIC03LCAtOCwgLTUsIC03LCAtNywgLTMsIC01LCAtMiwgLTMsIC00LCAwLCAtNiwgLTIsIC01LCAxNywgMCwgLTYsIC01LCAtNiwgLTQsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0yLCAtNCwgMCwgLTQsIC00LCAtNSwgMCwgLTEsIC0xLCAtNCwgLTIsIDcsIC01LCAtMywgLTMsIDAsIDEwLCAtMiwgLTMsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMiwgNCwgMiwgLTIsIDIsIC0xLCAtMSwgLTEsIDAsIC02LCAtMiwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCAzLCAtNCwgMSwgMywgMCwgMSwgLTIsIC0zLCAxLCAtMiwgLTQsIC0xLCAwLCAwLCAtNSwgLTMsIC0yLCAzLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDEsIDMsIC01LCAzLCAzLCAwLCAyLCAtMiwgLTMsIDAsIC0yLCAtNSwgMCwgMCwgLTEsIC02LCAtNCwgLTIsIDIsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDAsIDAsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5TQ0hORUlERVIgPSBbWzExLjYsIC0yLjcsIDkuNywgLTEuNywgLTIuNywgLTYuNCwgLTMuOSwgLTUuNiwgNS4xLCAtNS4wLCAzLjYsIC00LjIsIC02LjMsIC0xMy4wLCAtNy4xLCAtMTEuNSwgMC40LCAtNi4wLCAtMS45LCAtNS4zLCAtOC41LCAtMTEuMiwgLTguOSwgLTEwLjgsIDIuMSwgMC4wLCAxLjQsIDAuMiwgLTEwLjIsIC0xMy41LCAtMTMuMCwgLTEyLjUsIC0yLjYsIC04LjUsIC01LjAsIC04LjEsIC02LjMsIC05LjksIC03LjUsIC05LjAsIC03LjEsIC0xMC4yLCAtOC4yLCAtOS4yLCAtOC4yLCAtMTIuNSwgLTExLjEsIC0xMS40LCAtNTAuMCwgLTE0LjgsIC01MC4wLCAtMTMuOCwgLTcuMywgLTEwLjEsIC04LjQsIC05LjEsIC01MC4wLCAtMTMuMCwgLTEzLjUsIC0xMi40LCAtMTAuNywgLTE4LjEsIC0xMS44LCAtMTcuMixdLFxuICAgICAgICAgICAgWy0yLjcsIDEzLjAsIC0zLjMsIDEwLjksIC0zLjUsIC0wLjQsIC0zLjMsIC0xLjgsIC01LjQsIDQuNiwgLTUuNSwgMy4wLCAtMTAuMiwgLTcuOSwgLTkuOSwgLTkuNiwgLTUuMCwgMC41LCAtNS41LCAtMS4wLCAtMTAuMywgLTguMSwgLTkuNCwgLTkuNiwgLTguMSwgLTUuMCwgLTcuMywgLTYuMywgLTEzLjQsIC0xMS4zLCAtMTQuNCwgLTEyLjksIC02LjMsIDAuOCwgLTYuNCwgLTEuMSwgLTcuNCwgLTUuMCwgLTYuMiwgLTYuNSwgLTUuNiwgLTEuNiwgLTQuNywgLTMuMCwgLTEwLjgsIC04LjcsIC0xMS45LCAtMTAuMCwgLTUwLjAsIC02LjIsIC01MC4wLCAtNy41LCAtNi4zLCAtNC4zLCAtNi4yLCAtNS40LCAtNTAuMCwgLTcuMCwgLTE2LjMsIC04LjIsIC0xMy4yLCAtMTIuMywgLTEzLjEsIC0xMy4zLF0sXG4gICAgICAgICAgICBbOS43LCAtMy4zLCAxMS42LCAtMi44LCAtNC41LCAtNi43LCAtMy4xLCAtNi45LCAzLjMsIC01LjUsIDQuOCwgLTUuMSwgLTguOSwgLTEzLjIsIC01LjcsIC0xMi42LCAtMS41LCAtNi4xLCAtMC42LCAtNi4xLCAtMTAuMCwgLTExLjgsIC04LjYsIC0xMS45LCAxLjIsIDAuNSwgMi4yLCAwLjEsIC0xMS44LCAtMTQuMCwgLTExLjksIC0xMy40LCAtNC45LCAtOS4xLCAtMy40LCAtOC45LCAtOC4wLCAtMTAuMCwgLTcuMiwgLTEwLjAsIC05LjEsIC0xMC4yLCAtNy4xLCAtOS45LCAtMTAuMSwgLTEzLjAsIC0xMC42LCAtMTIuNywgLTUwLjAsIC0xNC45LCAtNTAuMCwgLTE0LjQsIC04LjksIC0xMC44LCAtOC45LCAtMTAuNCwgLTUwLjAsIC0xMy4xLCAtMTEuOCwgLTEzLjAsIC0xMi40LCAtMTkuNCwgLTExLjUsIC0xNy44LF0sXG4gICAgICAgICAgICBbLTEuNywgMTAuOSwgLTIuOCwgMTIuOSwgLTIuNywgLTIuMiwgLTIuOCwgMC4yLCAtNC44LCAyLjksIC01LjIsIDUuMiwgLTkuMSwgLTkuNSwgLTkuMCwgLTcuMCwgLTQuMCwgLTEuMCwgLTUuMCwgMS4wLCAtOS4wLCAtOC44LCAtOC45LCAtNy43LCAtNy4wLCAtNi44LCAtNy4xLCAtNC4zLCAtMTIuNCwgLTEyLjksIC0xMy45LCAtMTAuMCwgLTQuOSwgLTAuNywgLTUuNiwgMS40LCAtNi4wLCAtNi41LCAtNi4yLCAtNC44LCAtNS4xLCAtMy4yLCAtNS4wLCAtMS4yLCAtOS44LCAtOS45LCAtMTEuMywgLTguMiwgLTUwLjAsIC03LjYsIC01MC4wLCAtNS4xLCAtNS41LCAtNS44LCAtNS45LCAtNC4yLCAtNTAuMCwgLTguMywgLTE1LjUsIC01LjksIC0xMS42LCAtMTQuMiwgLTEyLjAsIC0xMS42LF0sXG4gICAgICAgICAgICBbLTIuNywgLTMuNSwgLTQuNSwgLTIuNywgMTEuNywgOS4wLCAxMC42LCA5LjYsIC0zLjIsIC0wLjcsIC01LjEsIC0wLjQsIDAuNywgLTQuNiwgLTAuNCwgLTMuNiwgLTQuOCwgLTguOSwgLTYuNSwgLTcuOCwgLTEuNCwgLTQuMSwgLTIuOSwgLTMuMywgLTguMCwgLTkuMSwgLTguMCwgLTguMiwgLTYuMCwgLTkuMywgLTcuNywgLTguNSwgLTYuNCwgLTEwLjEsIC03LjUsIC04LjYsIDIuOCwgLTAuNywgMC45LCAwLjEsIC01LjksIC03LjMsIC02LjUsIC02LjUsIC0wLjQsIC0zLjksIC0yLjYsIC0zLjEsIC01MC4wLCAtMTQuNiwgLTUwLjAsIC0xMi42LCAyLjksIDAuMSwgMS44LCAxLjAsIC01MC4wLCAtOS4yLCAtMTMuNiwgLTcuNywgLTQuOCwgLTEyLjIsIC02LjIsIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTYuNCwgLTAuNCwgLTYuNywgLTIuMiwgOS4wLCAxMi4zLCA5LjgsIDkuNiwgLTcuMSwgMi40LCAtNy4yLCAwLjMsIC0yLjksIC0xLjIsIC0zLjAsIC0zLjMsIC03LjYsIC02LjcsIC04LjEsIC03LjksIC00LjksIC0xLjksIC00LjUsIC0zLjgsIC05LjUsIC03LjgsIC05LjMsIC04LjksIC05LjQsIC03LjEsIC05LjAsIC05LjAsIC05LjQsIC03LjUsIC05LjMsIC05LjIsIC0wLjcsIDIuNiwgMC4yLCAtMC4xLCAtOC4wLCAtNC42LCAtNy43LCAtNi4xLCAtMy42LCAtMS4wLCAtNC4xLCAtMy4xLCAtNTAuMCwgLTExLjYsIC01MC4wLCAtMTEuNiwgMC4yLCAyLjMsIDAuNCwgMC41LCAtNTAuMCwgLTYuNSwgLTE1LjMsIC03LjgsIC04LjQsIC05LjUsIC04LjMsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTMuOSwgLTMuMywgLTMuMSwgLTIuOCwgMTAuNiwgOS44LCAxMi4yLCA5LjgsIC00LjksIDAuMSwgLTMuNiwgLTAuMiwgLTEuNywgLTQuMSwgMC45LCAtMy41LCAtNS45LCAtOC45LCAtNS42LCAtOC41LCAtMy45LCAtMy45LCAtMi4yLCAtNC41LCAtNy4zLCAtNy41LCAtNi40LCAtOC41LCAtNy4xLCAtOC4yLCAtNi43LCAtNy44LCAtNy45LCAtOS4xLCAtNy4xLCAtOS40LCAwLjksIC0wLjIsIDIuNSwgLTAuMywgLTYuOSwgLTYuNSwgLTUuNSwgLTYuOCwgLTEuNywgLTMuNCwgLTEuNywgLTIuOCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTExLjUsIDEuNSwgMC43LCAyLjcsIDAuNiwgLTUwLjAsIC04LjksIC0xMi4xLCAtNy40LCAtNi4xLCAtMTEuNSwgLTUuNCwgLTEwLjQsXSxcbiAgICAgICAgICAgIFstNS42LCAtMS44LCAtNi45LCAwLjIsIDkuNiwgOS42LCA5LjgsIDExLjYsIC02LjYsIDAuOSwgLTcuMiwgMi41LCAtMi4zLCAtMy40LCAtMi4zLCAtMC42LCAtNi41LCAtOC4yLCAtOC4wLCAtNi4zLCAtMy43LCAtMy41LCAtMy45LCAtMS42LCAtOS45LCAtOC45LCAtOS42LCAtNy4wLCAtOC42LCAtOC45LCAtOC44LCAtNi44LCAtOC42LCAtOC4yLCAtOC44LCAtNi44LCAwLjMsIDAuMSwgMC4yLCAyLjQsIC03LjQsIC02LjIsIC02LjksIC00LjQsIC0yLjksIC0yLjksIC0zLjUsIC0wLjksIC01MC4wLCAtMTIuMiwgLTUwLjAsIC0xMC4xLCAxLjIsIDAuNiwgMS4yLCAyLjQsIC01MC4wLCAtNy42LCAtMTYuMSwgLTUuOCwgLTcuMiwgLTEwLjgsIC03LjQsIC05LjAsXSxcbiAgICAgICAgICAgIFs1LjEsIC01LjQsIDMuMywgLTQuOCwgLTMuMiwgLTcuMSwgLTQuOSwgLTYuNiwgMTMuMywgLTIuOCwgMTEuMiwgLTEuOSwgLTUuNywgLTEyLjUsIC03LjIsIC0xMS42LCAtMC43LCAtNC44LCAtMy4xLCAtNC4zLCAtMTAuMCwgLTExLjYsIC04LjgsIC0xMS43LCAxMC41LCA3LjcsIDkuMSwgOC41LCAtOS44LCAtMTIuNywgLTExLjcsIC0xMS44LCAtNi4zLCAtMTEuNCwgLTguOCwgLTExLjAsIC03LjUsIC0xMC4zLCAtOC4zLCAtOS45LCAtMS45LCAtNi43LCAtNC4xLCAtNi40LCAtNy45LCAtMTIuNSwgLTExLjQsIC0xMS43LCAtNTAuMCwgLTE0LjAsIC01MC4wLCAtMTMuMiwgLTguNSwgLTEwLjQsIC05LjEsIC05LjYsIC01MC4wLCAtOS44LCAtNy43LCAtOC44LCAtMTAuMywgLTE3LjksIC0xMS44LCAtMTYuMCxdLFxuICAgICAgICAgICAgWy01LjAsIDQuNiwgLTUuNSwgMi45LCAtMC43LCAyLjQsIDAuMSwgMC45LCAtMi44LCAxMi44LCAtMi42LCAxMS4wLCAtOC40LCAtNi4zLCAtOC4zLCAtNy43LCAtNi4xLCAtMi45LCAtNi41LCAtNC4yLCAtOC41LCAtNS45LCAtNy41LCAtNy43LCAtNS41LCAtMi40LCAtNS41LCAtNC4xLCAtMTIuOSwgLTEwLjMsIC0xMi43LCAtMTEuMywgLTcuNCwgLTMuMSwgLTcuNCwgLTQuOSwgLTQuNCwgLTEuOCwgLTMuNSwgLTMuNSwgLTEuNiwgMy4wLCAtMC44LCAwLjksIC04LjQsIC02LjMsIC05LjYsIC03LjMsIC01MC4wLCAtOS4wLCAtNTAuMCwgLTkuNywgLTIuMywgLTAuMiwgLTEuMiwgLTEuNSwgLTUwLjAsIC0wLjcsIC0xMy4zLCAtMi4wLCAtMTEuOCwgLTExLjksIC0xMi4zLCAtMTIuNyxdLFxuICAgICAgICAgICAgWzMuNiwgLTUuNSwgNC44LCAtNS4yLCAtNS4xLCAtNy4yLCAtMy42LCAtNy4yLCAxMS4yLCAtMi42LCAxMy40LCAtMi4xLCAtNy43LCAtMTIuNSwgLTUuMywgLTExLjksIC0yLjIsIC00LjQsIC0xLjksIC00LjgsIC0xMC4yLCAtMTEuNSwgLTguMSwgLTEyLjAsIDkuMywgOC4yLCAxMC4wLCA4LjAsIC0xMC44LCAtMTEuOSwgLTEwLjcsIC0xMi40LCAtOC4yLCAtMTEuOCwgLTYuOSwgLTExLjUsIC04LjQsIC05LjksIC03LjEsIC0xMC42LCAtNC43LCAtNi44LCAtMS4yLCAtNy4wLCAtOS44LCAtMTEuNiwgLTkuNiwgLTEyLjEsIC01MC4wLCAtMTQuMSwgLTUwLjAsIC0xMi43LCAtMTAuMCwgLTEwLjgsIC04LjgsIC0xMC41LCAtNTAuMCwgLTkuMiwgLTQuMiwgLTkuMywgLTExLjAsIC0xOC4yLCAtMTEuMSwgLTE2LjEsXSxcbiAgICAgICAgICAgIFstNC4yLCAzLjAsIC01LjEsIDUuMiwgLTAuNCwgMC4zLCAtMC4yLCAyLjUsIC0xLjksIDExLjAsIC0yLjEsIDEzLjIsIC03LjYsIC04LjUsIC04LjAsIC01LjMsIC01LjYsIC00LjUsIC02LjgsIC0yLjQsIC03LjgsIC03LjksIC03LjksIC02LjIsIC01LjcsIC01LjEsIC01LjQsIC0yLjEsIC0xMi40LCAtMTIuMywgLTEzLjEsIC0xMC4xLCAtNi42LCAtNC40LCAtNi45LCAtMi42LCAtMy42LCAtMy44LCAtMy43LCAtMi4wLCAtMS40LCAwLjgsIC0wLjksIDMuMCwgLTguMiwgLTguMSwgLTkuMiwgLTUuOCwgLTUwLjAsIC0xMC4xLCAtNTAuMCwgLTcuNCwgLTEuNywgLTIuMCwgLTEuNSwgLTAuNSwgLTUwLjAsIC0yLjEsIC0xMi42LCAtMC40LCAtMTEuNiwgLTEzLjksIC0xMS40LCAtMTEuMSxdLFxuICAgICAgICAgICAgWy02LjMsIC0xMC4yLCAtOC45LCAtOS4xLCAwLjcsIC0yLjksIC0xLjcsIC0yLjMsIC01LjcsIC04LjQsIC03LjcsIC03LjYsIDEzLjIsIDkuNiwgMy41LCA5LjcsIC04LjcsIC0xMi40LCAtMTAuNywgLTEwLjcsIC03LjgsIC0xMC4yLCAtOC44LCAtOS42LCAtOS41LCAtMTEuOSwgLTEwLjksIC0xMC41LCAyLjMsIC0wLjQsIC0wLjIsIC0wLjMsIC05LjcsIC0xNS41LCAtMTEuNCwgLTEzLjcsIC0zLjAsIC02LjQsIC00LjEsIC01LjQsIC05LjYsIC0xMS45LCAtMTAuNSwgLTExLjgsIDYuMiwgMy4zLCAzLjcsIDMuNiwgLTUwLjAsIC0xMy42LCAtNTAuMCwgLTExLjksIC01LjYsIC04LjgsIC03LjIsIC04LjksIC01MC4wLCAtMTIuNCwgLTE0LjEsIC0xMS42LCAyLjgsIC02LjQsIDAuNSwgLTUuMixdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy45LCAtMTMuMiwgLTkuNSwgLTQuNiwgLTEuMiwgLTQuMSwgLTMuNCwgLTEyLjUsIC02LjMsIC0xMi41LCAtOC41LCA5LjYsIDEyLjcsIDAuMiwgMTAuNSwgLTEyLjQsIC0xMS42LCAtMTMuMiwgLTEyLjAsIC0xMi40LCAtMTAuMSwgLTExLjYsIC0xMi4wLCAtMTUuMSwgLTEzLjEsIC0xNC4zLCAtMTMuNCwgLTEuNCwgMS40LCAtMS42LCAtMC41LCAtMTQuOSwgLTE0LjMsIC0xNS4yLCAtMTYuOCwgLTcuNywgLTQuNywgLTYuMywgLTYuNiwgLTE0LjYsIC0xMC44LCAtMTIuOCwgLTEzLjAsIDIuMywgNi4wLCAyLjUsIDMuNiwgLTUwLjAsIC0xMS4yLCAtNTAuMCwgLTExLjksIC0xMC41LCAtOS4yLCAtMTAuNSwgLTEwLjUsIC01MC4wLCAtMTAuMywgLTE2LjIsIC0xMS4zLCAtMS43LCAtMy43LCAtMi41LCAtNS40LF0sXG4gICAgICAgICAgICBbLTcuMSwgLTkuOSwgLTUuNywgLTkuMCwgLTAuNCwgLTMuMCwgMC45LCAtMi4zLCAtNy4yLCAtOC4zLCAtNS4zLCAtOC4wLCAzLjUsIDAuMiwgMTQuMywgMS4wLCAtNy4zLCAtMTEuMiwgLTYuOSwgLTkuNywgLTguNSwgLTEwLjIsIC03LjcsIC05LjgsIC0xMC4wLCAtMTAuNCwgLTguNCwgLTEwLjIsIDEuMCwgLTAuNiwgMS43LCAtMC41LCAtMTEuMSwgLTE0LjgsIC05LjcsIC0xNC41LCAtMy43LCAtNS44LCAtMy4xLCAtNS42LCAtMTAuNCwgLTExLjUsIC04LjIsIC0xMS4xLCAwLjYsIC0xLjYsIDEuNiwgLTEuMSwgLTUwLjAsIC0xMi40LCAtNTAuMCwgLTExLjUsIC01LjUsIC04LjAsIC00LjksIC03LjIsIC01MC4wLCAtMTIuNCwgLTEwLjMsIC0xMS42LCAwLjcsIC02LjgsIDIuNCwgLTYuMCxdLFxuICAgICAgICAgICAgWy0xMS41LCAtOS42LCAtMTIuNiwgLTcuMCwgLTMuNiwgLTMuMywgLTMuNSwgLTAuNiwgLTExLjYsIC03LjcsIC0xMS45LCAtNS4zLCA5LjcsIDEwLjUsIDEuMCwgMTIuNiwgLTEyLjAsIC0xMi4yLCAtMTIuNSwgLTkuNywgLTExLjEsIC0xMS4yLCAtMTEuOSwgLTkuNCwgLTEyLjksIC0xNC4zLCAtMTQuMCwgLTExLjksIC0xLjAsIC0wLjQsIC0xLjYsIDEuMiwgLTEzLjksIC0xNS40LCAtMTMuNywgLTEyLjYsIC02LjIsIC02LjcsIC02LjMsIC00LjQsIC0xMy4wLCAtMTIuMiwgLTEzLjAsIC0xMC40LCAyLjksIDMuOCwgMi41LCA1LjgsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC0xMC4yLCAtOS42LCAtOS43LCAtOS42LCAtOC4zLCAtNTAuMCwgLTExLjYsIC0xNS40LCAtOS40LCAtMS4xLCAtNS40LCAtMS42LCAtMy4zLF0sXG4gICAgICAgICAgICBbMC40LCAtNS4wLCAtMS41LCAtNC4wLCAtNC44LCAtNy42LCAtNS45LCAtNi41LCAtMC43LCAtNi4xLCAtMi4yLCAtNS42LCAtOC43LCAtMTIuNCwgLTcuMywgLTEyLjAsIDEyLjgsIDIuMywgMTAuMiwgMy4wLCAwLjAsIC0zLjQsIC0wLjcsIC0zLjIsIDIuNSwgLTAuOCwgMC45LCAwLjIsIC0zLjAsIC03LjIsIC01LjcsIC02LjEsIC0wLjIsIC02LjYsIC0xLjgsIC02LjAsIC01LjMsIC04LjIsIC01LjcsIC03LjYsIC02LjcsIC05LjYsIC03LjUsIC05LjMsIC03LjEsIC0xMC41LCAtOS42LCAtOS40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjIsIC00LjMsIC02LjgsIC01LjcsIC02LjMsIC01MC4wLCAtOS41LCAtOS42LCAtOC45LCAtNi4yLCAtMTIuOCwgLTYuOCwgLTExLjgsXSxcbiAgICAgICAgICAgIFstNi4wLCAwLjUsIC02LjEsIC0xLjAsIC04LjksIC02LjcsIC04LjksIC04LjIsIC00LjgsIC0yLjksIC00LjQsIC00LjUsIC0xMi40LCAtMTEuNiwgLTExLjIsIC0xMi4yLCAyLjMsIDE0LjYsIDEuOSwgMTIuOSwgLTUuNSwgLTIuNiwgLTQuMSwgLTQuNywgLTEuMiwgMy4wLCAtMS4xLCAxLjYsIC04LjAsIC00LjcsIC04LjcsIC02LjAsIC04LjIsIC00LjcsIC03LjgsIC02LjcsIC0xMC4wLCAtOC4zLCAtOC45LCAtOS45LCAtMTAuOCwgLTcuMSwgLTEwLjAsIC05LjIsIC0xMS42LCAtMTAuMSwgLTEyLjMsIC0xMS45LCAtNTAuMCwgMi4yLCAtNTAuMCwgMC45LCAtNy45LCAtNS45LCAtNy40LCAtNi45LCAtNTAuMCwgLTQuNiwgLTExLjYsIC01LjYsIC05LjcsIC01LjksIC05LjksIC03LjMsXSxcbiAgICAgICAgICAgIFstMS45LCAtNS41LCAtMC42LCAtNS4wLCAtNi41LCAtOC4xLCAtNS42LCAtOC4wLCAtMy4xLCAtNi41LCAtMS45LCAtNi44LCAtMTAuNywgLTEzLjIsIC02LjksIC0xMi41LCAxMC4yLCAxLjksIDExLjksIDIuMSwgLTIuMywgLTQuMSwgLTAuNSwgLTQuNiwgLTAuMSwgLTAuOSwgMi40LCAtMC44LCAtNS4xLCAtNi45LCAtNC44LCAtNi43LCAtMi4zLCAtNy4xLCAtMC44LCAtNy4yLCAtNy4yLCAtOC4wLCAtNS42LCAtOC41LCAtOS40LCAtOS43LCAtNy4yLCAtOS44LCAtOS4yLCAtMTEuMSwgLTkuNSwgLTEwLjcsIC01MC4wLCAtOC43LCAtNTAuMCwgLTguNiwgLTYuMSwgLTcuNSwgLTUuNSwgLTcuNywgLTUwLjAsIC0xMC40LCAtNy43LCAtMTAuMCwgLTcuMywgLTEzLjYsIC02LjQsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTUuMywgLTEuMCwgLTYuMSwgMS4wLCAtNy44LCAtNy45LCAtOC41LCAtNi4zLCAtNC4zLCAtNC4yLCAtNC44LCAtMi40LCAtMTAuNywgLTEyLjAsIC05LjcsIC05LjcsIDMuMCwgMTIuOSwgMi4xLCAxNC43LCAtNC45LCAtMy44LCAtNC4wLCAtMi40LCAtMS4wLCAwLjgsIC0xLjMsIDMuNCwgLTcuNiwgLTUuNywgLTguMSwgLTMuNSwgLTYuOCwgLTUuOCwgLTcuMiwgLTQuMiwgLTguOSwgLTEwLjIsIC04LjQsIC04LjIsIC05LjksIC04LjQsIC05LjcsIC02LjQsIC0xMS4xLCAtMTEuMSwgLTExLjgsIC0xMC4wLCAtNTAuMCwgMC40LCAtNTAuMCwgMi42LCAtNy4yLCAtNy4wLCAtNy40LCAtNS4xLCAtNTAuMCwgLTUuNywgLTkuOCwgLTMuMiwgLTguNCwgLTcuNCwgLTguOSwgLTUuOSxdLFxuICAgICAgICAgICAgWy04LjUsIC0xMC4zLCAtMTAuMCwgLTkuMCwgLTEuNCwgLTQuOSwgLTMuOSwgLTMuNywgLTEwLjAsIC04LjUsIC0xMC4yLCAtNy44LCAtNy44LCAtMTIuNCwgLTguNSwgLTExLjEsIDAuMCwgLTUuNSwgLTIuMywgLTQuOSwgMTIuNiwgMTAuMCwgMTEuMSwgMTAuNSwgLTYuMCwgLTguMywgLTYuOSwgLTcuNSwgLTIuMiwgLTcuNCwgLTUuMywgLTUuOSwgLTguOSwgLTEyLjUsIC05LjQsIC0xMS42LCAtMC43LCAtMy45LCAtMi4zLCAtMy4wLCAtOS4xLCAtOS44LCAtOS4yLCAtOS41LCAtNS42LCAtOS4wLCAtOC4wLCAtOC41LCAtNTAuMCwgLTE1LjMsIC01MC4wLCAtMTQuMSwgMi4zLCAtMS40LCAwLjMsIC0wLjUsIC01MC4wLCAtMTMuNiwgLTE0LjMsIC0xMS41LCAtNS4zLCAtMTMuNywgLTYuMSwgLTEyLjcsXSxcbiAgICAgICAgICAgIFstMTEuMiwgLTguMSwgLTExLjgsIC04LjgsIC00LjEsIC0xLjksIC0zLjksIC0zLjUsIC0xMS42LCAtNS45LCAtMTEuNSwgLTcuOSwgLTEwLjIsIC0xMC4xLCAtMTAuMiwgLTExLjIsIC0zLjQsIC0yLjYsIC00LjEsIC0zLjgsIDEwLjAsIDEzLjEsIDEwLjcsIDEwLjYsIC04LjEsIC01LjIsIC04LjAsIC02LjcsIC02LjEsIC0zLjcsIC03LjUsIC01LjYsIC0xMS4xLCAtMTAuMywgLTEwLjYsIC0xMS45LCAtMy4yLCAtMS4wLCAtMi4yLCAtMi44LCAtMTAuNSwgLTguMSwgLTkuNCwgLTkuNSwgLTguMywgLTYuOSwgLTkuNCwgLTguOCwgLTUwLjAsIC0xMS4zLCAtNTAuMCwgLTEyLjgsIC0wLjYsIDIuMiwgLTAuMywgMC4xLCAtNTAuMCwgLTEwLjEsIC0xNy41LCAtMTEuMSwgLTguNiwgLTkuOSwgLTguNiwgLTExLjksXSxcbiAgICAgICAgICAgIFstOC45LCAtOS40LCAtOC42LCAtOC45LCAtMi45LCAtNC41LCAtMi4yLCAtMy45LCAtOC44LCAtNy41LCAtOC4xLCAtNy45LCAtOC44LCAtMTEuNiwgLTcuNywgLTExLjksIC0wLjcsIC00LjEsIC0wLjUsIC00LjAsIDExLjEsIDEwLjcsIDEzLjIsIDEwLjQsIC01LjcsIC01LjgsIC0zLjUsIC02LjEsIC0zLjYsIC02LjUsIC0zLjMsIC01LjUsIC05LjQsIC0xMS4wLCAtOC43LCAtMTEuMiwgLTEuOCwgLTIuNywgMC43LCAtMy4wLCAtOS4xLCAtOC4yLCAtNy4zLCAtOS40LCAtNy4yLCAtOC4yLCAtNy4yLCAtOC4yLCAtNTAuMCwgLTEzLjIsIC01MC4wLCAtMTMuMywgMC41LCAtMC45LCAxLjgsIC0wLjYsIC01MC4wLCAtMTEuNCwgLTExLjEsIC0xMC41LCAtNi4xLCAtMTIuOSwgLTUuMCwgLTExLjksXSxcbiAgICAgICAgICAgIFstMTAuOCwgLTkuNiwgLTExLjksIC03LjcsIC0zLjMsIC0zLjgsIC00LjUsIC0xLjYsIC0xMS43LCAtNy43LCAtMTIuMCwgLTYuMiwgLTkuNiwgLTEyLjAsIC05LjgsIC05LjQsIC0zLjIsIC00LjcsIC00LjYsIC0yLjQsIDEwLjUsIDEwLjYsIDEwLjQsIDEyLjYsIC04LjIsIC03LjksIC05LjAsIC00LjcsIC02LjEsIC02LjAsIC03LjUsIC0yLjksIC0xMC45LCAtMTIuMiwgLTExLjIsIC0xMC45LCAtMi40LCAtMi45LCAtMi43LCAtMC45LCAtMTAuNCwgLTkuNywgLTEwLjIsIC04LjAsIC04LjQsIC05LjEsIC05LjMsIC02LjUsIC01MC4wLCAtMTMuMywgLTUwLjAsIC0xMS4wLCAtMC4wLCAtMC40LCAtMC40LCAyLjMsIC01MC4wLCAtMTAuOSwgLTE3LjIsIC04LjMsIC04LjMsIC0xMi43LCAtNy44LCAtOS4zLF0sXG4gICAgICAgICAgICBbMi4xLCAtOC4xLCAxLjIsIC03LjAsIC04LjAsIC05LjUsIC03LjMsIC05LjksIDEwLjUsIC01LjUsIDkuMywgLTUuNywgLTkuNSwgLTE1LjEsIC0xMC4wLCAtMTIuOSwgMi41LCAtMS4yLCAtMC4xLCAtMS4wLCAtNi4wLCAtOC4xLCAtNS43LCAtOC4yLCAxMy44LCAxMS4zLCAxMS44LCAxMi4xLCAtNi4wLCAtOS4xLCAtOS4wLCAtOS41LCAtOC45LCAtMTMuNCwgLTEwLjAsIC0xMy4xLCAtOS45LCAtMTEuNywgLTkuOCwgLTEyLjgsIC01LjksIC05LjQsIC02LjUsIC04LjEsIC0xMC43LCAtMTQuMCwgLTEzLjMsIC0xMy45LCAtNTAuMCwgLTExLjksIC01MC4wLCAtOS43LCAtOC45LCAtMTAuOCwgLTkuMCwgLTExLjEsIC01MC4wLCAtNi41LCAtNS4zLCAtNi4zLCAtMTAuNSwgLTE2LjIsIC0xMC40LCAtMTUuMixdLFxuICAgICAgICAgICAgWzAuMCwgLTUuMCwgMC41LCAtNi44LCAtOS4xLCAtNy44LCAtNy41LCAtOC45LCA3LjcsIC0yLjQsIDguMiwgLTUuMSwgLTExLjksIC0xMy4xLCAtMTAuNCwgLTE0LjMsIC0wLjgsIDMuMCwgLTAuOSwgMC44LCAtOC4zLCAtNS4yLCAtNS44LCAtNy45LCAxMS4zLCAxNS4wLCAxMS4yLCAxMi44LCAtOS43LCAtNS4zLCAtOS4yLCAtNy44LCAtMTEuNywgLTEwLjYsIC0xMC4xLCAtMTIuMiwgLTExLjcsIC04LjgsIC04LjksIC0xMS44LCAtOS4zLCAtNS4wLCAtOC4wLCAtOC4yLCAtMTMuNiwgLTExLjQsIC0xMi44LCAtMTMuMCwgLTUwLjAsIC03LjIsIC01MC4wLCAtOC40LCAtMTEuMCwgLTcuNywgLTguNywgLTEwLjIsIC01MC4wLCAtMS41LCAtNy4xLCAtNC45LCAtMTEuMiwgLTExLjYsIC0xMS42LCAtMTUuMCxdLFxuICAgICAgICAgICAgWzEuNCwgLTcuMywgMi4yLCAtNy4xLCAtOC4wLCAtOS4zLCAtNi40LCAtOS42LCA5LjEsIC01LjUsIDEwLjAsIC01LjQsIC0xMC45LCAtMTQuMywgLTguNCwgLTE0LjAsIDAuOSwgLTEuMSwgMi40LCAtMS4zLCAtNi45LCAtOC4wLCAtMy41LCAtOS4wLCAxMS44LCAxMS4yLCAxMy40LCAxMS40LCAtNy4zLCAtOC44LCAtNi41LCAtOC41LCAtMTAuMCwgLTEyLjUsIC03LjgsIC0xMi41LCAtOS42LCAtMTEuMCwgLTcuMSwgLTEwLjcsIC03LjksIC04LjAsIC00LjMsIC05LjQsIC0xMS40LCAtMTIuMywgLTEwLjksIC0xMi45LCAtNTAuMCwgLTExLjgsIC01MC4wLCAtMTEuMiwgLTkuNCwgLTkuOCwgLTcuMywgLTEwLjUsIC01MC4wLCAtNi4yLCAtMi4yLCAtNi43LCAtOS44LCAtMTUuMiwgLTguNSwgLTE0LjksXSxcbiAgICAgICAgICAgIFswLjIsIC02LjMsIDAuMSwgLTQuMywgLTguMiwgLTguOSwgLTguNSwgLTcuMCwgOC41LCAtNC4xLCA4LjAsIC0yLjEsIC0xMC41LCAtMTMuNCwgLTEwLjIsIC0xMS45LCAwLjIsIDEuNiwgLTAuOCwgMy40LCAtNy41LCAtNi43LCAtNi4xLCAtNC43LCAxMi4xLCAxMi44LCAxMS40LCAxNC43LCAtOC43LCAtNy40LCAtOS40LCAtNS4zLCAtOS45LCAtMTEuOCwgLTEwLjUsIC0xMC4zLCAtOS45LCAtMTAuMSwgLTkuMywgLTkuMywgLTguMSwgLTcuMiwgLTguMCwgLTUuMiwgLTEyLjAsIC0xMi4xLCAtMTIuNiwgLTEwLjksIC01MC4wLCAtNy45LCAtNTAuMCwgLTUuMywgLTkuMywgLTguOCwgLTguOSwgLTcuMCwgLTUwLjAsIC0zLjYsIC03LjEsIC0xLjIsIC0xMC4yLCAtMTIuNywgLTkuOSwgLTExLjAsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEzLjQsIC0xMS44LCAtMTIuNCwgLTYuMCwgLTkuNCwgLTcuMSwgLTguNiwgLTkuOCwgLTEyLjksIC0xMC44LCAtMTIuNCwgMi4zLCAtMS40LCAxLjAsIC0xLjAsIC0zLjAsIC04LjAsIC01LjEsIC03LjYsIC0yLjIsIC02LjEsIC0zLjYsIC02LjEsIC02LjAsIC05LjcsIC03LjMsIC04LjcsIDExLjIsIDcuOSwgOC45LCA4LjEsIC0xMi4xLCAtMTcuNCwgLTEzLjIsIC0xNi44LCAtNi4zLCAtOS41LCAtNy41LCAtOC44LCAtMTIuNywgLTE1LjIsIC0xMy4xLCAtMTQuMiwgMC4wLCAtMy4xLCAtMS44LCAtMy4xLCAtNTAuMCwgLTEwLjcsIC01MC4wLCAtOS4zLCAtNC42LCAtOC45LCAtNS45LCAtOC4zLCAtNTAuMCwgLTEyLjgsIC05LjYsIC0xMC42LCA5LjUsIC0zLjIsIDguMiwgLTIuOCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTEuMywgLTE0LjAsIC0xMi45LCAtOS4zLCAtNy4xLCAtOC4yLCAtOC45LCAtMTIuNywgLTEwLjMsIC0xMS45LCAtMTIuMywgLTAuNCwgMS40LCAtMC42LCAtMC40LCAtNy4yLCAtNC43LCAtNi45LCAtNS43LCAtNy40LCAtMy43LCAtNi41LCAtNi4wLCAtOS4xLCAtNS4zLCAtOC44LCAtNy40LCA3LjksIDExLjksIDcuOCwgOS4zLCAtMTUuMiwgLTE1LjEsIC0xNC42LCAtMTcuMiwgLTkuNywgLTcuMywgLTguMiwgLTkuMiwgLTE1LjAsIC0xMi44LCAtMTQuMSwgLTE0LjksIC0yLjgsIDAuMiwgLTIuOSwgLTIuMywgLTUwLjAsIC03LjQsIC01MC4wLCAtOC43LCAtOS40LCAtNy4zLCAtOS40LCAtOS40LCAtNTAuMCwgLTguMCwgLTExLjksIC05LjcsIDYuNSwgMC41LCA2LjQsIC0xLjgsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTE0LjQsIC0xMS45LCAtMTMuOSwgLTcuNywgLTkuMCwgLTYuNywgLTguOCwgLTExLjcsIC0xMi43LCAtMTAuNywgLTEzLjEsIC0wLjIsIC0xLjYsIDEuNywgLTEuNiwgLTUuNywgLTguNywgLTQuOCwgLTguMSwgLTUuMywgLTcuNSwgLTMuMywgLTcuNSwgLTkuMCwgLTkuMiwgLTYuNSwgLTkuNCwgOC45LCA3LjgsIDEwLjEsIDcuOCwgLTE0LjMsIC0xNy43LCAtMTMuMCwgLTE3LjgsIC04LjAsIC05LjQsIC02LjIsIC05LjIsIC0xNS4xLCAtMTQuOSwgLTEyLjIsIC0xNC45LCAtMS44LCAtMy4yLCAtMC44LCAtMy4yLCAtNTAuMCwgLTEwLjgsIC01MC4wLCAtOS45LCAtNy4zLCAtOS42LCAtNi40LCAtOS40LCAtNTAuMCwgLTEyLjMsIC04LjcsIC0xMS4zLCA3LjYsIC0zLjMsIDguNywgLTIuOSxdLFxuICAgICAgICAgICAgWy0xMi41LCAtMTIuOSwgLTEzLjQsIC0xMC4wLCAtOC41LCAtOS4wLCAtNy44LCAtNi44LCAtMTEuOCwgLTExLjMsIC0xMi40LCAtMTAuMSwgLTAuMywgLTAuNSwgLTAuNSwgMS4yLCAtNi4xLCAtNi4wLCAtNi43LCAtMy41LCAtNS45LCAtNS42LCAtNS41LCAtMi45LCAtOS41LCAtNy44LCAtOC41LCAtNS4zLCA4LjEsIDkuMywgNy44LCAxMS44LCAtMTQuNCwgLTE1LjcsIC0xNC41LCAtMTQuNiwgLTguNCwgLTguNywgLTcuOSwgLTcuMSwgLTE0LjMsIC0xMy44LCAtMTMuOCwgLTEyLjMsIC0yLjQsIC0yLjIsIC0yLjksIC0wLjIsIC01MC4wLCAtOC45LCAtNTAuMCwgLTcuMSwgLTguMSwgLTkuMSwgLTguNywgLTYuNiwgLTUwLjAsIC05LjcsIC0xMS40LCAtOC4wLCA2LjgsIC0xLjgsIDYuOSwgMC40LF0sXG4gICAgICAgICAgICBbLTIuNiwgLTYuMywgLTQuOSwgLTQuOSwgLTYuNCwgLTkuNCwgLTcuOSwgLTguNiwgLTYuMywgLTcuNCwgLTguMiwgLTYuNiwgLTkuNywgLTE0LjksIC0xMS4xLCAtMTMuOSwgLTAuMiwgLTguMiwgLTIuMywgLTYuOCwgLTguOSwgLTExLjEsIC05LjQsIC0xMC45LCAtOC45LCAtMTEuNywgLTEwLjAsIC05LjksIC0xMi4xLCAtMTUuMiwgLTE0LjMsIC0xNC40LCAxMS4xLCAyLjksIDkuMiwgMy41LCAtMy4wLCAtNy4wLCAtNC4zLCAtNi4yLCAtMi4yLCAtNi42LCAtMy43LCAtNS43LCAtNi4wLCAtMTAuNCwgLTguNiwgLTkuNSwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTEzLjksIC03LjgsIC0xMC41LCAtOC43LCAtOS42LCAtNTAuMCwgLTE2LjUsIC0xNy4xLCAtMTQuOCwgLTEyLjEsIC0xOC45LCAtMTIuNCwgLTE3LjQsXSxcbiAgICAgICAgICAgIFstOC41LCAwLjgsIC05LjEsIC0wLjcsIC0xMC4xLCAtNy41LCAtOS4xLCAtOC4yLCAtMTEuNCwgLTMuMSwgLTExLjgsIC00LjQsIC0xNS41LCAtMTQuMywgLTE0LjgsIC0xNS40LCAtNi42LCAtNC43LCAtNy4xLCAtNS44LCAtMTIuNSwgLTEwLjMsIC0xMS4wLCAtMTIuMiwgLTEzLjQsIC0xMC42LCAtMTIuNSwgLTExLjgsIC0xNy40LCAtMTUuMSwgLTE3LjcsIC0xNS43LCAyLjksIDEyLjUsIDMuMSwgMTAuMywgLTcuNywgLTUuMiwgLTYuMiwgLTcuMywgLTUuNCwgLTEuNywgLTUuNCwgLTMuNywgLTExLjYsIC05LjEsIC0xMy4wLCAtMTAuOCwgLTUwLjAsIC0xMC4zLCAtNTAuMCwgLTExLjIsIC05LjgsIC04LjMsIC05LjEsIC05LjcsIC01MC4wLCAtMTIuNywgLTIwLjYsIC0xMy4xLCAtMTYuMCwgLTE2LjYsIC0xNy4wLCAtMTguNCxdLFxuICAgICAgICAgICAgWy01LjAsIC02LjQsIC0zLjQsIC01LjYsIC03LjUsIC05LjMsIC03LjEsIC04LjgsIC04LjgsIC03LjQsIC02LjksIC02LjksIC0xMS40LCAtMTUuMiwgLTkuNywgLTEzLjcsIC0xLjgsIC03LjgsIC0wLjgsIC03LjIsIC05LjQsIC0xMC42LCAtOC43LCAtMTEuMiwgLTEwLjAsIC0xMC4xLCAtNy44LCAtMTAuNSwgLTEzLjIsIC0xNC42LCAtMTMuMCwgLTE0LjUsIDkuMiwgMy4xLCAxMC44LCAzLjAsIC00LjUsIC02LjcsIC0yLjcsIC02LjcsIC01LjAsIC02LjgsIC0yLjUsIC02LjcsIC03LjUsIC0xMC40LCAtNy40LCAtMTAuMiwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTE0LjIsIC04LjksIC0xMC4yLCAtOC41LCAtMTAuMCwgLTUwLjAsIC0xNS42LCAtMTUuMywgLTE1LjUsIC0xMy4wLCAtMTguOCwgLTEyLjYsIC0xOC4zLF0sXG4gICAgICAgICAgICBbLTguMSwgLTEuMSwgLTguOSwgMS40LCAtOC42LCAtOS4yLCAtOS40LCAtNi44LCAtMTEuMCwgLTQuOSwgLTExLjUsIC0yLjYsIC0xMy43LCAtMTYuOCwgLTE0LjUsIC0xMi42LCAtNi4wLCAtNi43LCAtNy4yLCAtNC4yLCAtMTEuNiwgLTExLjksIC0xMS4yLCAtMTAuOSwgLTEzLjEsIC0xMi4yLCAtMTIuNSwgLTEwLjMsIC0xNi44LCAtMTcuMiwgLTE3LjgsIC0xNC42LCAzLjUsIDEwLjMsIDMuMCwgMTIuNCwgLTYuOSwgLTcuNSwgLTYuOCwgLTQuOSwgLTUuNCwgLTQuMiwgLTUuNCwgLTEuMywgLTEwLjgsIC0xMS41LCAtMTIuNCwgLTguMiwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTguOSwgLTkuMiwgLTEwLjAsIC05LjQsIC03LjksIC01MC4wLCAtMTQuMywgLTE5LjksIC0xMS40LCAtMTYuMiwgLTE5LjIsIC0xNS44LCAtMTUuOSxdLFxuICAgICAgICAgICAgWy02LjMsIC03LjQsIC04LjAsIC02LjAsIDIuOCwgLTAuNywgMC45LCAwLjMsIC03LjUsIC00LjQsIC04LjQsIC0zLjYsIC0zLjAsIC03LjcsIC0zLjcsIC02LjIsIC01LjMsIC0xMC4wLCAtNy4yLCAtOC45LCAtMC43LCAtMy4yLCAtMS44LCAtMi40LCAtOS45LCAtMTEuNywgLTkuNiwgLTkuOSwgLTYuMywgLTkuNywgLTguMCwgLTguNCwgLTMuMCwgLTcuNywgLTQuNSwgLTYuOSwgMTEuMywgOC4yLCA5LjQsIDkuMSwgLTEuMCwgLTMuMywgLTEuOCwgLTIuNCwgMS41LCAtMi4xLCAtMC40LCAtMS4xLCAtNTAuMCwgLTE0LjUsIC01MC4wLCAtMTIuOSwgMi44LCAtMC4wLCAxLjQsIDAuNywgLTUwLjAsIC04LjcsIC0xNC4xLCAtNy41LCAtNS4yLCAtMTIuNSwgLTYuNSwgLTEwLjcsXSxcbiAgICAgICAgICAgIFstOS45LCAtNS4wLCAtMTAuMCwgLTYuNSwgLTAuNywgMi42LCAtMC4yLCAwLjEsIC0xMC4zLCAtMS44LCAtOS45LCAtMy44LCAtNi40LCAtNC43LCAtNS44LCAtNi43LCAtOC4yLCAtOC4zLCAtOC4wLCAtMTAuMiwgLTMuOSwgLTEuMCwgLTIuNywgLTIuOSwgLTExLjcsIC04LjgsIC0xMS4wLCAtMTAuMSwgLTkuNSwgLTcuMywgLTkuNCwgLTguNywgLTcuMCwgLTUuMiwgLTYuNywgLTcuNSwgOC4yLCAxMS42LCA4LjgsIDkuMSwgLTMuNywgLTAuOSwgLTMuMSwgLTMuMCwgLTIuMCwgMS4yLCAtMi4zLCAtMS4zLCAtNTAuMCwgLTEyLjEsIC01MC4wLCAtMTIuNiwgMC4xLCAyLjUsIDAuNywgMC42LCAtNTAuMCwgLTYuMCwgLTE0LjgsIC03LjUsIC04LjYsIC05LjQsIC04LjUsIC0xMS4yLF0sXG4gICAgICAgICAgICBbLTcuNSwgLTYuMiwgLTcuMiwgLTYuMiwgMC45LCAwLjIsIDIuNSwgMC4yLCAtOC4zLCAtMy41LCAtNy4xLCAtMy43LCAtNC4xLCAtNi4zLCAtMy4xLCAtNi4zLCAtNS43LCAtOC45LCAtNS42LCAtOC40LCAtMi4zLCAtMi4yLCAwLjcsIC0yLjcsIC05LjgsIC04LjksIC03LjEsIC05LjMsIC03LjUsIC04LjIsIC02LjIsIC03LjksIC00LjMsIC02LjIsIC0yLjcsIC02LjgsIDkuNCwgOC44LCAxMi4xLCA4LjgsIC0yLjEsIC0yLjAsIDAuMSwgLTIuNCwgMC4wLCAtMS4xLCAxLjMsIC0wLjgsIC01MC4wLCAtMTEuOSwgLTUwLjAsIC0xMi42LCAxLjIsIDAuNywgMy41LCAwLjgsIC01MC4wLCAtNy4xLCAtMTIuNCwgLTcuMSwgLTcuMSwgLTEwLjYsIC01LjAsIC0xMC42LF0sXG4gICAgICAgICAgICBbLTkuMCwgLTYuNSwgLTEwLjAsIC00LjgsIDAuMSwgLTAuMSwgLTAuMywgMi40LCAtOS45LCAtMy41LCAtMTAuNiwgLTIuMCwgLTUuNCwgLTYuNiwgLTUuNiwgLTQuNCwgLTcuNiwgLTkuOSwgLTguNSwgLTguMiwgLTMuMCwgLTIuOCwgLTMuMCwgLTAuOSwgLTEyLjgsIC0xMS44LCAtMTAuNywgLTkuMywgLTguOCwgLTkuMiwgLTkuMiwgLTcuMSwgLTYuMiwgLTcuMywgLTYuNywgLTQuOSwgOS4xLCA5LjEsIDguOCwgMTEuMiwgLTMuMSwgLTMuMCwgLTMuMywgLTEuMCwgLTEuMSwgLTEuNCwgLTIuMCwgMS4yLCAtNTAuMCwgLTEyLjgsIC01MC4wLCAtMTAuOSwgMC44LCAwLjUsIDAuNywgMi4zLCAtNTAuMCwgLTcuNSwgLTE2LjUsIC01LjksIC03LjgsIC0xMS4xLCAtNy44LCAtOS4wLF0sXG4gICAgICAgICAgICBbLTcuMSwgLTUuNiwgLTkuMSwgLTUuMSwgLTUuOSwgLTguMCwgLTYuOSwgLTcuNCwgLTEuOSwgLTEuNiwgLTQuNywgLTEuNCwgLTkuNiwgLTE0LjYsIC0xMC40LCAtMTMuMCwgLTYuNywgLTEwLjgsIC05LjQsIC05LjksIC05LjEsIC0xMC41LCAtOS4xLCAtMTAuNCwgLTUuOSwgLTkuMywgLTcuOSwgLTguMSwgLTEyLjcsIC0xNS4wLCAtMTUuMSwgLTE0LjMsIC0yLjIsIC01LjQsIC01LjAsIC01LjQsIC0xLjAsIC0zLjcsIC0yLjEsIC0zLjEsIDEyLjgsIDkuNiwgMTEuMSwgMTAuMSwgLTQuOCwgLTkuNCwgLTguMSwgLTguNiwgLTUwLjAsIC0xOC4zLCAtNTAuMCwgLTE1LjQsIC01LjksIC03LjUsIC02LjYsIC03LjEsIC01MC4wLCAtOS41LCAtMTEuNywgLTguNCwgLTEyLjUsIC0xNy4zLCAtMTMuMiwgLTE1LjQsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEuNiwgLTEwLjIsIC0zLjIsIC03LjMsIC00LjYsIC02LjUsIC02LjIsIC02LjcsIDMuMCwgLTYuOCwgMC44LCAtMTEuOSwgLTEwLjgsIC0xMS41LCAtMTIuMiwgLTkuNiwgLTcuMSwgLTkuNywgLTguNCwgLTkuOCwgLTguMSwgLTguMiwgLTkuNywgLTkuNCwgLTUuMCwgLTguMCwgLTcuMiwgLTE1LjIsIC0xMi44LCAtMTQuOSwgLTEzLjgsIC02LjYsIC0xLjcsIC02LjgsIC00LjIsIC0zLjMsIC0wLjksIC0yLjAsIC0zLjAsIDkuNiwgMTIuOCwgOS43LCAxMC41LCAtOC41LCAtNS42LCAtOS4zLCAtNy44LCAtNTAuMCwgLTEyLjcsIC01MC4wLCAtMTMuOCwgLTYuOCwgLTUuMSwgLTUuMywgLTYuNSwgLTUwLjAsIC00LjEsIC0xMi44LCAtNS44LCAtMTQuNCwgLTE0LjEsIC0xMy42LCAtMTQuOCxdLFxuICAgICAgICAgICAgWy04LjIsIC00LjcsIC03LjEsIC01LjAsIC02LjUsIC03LjcsIC01LjUsIC02LjksIC00LjEsIC0wLjgsIC0xLjIsIC0wLjksIC0xMC41LCAtMTIuOCwgLTguMiwgLTEzLjAsIC03LjUsIC0xMC4wLCAtNy4yLCAtOS43LCAtOS4yLCAtOS40LCAtNy4zLCAtMTAuMiwgLTYuNSwgLTguMCwgLTQuMywgLTguMCwgLTEzLjEsIC0xNC4xLCAtMTIuMiwgLTEzLjgsIC0zLjcsIC01LjQsIC0yLjUsIC01LjQsIC0xLjgsIC0zLjEsIDAuMSwgLTMuMywgMTEuMSwgOS43LCAxMi45LCA5LjgsIC01LjUsIC04LjEsIC01LjQsIC03LjgsIC01MC4wLCAtMTYuNCwgLTUwLjAsIC0xNC44LCAtNS45LCAtNy4xLCAtNC43LCAtNy4yLCAtNTAuMCwgLTguNCwgLTYuNCwgLTguMSwgLTEyLjEsIC0xNi4yLCAtMTAuMywgLTE1LjgsXSxcbiAgICAgICAgICAgIFstOS4yLCAtMy4wLCAtOS45LCAtMS4yLCAtNi41LCAtNi4xLCAtNi44LCAtNC40LCAtNi40LCAwLjksIC03LjAsIDMuMCwgLTExLjgsIC0xMy4wLCAtMTEuMSwgLTEwLjQsIC05LjMsIC05LjIsIC05LjgsIC02LjQsIC05LjUsIC05LjUsIC05LjQsIC04LjAsIC04LjEsIC04LjIsIC05LjQsIC01LjIsIC0xNC4yLCAtMTQuOSwgLTE0LjksIC0xMi4zLCAtNS43LCAtMy43LCAtNi43LCAtMS4zLCAtMi40LCAtMy4wLCAtMi40LCAtMS4wLCAxMC4xLCAxMC41LCA5LjgsIDEzLjEsIC03LjIsIC04LjAsIC04LjQsIC01LjAsIC01MC4wLCAtMTQuNywgLTUwLjAsIC0xMS40LCAtNi4zLCAtNi43LCAtNS44LCAtNS4wLCAtNTAuMCwgLTYuMSwgLTEzLjQsIC0zLjYsIC0xMy4wLCAtMTYuMCwgLTEzLjcsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTguMiwgLTEwLjgsIC0xMC4xLCAtOS44LCAtMC40LCAtMy42LCAtMS43LCAtMi45LCAtNy45LCAtOC40LCAtOS44LCAtOC4yLCA2LjIsIDIuMywgMC42LCAyLjksIC03LjEsIC0xMS42LCAtOS4yLCAtMTEuMSwgLTUuNiwgLTguMywgLTcuMiwgLTguNCwgLTEwLjcsIC0xMy42LCAtMTEuNCwgLTEyLjAsIDAuMCwgLTIuOCwgLTEuOCwgLTIuNCwgLTYuMCwgLTExLjYsIC03LjUsIC0xMC44LCAxLjUsIC0yLjAsIDAuMCwgLTEuMSwgLTQuOCwgLTguNSwgLTUuNSwgLTcuMiwgMTEuOSwgOC42LCAxMC4wLCA5LjAsIC01MC4wLCAtMTQuMiwgLTUwLjAsIC0xMi44LCAtNC4xLCAtNy40LCAtNS43LCAtNi41LCAtNTAuMCwgLTExLjAsIC0xNC4zLCAtOS45LCAxLjQsIC03LjksIC0wLjcsIC02LjgsXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTguNywgLTEzLjAsIC05LjksIC0zLjksIC0xLjAsIC0zLjQsIC0yLjksIC0xMi41LCAtNi4zLCAtMTEuNiwgLTguMSwgMy4zLCA2LjAsIC0xLjYsIDMuOCwgLTEwLjUsIC0xMC4xLCAtMTEuMSwgLTExLjEsIC05LjAsIC02LjksIC04LjIsIC05LjEsIC0xNC4wLCAtMTEuNCwgLTEyLjMsIC0xMi4xLCAtMy4xLCAwLjIsIC0zLjIsIC0yLjIsIC0xMC40LCAtOS4xLCAtMTAuNCwgLTExLjUsIC0yLjEsIDEuMiwgLTEuMSwgLTEuNCwgLTkuNCwgLTUuNiwgLTguMSwgLTguMCwgOC42LCAxMi40LCA4LjYsIDkuNSwgLTUwLjAsIC0xMC40LCAtNTAuMCwgLTExLjYsIC03LjIsIC01LjcsIC03LjUsIC03LjQsIC01MC4wLCAtOC42LCAtMTUuNywgLTkuNywgLTMuMCwgLTMuNywgLTMuMiwgLTUuOSxdLFxuICAgICAgICAgICAgWy0xMS4xLCAtMTEuOSwgLTEwLjYsIC0xMS4zLCAtMi42LCAtNC4xLCAtMS43LCAtMy41LCAtMTEuNCwgLTkuNiwgLTkuNiwgLTkuMiwgMy43LCAyLjUsIDEuNiwgMi41LCAtOS42LCAtMTIuMywgLTkuNSwgLTExLjgsIC04LjAsIC05LjQsIC03LjIsIC05LjMsIC0xMy4zLCAtMTIuOCwgLTEwLjksIC0xMi42LCAtMS44LCAtMi45LCAtMC44LCAtMi45LCAtOC42LCAtMTMuMCwgLTcuNCwgLTEyLjQsIC0wLjQsIC0yLjMsIDEuMywgLTIuMCwgLTguMSwgLTkuMywgLTUuNCwgLTguNCwgMTAuMCwgOC42LCAxMS40LCA4LjksIC01MC4wLCAtMTMuNywgLTUwLjAsIC0xMy4yLCAtNi4xLCAtOC4xLCAtNS41LCAtNy41LCAtNTAuMCwgLTExLjMsIC0xMi43LCAtMTAuMSwgLTEuNiwgLTcuOCwgLTAuMywgLTcuMixdLFxuICAgICAgICAgICAgWy0xMS40LCAtMTAuMCwgLTEyLjcsIC04LjIsIC0zLjEsIC0zLjEsIC0yLjgsIC0wLjksIC0xMS43LCAtNy4zLCAtMTIuMSwgLTUuOCwgMy42LCAzLjYsIC0xLjEsIDUuOCwgLTkuNCwgLTExLjksIC0xMC43LCAtMTAuMCwgLTguNSwgLTguOCwgLTguMiwgLTYuNSwgLTEzLjksIC0xMy4wLCAtMTIuOSwgLTEwLjksIC0zLjEsIC0yLjMsIC0zLjIsIC0wLjIsIC05LjUsIC0xMC44LCAtMTAuMiwgLTguMiwgLTEuMSwgLTEuMywgLTAuOCwgMS4yLCAtOC42LCAtNy44LCAtNy44LCAtNS4wLCA5LjAsIDkuNSwgOC45LCAxMi4wLCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTAuMywgLTYuMiwgLTcuMCwgLTcuMSwgLTUuNCwgLTUwLjAsIC05LjMsIC0xNC4wLCAtOC4yLCAtMi40LCAtNi4zLCAtMi40LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIDMwLjYsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTQuOCwgLTYuMiwgLTE0LjksIC03LjYsIC0xNC42LCAtMTEuNiwgLTEzLjAsIC0xMi4yLCAtMTQuMCwgLTkuMCwgLTE0LjEsIC0xMC4xLCAtMTMuNiwgLTExLjIsIC0xMi40LCAtMTIuNSwgLTguMSwgMi4yLCAtOC43LCAwLjQsIC0xNS4zLCAtMTEuMywgLTEzLjIsIC0xMy4zLCAtMTEuOSwgLTcuMiwgLTExLjgsIC03LjksIC0xMC43LCAtNy40LCAtMTAuOCwgLTguOSwgLTE1LjUsIC0xMC4zLCAtMTUuNSwgLTEyLjUsIC0xNC41LCAtMTIuMSwgLTExLjksIC0xMi44LCAtMTguMywgLTEyLjcsIC0xNi40LCAtMTQuNywgLTE0LjIsIC0xMC40LCAtMTMuNywgLTEzLjAsIC01MC4wLCAxNS4xLCAtNTAuMCwgMTMuMywgLTkuOSwgLTUuOCwgLTguOSwgLTcuNiwgLTUwLjAsIC0xLjUsIC03LjgsIC0zLjAsIC04LjEsIDMuNiwgLTkuNCwgMi4wLF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzAuNiwgLTUwLjAsIDM1LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuOCwgLTcuNSwgLTE0LjQsIC01LjEsIC0xMi42LCAtMTEuNiwgLTExLjUsIC0xMC4xLCAtMTMuMiwgLTkuNywgLTEyLjcsIC03LjQsIC0xMS45LCAtMTEuOSwgLTExLjUsIC0xMC4yLCAtNy4yLCAwLjksIC04LjYsIDIuNiwgLTE0LjEsIC0xMi44LCAtMTMuMywgLTExLjAsIC05LjcsIC04LjQsIC0xMS4yLCAtNS4zLCAtOS4zLCAtOC43LCAtOS45LCAtNy4xLCAtMTMuOSwgLTExLjIsIC0xNC4yLCAtOC45LCAtMTIuOSwgLTEyLjYsIC0xMi42LCAtMTAuOSwgLTE1LjQsIC0xMy44LCAtMTQuOCwgLTExLjQsIC0xMi44LCAtMTEuNiwgLTEzLjIsIC0xMC4zLCAtNTAuMCwgMTMuMywgLTUwLjAsIDE1LjIsIC04LjYsIC03LjAsIC04LjQsIC00LjgsIC01MC4wLCAtMy4wLCAtNy4xLCAtMC4xLCAtNy4zLCAyLjMsIC04LjcsIDMuOSxdLFxuICAgICAgICAgICAgWy03LjMsIC02LjMsIC04LjksIC01LjUsIDIuOSwgMC4yLCAxLjUsIDEuMiwgLTguNSwgLTIuMywgLTEwLjAsIC0xLjcsIC01LjYsIC0xMC41LCAtNS41LCAtOS42LCAtNC4zLCAtNy45LCAtNi4xLCAtNy4yLCAyLjMsIC0wLjYsIDAuNSwgLTAuMCwgLTguOSwgLTExLjAsIC05LjQsIC05LjMsIC00LjYsIC05LjQsIC03LjMsIC04LjEsIC03LjgsIC05LjgsIC04LjksIC05LjIsIDIuOCwgMC4xLCAxLjIsIDAuOCwgLTUuOSwgLTYuOCwgLTUuOSwgLTYuMywgLTQuMSwgLTcuMiwgLTYuMSwgLTYuMiwgLTUwLjAsIC05LjksIC01MC4wLCAtOC42LCAxMi41LCA5LjQsIDExLjAsIDkuOCwgLTUwLjAsIC00LjgsIC04LjcsIC0zLjUsIC0wLjAsIC04LjYsIC0yLjEsIC03LjAsXSxcbiAgICAgICAgICAgIFstMTAuMSwgLTQuMywgLTEwLjgsIC01LjgsIDAuMSwgMi4zLCAwLjcsIDAuNiwgLTEwLjQsIC0wLjIsIC0xMC44LCAtMi4wLCAtOC44LCAtOS4yLCAtOC4wLCAtOS43LCAtNi44LCAtNS45LCAtNy41LCAtNy4wLCAtMS40LCAyLjIsIC0wLjksIC0wLjQsIC0xMC44LCAtNy43LCAtOS44LCAtOC44LCAtOC45LCAtNy4zLCAtOS42LCAtOS4xLCAtMTAuNSwgLTguMywgLTEwLjIsIC0xMC4wLCAtMC4wLCAyLjUsIDAuNywgMC41LCAtNy41LCAtNS4xLCAtNy4xLCAtNi43LCAtNy40LCAtNS43LCAtOC4xLCAtNy4wLCAtNTAuMCwgLTUuOCwgLTUwLjAsIC03LjAsIDkuNCwgMTIuNywgMTAuMSwgMTAuMCwgLTUwLjAsIC0xLjUsIC0xMS4zLCAtMy4zLCAtNS40LCAtNC4yLCAtNS42LCAtNi44LF0sXG4gICAgICAgICAgICBbLTguNCwgLTYuMiwgLTguOSwgLTUuOSwgMS44LCAwLjQsIDIuNywgMS4yLCAtOS4xLCAtMS4yLCAtOC44LCAtMS41LCAtNy4yLCAtMTAuNSwgLTQuOSwgLTkuNiwgLTUuNywgLTcuNCwgLTUuNSwgLTcuNCwgMC4zLCAtMC4zLCAxLjgsIC0wLjQsIC05LjAsIC04LjcsIC03LjMsIC04LjksIC01LjksIC05LjQsIC02LjQsIC04LjcsIC04LjcsIC05LjEsIC04LjUsIC05LjQsIDEuNCwgMC43LCAzLjUsIDAuNywgLTYuNiwgLTUuMywgLTQuNywgLTUuOCwgLTUuNywgLTcuNSwgLTUuNSwgLTcuMSwgLTUwLjAsIC04LjksIC01MC4wLCAtOC40LCAxMS4wLCAxMC4xLCAxMy4yLCAxMC4yLCAtNTAuMCwgLTQuMiwgLTYuMSwgLTMuNiwgLTMuNSwgLTguNCwgLTEuMiwgLTYuOCxdLFxuICAgICAgICAgICAgWy05LjEsIC01LjQsIC0xMC40LCAtNC4yLCAxLjAsIDAuNSwgMC42LCAyLjQsIC05LjYsIC0xLjUsIC0xMC41LCAtMC41LCAtOC45LCAtMTAuNSwgLTcuMiwgLTguMywgLTYuMywgLTYuOSwgLTcuNywgLTUuMSwgLTAuNSwgMC4xLCAtMC42LCAyLjMsIC0xMS4xLCAtMTAuMiwgLTEwLjUsIC03LjAsIC04LjMsIC05LjQsIC05LjQsIC02LjYsIC05LjYsIC05LjcsIC0xMC4wLCAtNy45LCAwLjcsIDAuNiwgMC44LCAyLjMsIC03LjEsIC02LjUsIC03LjIsIC01LjAsIC02LjUsIC03LjQsIC03LjUsIC01LjQsIC01MC4wLCAtNy42LCAtNTAuMCwgLTQuOCwgOS44LCAxMC4wLCAxMC4yLCAxMi4xLCAtNTAuMCwgLTMuMSwgLTExLjQsIC0wLjcsIC00LjYsIC02LjYsIC00LjksIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy4wLCAtMTMuMSwgLTguMywgLTkuMiwgLTYuNSwgLTguOSwgLTcuNiwgLTkuOCwgLTAuNywgLTkuMiwgLTIuMSwgLTEyLjQsIC0xMC4zLCAtMTIuNCwgLTExLjYsIC05LjUsIC00LjYsIC0xMC40LCAtNS43LCAtMTMuNiwgLTEwLjEsIC0xMS40LCAtMTAuOSwgLTYuNSwgLTEuNSwgLTYuMiwgLTMuNiwgLTEyLjgsIC04LjAsIC0xMi4zLCAtOS43LCAtMTYuNSwgLTEyLjcsIC0xNS42LCAtMTQuMywgLTguNywgLTYuMCwgLTcuMSwgLTcuNSwgLTkuNSwgLTQuMSwgLTguNCwgLTYuMSwgLTExLjAsIC04LjYsIC0xMS4zLCAtOS4zLCAtNTAuMCwgLTEuNSwgLTUwLjAsIC0zLjAsIC00LjgsIC0xLjUsIC00LjIsIC0zLjEsIC01MC4wLCAxNi40LCAtNS4xLCAxNC4yLCAtMTAuMSwgLTQuMywgLTEwLjAsIC01LjQsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTE2LjMsIC0xMS44LCAtMTUuNSwgLTEzLjYsIC0xNS4zLCAtMTIuMSwgLTE2LjEsIC03LjcsIC0xMy4zLCAtNC4yLCAtMTIuNiwgLTE0LjEsIC0xNi4yLCAtMTAuMywgLTE1LjQsIC05LjYsIC0xMS42LCAtNy43LCAtOS44LCAtMTQuMywgLTE3LjUsIC0xMS4xLCAtMTcuMiwgLTUuMywgLTcuMSwgLTIuMiwgLTcuMSwgLTkuNiwgLTExLjksIC04LjcsIC0xMS40LCAtMTcuMSwgLTIwLjYsIC0xNS4zLCAtMTkuOSwgLTE0LjEsIC0xNC44LCAtMTIuNCwgLTE2LjUsIC0xMS43LCAtMTIuOCwgLTYuNCwgLTEzLjQsIC0xNC4zLCAtMTUuNywgLTEyLjcsIC0xNC4wLCAtNTAuMCwgLTcuOCwgLTUwLjAsIC03LjEsIC04LjcsIC0xMS4zLCAtNi4xLCAtMTEuNCwgLTUwLjAsIC01LjEsIDE4LjYsIC00LjgsIC04LjYsIC04LjEsIC00LjUsIC03LjMsXSxcbiAgICAgICAgICAgIFstMTIuNCwgLTguMiwgLTEzLjAsIC01LjksIC03LjcsIC03LjgsIC03LjQsIC01LjgsIC04LjgsIC0yLjAsIC05LjMsIC0wLjQsIC0xMS42LCAtMTEuMywgLTExLjYsIC05LjQsIC04LjksIC01LjYsIC0xMC4wLCAtMy4yLCAtMTEuNSwgLTExLjEsIC0xMC41LCAtOC4zLCAtNi4zLCAtNC45LCAtNi43LCAtMS4yLCAtMTAuNiwgLTkuNywgLTExLjMsIC04LjAsIC0xNC44LCAtMTMuMSwgLTE1LjUsIC0xMS40LCAtNy41LCAtNy41LCAtNy4xLCAtNS45LCAtOC40LCAtNS44LCAtOC4xLCAtMy42LCAtOS45LCAtOS43LCAtMTAuMSwgLTguMiwgLTUwLjAsIC0zLjAsIC01MC4wLCAtMC4xLCAtMy41LCAtMy4zLCAtMy42LCAtMC43LCAtNTAuMCwgMTQuMiwgLTQuOCwgMTYuNCwgLTguOSwgLTUuOCwgLTguOSwgLTMuNCxdLFxuICAgICAgICAgICAgWy0xMC43LCAtMTMuMiwgLTEyLjQsIC0xMS42LCAtNC44LCAtOC40LCAtNi4xLCAtNy4yLCAtMTAuMywgLTExLjgsIC0xMS4wLCAtMTEuNiwgMi44LCAtMS43LCAwLjcsIC0xLjEsIC02LjIsIC05LjcsIC03LjMsIC04LjQsIC01LjMsIC04LjYsIC02LjEsIC04LjMsIC0xMC41LCAtMTEuMiwgLTkuOCwgLTEwLjIsIDkuNSwgNi41LCA3LjYsIDYuOCwgLTEyLjEsIC0xNi4wLCAtMTMuMCwgLTE2LjIsIC01LjIsIC04LjYsIC03LjEsIC03LjgsIC0xMi41LCAtMTQuNCwgLTEyLjEsIC0xMy4wLCAxLjQsIC0zLjAsIC0xLjYsIC0yLjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMywgLTAuMCwgLTUuNCwgLTMuNSwgLTQuNiwgLTUwLjAsIC0xMC4xLCAtOC42LCAtOC45LCAxMy4yLCAtMC45LCA5LjcsIC0wLjMsXSxcbiAgICAgICAgICAgIFstMTguMSwgLTEyLjMsIC0xOS40LCAtMTQuMiwgLTEyLjIsIC05LjUsIC0xMS41LCAtMTAuOCwgLTE3LjksIC0xMS45LCAtMTguMiwgLTEzLjksIC02LjQsIC0zLjcsIC02LjgsIC01LjQsIC0xMi44LCAtNS45LCAtMTMuNiwgLTcuNCwgLTEzLjcsIC05LjksIC0xMi45LCAtMTIuNywgLTE2LjIsIC0xMS42LCAtMTUuMiwgLTEyLjcsIC0zLjIsIDAuNSwgLTMuMywgLTEuOCwgLTE4LjksIC0xNi42LCAtMTguOCwgLTE5LjIsIC0xMi41LCAtOS40LCAtMTAuNiwgLTExLjEsIC0xNy4zLCAtMTQuMSwgLTE2LjIsIC0xNi4wLCAtNy45LCAtMy43LCAtNy44LCAtNi4zLCAtNTAuMCwgMy42LCAtNTAuMCwgMi4zLCAtOC42LCAtNC4yLCAtOC40LCAtNi42LCAtNTAuMCwgLTQuMywgLTguMSwgLTUuOCwgLTAuOSwgMTQuMiwgLTEuOCwgMTEuNixdLFxuICAgICAgICAgICAgWy0xMS44LCAtMTMuMSwgLTExLjUsIC0xMi4wLCAtNi4yLCAtOC4zLCAtNS40LCAtNy40LCAtMTEuOCwgLTEyLjMsIC0xMS4xLCAtMTEuNCwgMC41LCAtMi41LCAyLjQsIC0xLjYsIC02LjgsIC05LjksIC02LjQsIC04LjksIC02LjEsIC04LjYsIC01LjAsIC03LjgsIC0xMC40LCAtMTEuNiwgLTguNSwgLTkuOSwgOC4yLCA2LjQsIDguNywgNi45LCAtMTIuNCwgLTE3LjAsIC0xMi42LCAtMTUuOCwgLTYuNSwgLTguNSwgLTUuMCwgLTcuOCwgLTEzLjIsIC0xMy42LCAtMTAuMywgLTEzLjcsIC0wLjcsIC0zLjIsIC0wLjMsIC0yLjQsIC01MC4wLCAtOS40LCAtNTAuMCwgLTguNywgLTIuMSwgLTUuNiwgLTEuMiwgLTQuOSwgLTUwLjAsIC0xMC4wLCAtNC41LCAtOC45LCA5LjcsIC0xLjgsIDExLjMsIC0wLjksXSxcbiAgICAgICAgICAgIFstMTcuMiwgLTEzLjMsIC0xNy44LCAtMTEuNiwgLTExLjAsIC0xMS4xLCAtMTAuNCwgLTkuMCwgLTE2LjAsIC0xMi43LCAtMTYuMSwgLTExLjEsIC01LjIsIC01LjQsIC02LjAsIC0zLjMsIC0xMS44LCAtNy4zLCAtMTMuMywgLTUuOSwgLTEyLjcsIC0xMS45LCAtMTEuOSwgLTkuMywgLTE1LjIsIC0xNS4wLCAtMTQuOSwgLTExLjAsIC0yLjgsIC0xLjgsIC0yLjksIDAuNCwgLTE3LjQsIC0xOC40LCAtMTguMywgLTE1LjksIC0xMC43LCAtMTEuMiwgLTEwLjYsIC05LjAsIC0xNS40LCAtMTQuOCwgLTE1LjgsIC0xMy4zLCAtNi44LCAtNS45LCAtNy4yLCAtMy45LCAtNTAuMCwgMi4wLCAtNTAuMCwgMy45LCAtNy4wLCAtNi44LCAtNi44LCAtMy45LCAtNTAuMCwgLTUuNCwgLTcuMywgLTMuNCwgLTAuMywgMTEuNiwgLTAuOSwgMTQuMSxdXTtcbiAgICAgICAgdGhpcy5UUkFOUyA9IFtbNSwgMCwgMCwgNF0sXG4gICAgICAgICAgICBbMCwgNSwgNCwgMF0sXG4gICAgICAgICAgICBbMCwgNCwgNSwgMF0sXG4gICAgICAgICAgICBbNCwgMCwgMCwgNV1dO1xuICAgICAgICB0aGlzLkNPTkJMTyA9IHsgJ0EnOiAwLCAnUic6IDEsICdOJzogMiwgJ0QnOiAzLCAnQyc6IDQsICdRJzogNSwgJ0UnOiA2LCAnRyc6IDcsICdIJzogOCwgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LCAnVyc6IDE3LCAnWSc6IDE4LCAnVic6IDE5LCAnQic6IDIwLCAnWic6IDIxLCAnWCc6IDIyLCAnKic6IDIzIH07XG4gICAgICAgIHRoaXMuQ09OTlVDTCA9IHsgJ0EnOiAwLCAnVCc6IDEsICdDJzogMiwgJ0cnOiAzIH07XG4gICAgICAgIHRoaXMuQ09OU0NITiA9IHsgJ0FBQSc6IDAsICdBQUMnOiAxLCAnQUFHJzogMiwgJ0FBVCc6IDMsICdBQ0EnOiA0LCAnQUNDJzogNSwgJ0FDRyc6IDYsICdBQ1QnOiA3LCAnQUdBJzogOCwgJ0FHQyc6IDksICdBR0cnOiAxMCwgJ0FHVCc6IDExLCAnQVRBJzogMTIsICdBVEMnOiAxMywgJ0FURyc6IDE0LCAnQVRUJzogMTUsICdDQUEnOiAxNiwgJ0NBQyc6IDE3LCAnQ0FHJzogMTgsICdDQVQnOiAxOSwgJ0NDQSc6IDIwLCAnQ0NDJzogMjEsICdDQ0cnOiAyMiwgJ0NDVCc6IDIzLCAnQ0dBJzogMjQsICdDR0MnOiAyNSwgJ0NHRyc6IDI2LCAnQ0dUJzogMjcsICdDVEEnOiAyOCwgJ0NUQyc6IDI5LCAnQ1RHJzogMzAsICdDVFQnOiAzMSwgJ0dBQSc6IDMyLCAnR0FDJzogMzMsICdHQUcnOiAzNCwgJ0dBVCc6IDM1LCAnR0NBJzogMzYsICdHQ0MnOiAzNywgJ0dDRyc6IDM4LCAnR0NUJzogMzksICdHR0EnOiA0MCwgJ0dHQyc6IDQxLCAnR0dHJzogNDIsICdHR1QnOiA0MywgJ0dUQSc6IDQ0LCAnR1RDJzogNDUsICdHVEcnOiA0NiwgJ0dUVCc6IDQ3LCAnVEFBJzogNDgsICdUQUMnOiA0OSwgJ1RBRyc6IDUwLCAnVEFUJzogNTEsICdUQ0EnOiA1MiwgJ1RDQyc6IDUzLCAnVENHJzogNTQsICdUQ1QnOiA1NSwgJ1RHQSc6IDU2LCAnVEdDJzogNTcsICdUR0cnOiA1OCwgJ1RHVCc6IDU5LCAnVFRBJzogNjAsICdUVEMnOiA2MSwgJ1RURyc6IDYyLCAnVFRUJzogNjMgfTtcbiAgICAgICAgdGhpcy5zZXRNZXRob2QoYWxpZ25HcmlkXyk7XG4gICAgICAgIHRoaXMuc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXyk7XG4gICAgICAgIHRoaXMuc2V0R2FwKGdhcF8pO1xuICAgIH1cbiAgICBmaWxsTmVlZGxlbWFuKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4yOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SiA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbGxPbmUoaSwgaikge1xuICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdLCBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCwgdGhpcy5kcEdyaWRbaV1baiAtIDFdLnZhbHVlIC0gdGhpcy5nYXApKTtcbiAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3JpZEZyb21OYW1lKHBhdGgpIHtcbiAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU00NSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTQ1O1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU01MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTYyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNjI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU04MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTgwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNOTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU05MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTMwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU03MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTcwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMjUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMjUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTlVDTEVPVElERVMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5OVUNMRU9USURFUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUUkFOUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlRSQU5TO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NDSE5FSURFUic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlNDSE5FSURFUjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05TQ0hOO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdFJlc3VsdChpLCBqKSB7XG4gICAgICAgIGxldCByZXMxID0gXCJcIiwgcmVzMiA9IFwiXCIsIGdhcFMgPSBcIlwiO1xuICAgICAgICBsZXQgdG90YWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXA7IGkrKykge1xuICAgICAgICAgICAgZ2FwUyArPSAnfCc7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9PSBpKSB7XG4gICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9PSBqKSB7XG4gICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIGlmIChqIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ZW1wSSA9IGk7XG4gICAgICAgICAgICBpID0gdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50STtcbiAgICAgICAgICAgIGogPSB0aGlzLmRwR3JpZFt0ZW1wSV1bal0ucGFyZW50SjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFsaWduZWQocmVzMSwgcmVzMiwgdG90YWwpO1xuICAgIH1cbiAgICBmaWxsU2NvcmVzKCkge1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3Jlcy5wdXNoKFtdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjb3Jlc1tpXS5wdXNoKHRoaXMuYWxpZ25HcmlkW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXExLnN1YnN0cihpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV1bdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTIuc3Vic3RyKGogKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHlwZVJlYygpIHtcbiAgICAgICAgaWYgKC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBVEdDXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIk5VQ0xFT1RJREVTXCI7XG4gICAgICAgIGlmICgvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiQkxPU1VNNjJcIjtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJDYW4ndCByZWNvZ25pemUgc2VxdWVuY2UgdHlwZVwiKTtcbiAgICB9XG4gICAgbmVlZGxlbWFuV3VuY2goKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxOZWVkbGVtYW4oKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdCh0aGlzLmxlbjEsIHRoaXMubGVuMik7XG4gICAgfVxuICAgIHNtaXRoV2F0ZXJtYW4oKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYmVzdFZhbCA9IDA7XG4gICAgICAgIGxldCBiZXN0SSA9IDAsIGJlc3RKID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJXVt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKXS52YWx1ZSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID4gYmVzdFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0VmFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RJID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEogPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQoYmVzdEksIGJlc3RKKTtcbiAgICB9XG4gICAgc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMubGVuMSA9IHRoaXMuc2VxMS5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMubGVuMiA9IHRoaXMuc2VxMi5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBzZXRHYXAoZ2FwXykge1xuICAgICAgICB0aGlzLmdhcCA9IGdhcF87XG4gICAgfVxuICAgIHNldE1ldGhvZChhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICBpZiAoYWxpZ25HcmlkXyA9PSBcIkFVVE9cIikge1xuICAgICAgICAgICAgYWxpZ25HcmlkXyA9IHRoaXMudHlwZVJlYygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZEZyb21OYW1lKGFsaWduR3JpZF8pO1xuICAgIH1cbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFjcm9Nb2wobW9ub21lcnMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGNvbnN0IG1vZHVsZVJka2l0ID0geWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQ2hlbTpnZXRSZEtpdE1vZHVsZScpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9sID0gbW9kdWxlUmRraXQuZ2V0X21vbChtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gbW9sLmdldF92M0ttb2xibG9jaygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSBnZXRJbmRpY2VzKG1vbm9tZXJzW2ldW2pdLCBhKTtcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnaW5kaWNlcyddID0gaW5kaWNlcztcbiAgICAgICAgICAgICAgICBtb25vbWVyc1tpXVtqXVsnbW9sZmlsZSddID0geWllbGQgcm90YXRlQmFja2JvbmVWMzAwMChhLCBpbmRpY2VzKTtcbiAgICAgICAgICAgICAgICBtb2wgPT09IG51bGwgfHwgbW9sID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtb2wuZGVsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaChsaW5rVjMwMDAobW9ub21lcnNbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0SW5kaWNlcyhtb25vbWVyLCBtb2xWMzAwMCkge1xuICAgIGNvbnN0IG1vbGZpbGUgPSBtb25vbWVyW1wibW9sZmlsZVwiXTtcbiAgICBsZXQgaW5kZXhTdGFydCA9IG1vbGZpbGUuaW5kZXhPZignTSAgUkdQJywgMCkgKyA4O1xuICAgIGxldCBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgY29uc3QgaW5kaWNlc0RhdGEgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICBsZXQgcGFyc2VkRGF0YSA9IGluZGljZXNEYXRhLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgcmVtRmlyc3QgPSBwYXJzZWREYXRhWzJdID09ICcxJyA/IHBhcnNlSW50KHBhcnNlZERhdGFbMV0pIDogcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgY29uc3QgcmVtTGFzdCA9IHBhcnNlZERhdGFbMl0gPT0gJzInID8gcGFyc2VJbnQocGFyc2VkRGF0YVsxXSkgOiBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sVjMwMDApO1xuICAgIGxldCBpbmRleEJvbmRzID0gbW9sVjMwMDAuaW5kZXhPZignTSAgVjMwIEJFR0lOIEJPTkQnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGJvbmRzXG4gICAgaW5kZXhCb25kcyA9IG1vbFYzMDAwLmluZGV4T2YoJ1xcbicsIGluZGV4Qm9uZHMpO1xuICAgIGluZGV4U3RhcnQgPSBpbmRleEJvbmRzO1xuICAgIGluZGV4RW5kID0gaW5kZXhCb25kcztcbiAgICBsZXQgZmlyc3QgPSAwO1xuICAgIGxldCBsYXN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZEZpcnN0ID0gMDtcbiAgICBsZXQgcmVtQm9uZExhc3QgPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgIGlmIChmaXJzdCA9PSAwIHx8IGxhc3QgPT0gMCkge1xuICAgICAgICAgICAgaW5kZXhTdGFydCA9IG1vbFYzMDAwLmluZGV4T2YoJ1YzMCcsIGluZGV4U3RhcnQpICsgNDtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sVjMwMDAuaW5kZXhPZignXFxuJywgaW5kZXhTdGFydCk7XG4gICAgICAgICAgICBjb25zdCBib25kRGF0YSA9IG1vbFYzMDAwLnN1YnN0cmluZyhpbmRleFN0YXJ0LCBpbmRleEVuZCkucmVwbGFjZUFsbCgnICAnLCAnICcpLnJlcGxhY2VBbGwoJyAgJywgJyAnKTtcbiAgICAgICAgICAgIHBhcnNlZERhdGEgPSBib25kRGF0YS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzNdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzJdKTtcbiAgICAgICAgICAgICAgICByZW1Cb25kRmlyc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbMl0pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVszXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBhcnNlSW50KHBhcnNlZERhdGFbM10pID09IHJlbUxhc3QpIHtcbiAgICAgICAgICAgICAgICBsYXN0ID0gcGFyc2VJbnQocGFyc2VkRGF0YVsyXSk7XG4gICAgICAgICAgICAgICAgcmVtQm9uZExhc3QgPSBwYXJzZUludChwYXJzZWREYXRhWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmaXJzdCwgbGFzdCwgcmVtRmlyc3QsIHJlbUxhc3QsIHJlbUJvbmRGaXJzdCwgcmVtQm9uZExhc3QgfTtcbn1cbmZ1bmN0aW9uIHJvdGF0ZUJhY2tib25lVjMwMDAobW9sQmxvY2ssIGluZGljZXMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKTtcbiAgICAgICAgY29uc3QgbmF0b20gPSBjb29yZGluYXRlcy5hdG9tSW5kZXgubGVuZ3RoO1xuICAgICAgICBjb25zdCBmaXJzdCA9IGluZGljZXNbJ2ZpcnN0J107XG4gICAgICAgIGNvbnN0IGxhc3QgPSBpbmRpY2VzWydsYXN0J107XG4gICAgICAgIGNvbnN0IHhDZW50ZXIgPSAoY29vcmRpbmF0ZXMueFtsYXN0XSArIGNvb3JkaW5hdGVzLnhbZmlyc3RdKSAvIDI7XG4gICAgICAgIGNvbnN0IHlDZW50ZXIgPSAoY29vcmRpbmF0ZXMueVtsYXN0XSArIGNvb3JkaW5hdGVzLnlbZmlyc3RdKSAvIDI7XG4gICAgICAgIC8vcGxhY2UgdG8gY2VudGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4Q2VudGVyO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSAtPSB5Q2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhbmdsZSA9IDA7XG4gICAgICAgIGlmIChjb29yZGluYXRlcy54W2ZpcnN0XSA9PSAwKVxuICAgICAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy55W2ZpcnN0XSA+IGNvb3JkaW5hdGVzLnlbbGFzdF0gPyBNYXRoLlBJIC8gMiA6IDMgKiBNYXRoLlBJIC8gMjtcbiAgICAgICAgZWxzZSBpZiAoY29vcmRpbmF0ZXMueVtmaXJzdF0gPT0gMClcbiAgICAgICAgICAgIGFuZ2xlID0gY29vcmRpbmF0ZXMueFtmaXJzdF0gPiBjb29yZGluYXRlcy54W2xhc3RdID8gTWF0aC5QSSA6IDA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVyaXZhdGl2ZSA9IGNvb3JkaW5hdGVzLnlbZmlyc3RdIC8gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXMueFtmaXJzdF0gPCBjb29yZGluYXRlcy54W2xhc3RdKVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpIDogTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICAgICAgY29uc3Qgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhBZGQgPSBjb29yZGluYXRlcy54W2ldO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSA9IHhBZGQgKiBjb3MgLSBjb29yZGluYXRlcy55W2ldICogc2luO1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueVtpXSA9IHhBZGQgKiBzaW4gKyBjb29yZGluYXRlcy55W2ldICogY29zO1xuICAgICAgICB9XG4gICAgICAgIC8vcGxhY2UgdG8gcmlnaHRcbiAgICAgICAgY29uc3QgeFNoaWZ0ID0gY29vcmRpbmF0ZXMueFtmaXJzdF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKylcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geFNoaWZ0O1xuICAgICAgICAvL3Jld3JpdGUgbW9sQmxvY2tcbiAgICAgICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgICAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleEVuZCk7XG4gICAgICAgICAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnNsaWNlKDAsIGluZGV4KSArXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSArICcgJyArIGNvb3JkaW5hdGVzLnlbaV0gK1xuICAgICAgICAgICAgICAgIG1vbEJsb2NrLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9sQmxvY2s7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xCbG9jaykge1xuICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jayk7XG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgbGV0IGluZGV4RW5kID0gaW5kZXg7XG4gICAgY29uc3QgaW5kZXhlcyA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHR5cGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeCA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHkgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bWJlcnMubmF0b207IGkrKykge1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgaW5kZXhlc1tpXSA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgdHlwZXNbaV0gPSBtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgeFtpXSA9IHBhcnNlRmxvYXQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB5W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIHsgYXRvbUluZGV4OiBpbmRleGVzLCBhdG9tVHlwZTogdHlwZXMsIHg6IHgsIHk6IHkgfTtcbn1cbmZ1bmN0aW9uIGxpbmtWMzAwMChtb25vbWVycykge1xuICAgIGxldCBtYWNyb01vbEJsb2NrID0gJ1xcbkRhdGFncm9rIG1hY3JvbW9sZWN1bGUgaGFuZGxlclxcblxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnICAwICAwICAwICAwICAwICAwICAgICAgICAgICAgOTk5IFYzMDAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ1RBQlxcbic7XG4gICAgbGV0IGF0b21CbG9jayA9ICcnO1xuICAgIGxldCBib25kQmxvY2sgPSAnJztcbiAgICBsZXQgY29sbGVjdGlvbkJsb2NrID0gJyc7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xuICAgIGxldCBuYXRvbSA9IDA7XG4gICAgbGV0IG5ib25kID0gMDtcbiAgICBsZXQgeFNoaWZ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbm9tZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtb2xmaWxlID0gbW9ub21lcnNbaV1bJ21vbGZpbGUnXTtcbiAgICAgICAgY29uc3QgZmlyc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydmaXJzdCddO1xuICAgICAgICBjb25zdCBsYXN0ID0gbW9ub21lcnNbaV1bJ2luZGljZXMnXVsnbGFzdCddO1xuICAgICAgICBjb25zdCByZW1GaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUZpcnN0J107XG4gICAgICAgIGNvbnN0IHJlbUxhc3QgPSBtb25vbWVyc1tpXVsnaW5kaWNlcyddWydyZW1MYXN0J107XG4gICAgICAgIGNvbnN0IHJlbUJvbmRGaXJzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRGaXJzdCddO1xuICAgICAgICBjb25zdCByZW1Cb25kTGFzdCA9IG1vbm9tZXJzW2ldWydpbmRpY2VzJ11bJ3JlbUJvbmRMYXN0J107XG4gICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnJlcGxhY2VBbGwoJygtXFxuTSAgVjMwICcsICcoJylcbiAgICAgICAgICAgIC5yZXBsYWNlQWxsKCctXFxuTSAgVjMwICcsICcnKS5yZXBsYWNlQWxsKCcgKScsICcpJyk7XG4gICAgICAgIGNvbnN0IG51bWJlcnMgPSBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xmaWxlKTtcbiAgICAgICAgbGV0IGluZGV4QXRvbXMgPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgICAgICBpbmRleEF0b21zID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleEF0b21zKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhBdG9tcztcbiAgICAgICAgbGV0IGluZGV4RW5kID0gaW5kZXhBdG9tcztcbiAgICAgICAgY29uc3QgdG90YWxTaGlmdCA9IHhTaGlmdCAtIGNvb3JkaW5hdGVzLnhbZmlyc3QgLSAxXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5hdG9tOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gcmVtRmlyc3QgJiYgY29vcmRpbmF0ZXMuYXRvbUluZGV4W2pdICE9IHJlbUxhc3QpIHsgLy98fCBpID09IDApIHtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgYXRvbSBudW1iZXJcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgICAgIGF0b21OdW1iZXIgPSAoYXRvbU51bWJlciA+IHJlbUZpcnN0ICYmIGF0b21OdW1iZXIgPiByZW1MYXN0KSA/IGF0b21OdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgICAgICBtb2xmaWxlID0gbW9sZmlsZS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIHRvdGFsU2hpZnQpKSAvIDEwMDAwO1xuICAgICAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xmaWxlLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCcsIGluZGV4KSAtIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhBdG9tc0VuZCA9IG1vbGZpbGUuaW5kZXhPZignTSAgVjMwIEVORCBBVE9NJyk7XG4gICAgICAgIGF0b21CbG9jayArPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleEF0b21zICsgMSwgaW5kZXhBdG9tc0VuZCk7XG4gICAgICAgIGxldCBpbmRleEJvbmRzID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICAgICAgaW5kZXhCb25kcyA9IG1vbGZpbGUuaW5kZXhPZignXFxuJywgaW5kZXhCb25kcyk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhCb25kcztcbiAgICAgICAgaW5kZXhFbmQgPSBpbmRleEJvbmRzO1xuICAgICAgICBsZXQgYm9uZE51bWJlciA9IDA7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgICAgICAvL3Jld3JpdGUgYm9uZCBudW1iZXJcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBib25kTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBpZiAoYm9uZE51bWJlciA9PSByZW1Cb25kRmlyc3QgfHwgYm9uZE51bWJlciA9PSByZW1Cb25kTGFzdCkge1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4IC09IDc7XG4gICAgICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgbW9sZmlsZS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib25kTnVtYmVyID0gKGJvbmROdW1iZXIgPiByZW1Cb25kRmlyc3QgJiYgYm9uZE51bWJlciA+IHJlbUJvbmRMYXN0KSA/IGJvbmROdW1iZXIgLSAyIDpcbiAgICAgICAgICAgICAgICAoYm9uZE51bWJlciA+IHJlbUJvbmRGaXJzdCB8fCBib25kTnVtYmVyID4gcmVtQm9uZExhc3QpID8gYm9uZE51bWJlciAtIDEgOiBib25kTnVtYmVyO1xuICAgICAgICAgICAgYm9uZE51bWJlciArPSBuYm9uZDtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGJvbmROdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIHBhaXIgaW4gYm9uZFxuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xmaWxlLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICAgICAgYXRvbU51bWJlciA9IChhdG9tTnVtYmVyID4gcmVtRmlyc3QgJiYgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDIgOlxuICAgICAgICAgICAgICAgIChhdG9tTnVtYmVyID4gcmVtRmlyc3QgfHwgYXRvbU51bWJlciA+IHJlbUxhc3QpID8gYXRvbU51bWJlciAtIDEgOiBhdG9tTnVtYmVyO1xuICAgICAgICAgICAgYXRvbU51bWJlciArPSBuYXRvbTtcbiAgICAgICAgICAgIG1vbGZpbGUgPSBtb2xmaWxlLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xmaWxlLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sZmlsZS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gTWF0aC5taW4obW9sZmlsZS5pbmRleE9mKCdcXG4nLCBpbmRleCksIG1vbGZpbGUuaW5kZXhPZignICcsIGluZGV4KSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sZmlsZS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gKGF0b21OdW1iZXIgPiByZW1GaXJzdCAmJiBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMiA6XG4gICAgICAgICAgICAgICAgKGF0b21OdW1iZXIgPiByZW1GaXJzdCB8fCBhdG9tTnVtYmVyID4gcmVtTGFzdCkgPyBhdG9tTnVtYmVyIC0gMSA6IGF0b21OdW1iZXI7XG4gICAgICAgICAgICBhdG9tTnVtYmVyICs9IG5hdG9tO1xuICAgICAgICAgICAgbW9sZmlsZSA9IG1vbGZpbGUuc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbGZpbGUuc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xmaWxlLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhCb25kRW5kID0gbW9sZmlsZS5pbmRleE9mKCdNICBWMzAgRU5EIEJPTkQnKTtcbiAgICAgICAgYm9uZEJsb2NrICs9IG1vbGZpbGUuc3Vic3RyaW5nKGluZGV4Qm9uZHMgKyAxLCBpbmRleEJvbmRFbmQpO1xuICAgICAgICAvL2xldCBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGNvbGxlY3Rpb25zXG4gICAgICAgIC8vIHdoaWxlIChpbmRleENvbGxlY3Rpb24gIT0gLTEpIHtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gKz0gMjg7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVuZCA9IG1vbGZpbGUuaW5kZXhPZignKScsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgIC8vICAgY29uc3QgY29sbGVjdGlvbkVudHJpZXMgPSBtb2xmaWxlLnN1YnN0cmluZyhpbmRleENvbGxlY3Rpb24sIGNvbGxlY3Rpb25FbmQpLnNwbGl0KCcgJykuc2xpY2UoMSk7XG4gICAgICAgIC8vICAgY29sbGVjdGlvbkVudHJpZXMuZm9yRWFjaCgoZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vICAgICBjb2xsZWN0aW9uLnB1c2gocGFyc2VJbnQoZSkgKyBuYXRvbSk7XG4gICAgICAgIC8vICAgfSk7XG4gICAgICAgIC8vICAgaW5kZXhDb2xsZWN0aW9uID0gY29sbGVjdGlvbkVuZDtcbiAgICAgICAgLy8gICBpbmRleENvbGxlY3Rpb24gPSBtb2xmaWxlLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnLCBpbmRleENvbGxlY3Rpb24pO1xuICAgICAgICAvLyB9XG4gICAgICAgIG5hdG9tICs9IG51bWJlcnMubmF0b20gLSAyO1xuICAgICAgICBuYm9uZCArPSBudW1iZXJzLm5ib25kIC0gMjtcbiAgICAgICAgeFNoaWZ0ICs9IGNvb3JkaW5hdGVzLnhbbGFzdF0gLSBjb29yZGluYXRlcy54W2ZpcnN0XSArIDE7XG4gICAgICAgIGlmIChpID09IG1vbm9tZXJzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5hdG9tKys7XG4gICAgICAgICAgICBjb25zdCBzaGlmdCA9IHhTaGlmdCArIDAuMjtcbiAgICAgICAgICAgIGF0b21CbG9jayArPSAnTSAgVjMwICcgKyBuYXRvbSArICcgTyAnICsgc2hpZnQgKyAnIDAgMC4wMDAwMDAgMFxcbic7XG4gICAgICAgIH1cbiAgICAgICAgbmJvbmQrKztcbiAgICAgICAgaWYgKGkgPT0gbW9ub21lcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHRUZXJtaW5hbCA9IChsYXN0ID4gcmVtRmlyc3QgJiYgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDMgOlxuICAgICAgICAgICAgICAgIChsYXN0ID4gcmVtRmlyc3QgfHwgbGFzdCA+IHJlbUxhc3QpID8gbGFzdCArIG5hdG9tIC0gKG51bWJlcnMubmF0b20gLSAyKSAtIDIgOlxuICAgICAgICAgICAgICAgICAgICBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMTtcbiAgICAgICAgICAgIGJvbmRCbG9jayArPSAnTSAgVjMwICcgKyBuYm9uZCArICcgMSAnICsgcmlnaHRUZXJtaW5hbCArICcgJyArIG5hdG9tICsgJ1xcbic7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByaWdodFRlcm1pbmFsID0gKGxhc3QgPiByZW1GaXJzdCAmJiBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMiA6XG4gICAgICAgICAgICAgICAgKGxhc3QgPiByZW1GaXJzdCB8fCBsYXN0ID4gcmVtTGFzdCkgPyBsYXN0ICsgbmF0b20gLSAobnVtYmVycy5uYXRvbSAtIDIpIC0gMSA6XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgKyBuYXRvbSAtIChudW1iZXJzLm5hdG9tIC0gMik7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gbW9ub21lcnNbaSArIDFdWydpbmRpY2VzJ107XG4gICAgICAgICAgICBjb25zdCBuZXh0Rmlyc3QgPSBuZXh0WydmaXJzdCddO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlbUZpcnN0ID0gbmV4dFsncmVtRmlyc3QnXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZW1MYXN0ID0gbmV4dFsncmVtTGFzdCddO1xuICAgICAgICAgICAgY29uc3QgbGVmdFRlcm1pbmFsID0gKG5leHRGaXJzdCA+IG5leHRSZW1GaXJzdCAmJiBuZXh0Rmlyc3QgPiBuZXh0UmVtTGFzdCkgPyBuZXh0Rmlyc3QgKyBuYXRvbSAtIDIgOlxuICAgICAgICAgICAgICAgIChuZXh0Rmlyc3QgPiBuZXh0UmVtRmlyc3QgfHwgbmV4dEZpcnN0ID4gbmV4dFJlbUxhc3QpID8gbmV4dEZpcnN0ICsgbmF0b20gLSAxIDpcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZpcnN0ICsgbmF0b207XG4gICAgICAgICAgICBib25kQmxvY2sgKz0gJ00gIFYzMCAnICsgbmJvbmQgKyAnIDEgJyArIHJpZ2h0VGVybWluYWwgKyAnICcgKyBsZWZ0VGVybWluYWwgKyAnXFxuJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBjb25zdCBlbnRyaWVzID0gNDtcbiAgICAvLyBjb25zdCBjb2xsTnVtYmVyID0gTWF0aC5jZWlsKGNvbGxlY3Rpb24ubGVuZ3RoIC8gZW50cmllcyk7XG4gICAgLy8gY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJyArIGNvbGxlY3Rpb24ubGVuZ3RoICsgJyAtXFxuJztcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNvbGxOdW1iZXI7IGkrKykge1xuICAgIC8vICAgY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgJztcbiAgICAvLyAgIGNvbnN0IGVudHJpZXNDdXJyZW50ID0gaSArIDEgPT0gY29sbE51bWJlciA/IGNvbGxlY3Rpb24ubGVuZ3RoIC0gKGNvbGxOdW1iZXIgLSAxKSplbnRyaWVzIDogZW50cmllcztcbiAgICAvLyAgIGZvciAobGV0IGogPSAwOyBqIDwgZW50cmllc0N1cnJlbnQ7IGorKykge1xuICAgIC8vICAgICBjb2xsZWN0aW9uQmxvY2sgKz0gKGogKyAxID09IGVudHJpZXNDdXJyZW50KSA/XG4gICAgLy8gICAgICAgKGkgPT0gY29sbE51bWJlciAtIDEgPyBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJylcXG4nIDogY29sbGVjdGlvbltlbnRyaWVzKmkgKyBqXSArICcgLVxcbicpIDpcbiAgICAvLyAgICAgICBjb2xsZWN0aW9uW2VudHJpZXMqaSArIGpdICsgJyAnO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvL2dlbmVyYXRlIGZpbGVcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQ09VTlRTICcgKyBuYXRvbSArICcgJyArIG5ib25kICsgJyAwIDAgMFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEFUT01cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYXRvbUJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEJFR0lOIEJPTkRcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gYm9uZEJsb2NrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQk9ORFxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ09MTEVDVElPTlxcbic7XG4gICAgLy9tYWNyb01vbEJsb2NrICs9IGNvbGxlY3Rpb25CbG9jaztcbiAgICAvL21hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQ09MTEVDVElPTlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDVEFCXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBFTkRcXG4nO1xuICAgIHJldHVybiBtYWNyb01vbEJsb2NrO1xufVxuZnVuY3Rpb24gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2spIHtcbiAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnJlcGxhY2VBbGwoJ1xccicsICcnKTsgLy9lcXVhbGl6ZSBvbGQgYW5kIG5ldyBzZGYgc3RhbmRhcmRzXG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignQ09VTlRTJykgKyA3OyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgYW5kIGJvbmRzIG51bWJlclxuICAgIGxldCBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYXRvbXNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgIGNvbnN0IGJvbmRzTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgIHJldHVybiB7IG5hdG9tOiBhdG9tc051bWJlciwgbmJvbmQ6IGJvbmRzTnVtYmVyIH07XG59XG4iLCJpbXBvcnQgKiBhcyBDIGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duJztcbmltcG9ydCB7IFdlYkxvZ28gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nbyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuY29uc3QgbHJ1ID0gbmV3IERHLkxydUNhY2hlKCk7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmNvbnN0IGdyYXlDb2xvciA9ICcjODA4MDgwJztcbmZ1bmN0aW9uIGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpIHtcbiAgICBzd2l0Y2ggKHBhbGV0dGVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ1BUJzpcbiAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgY2FzZSAnTlQnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICBjYXNlICdETkEnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICBjYXNlICdSTkEnOlxuICAgICAgICAgICAgcmV0dXJuIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAvLyBvdGhlclxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc1NlcXVlbmNlKHN1YlBhcnRzKSB7XG4gICAgY29uc3Qgc2ltcGxpZmllZCA9ICFzdWJQYXJ0cy5zb21lKChhbWlubywgaW5kZXgpID0+IGFtaW5vLmxlbmd0aCA+IDEgJiZcbiAgICAgICAgaW5kZXggIT0gMCAmJlxuICAgICAgICBpbmRleCAhPSBzdWJQYXJ0cy5sZW5ndGggLSAxKTtcbiAgICBjb25zdCB0ZXh0ID0gW107XG4gICAgY29uc3QgZ2FwID0gc2ltcGxpZmllZCA/ICcnIDogJyAnO1xuICAgIHN1YlBhcnRzLmZvckVhY2goKGFtaW5vLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPCBzdWJQYXJ0cy5sZW5ndGgpXG4gICAgICAgICAgICBhbWlubyArPSBgJHthbWlubyA/ICcnIDogJy0nfSR7Z2FwfWA7XG4gICAgICAgIHRleHQucHVzaChhbWlubyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFt0ZXh0LCBzaW1wbGlmaWVkXTtcbn1cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHByaW50cyBhIHN0cmluZyBhbGlnbmVkIHRvIGxlZnQgb3IgY2VudGVyZWQuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHggeCBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHkgeSBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHcgV2lkdGguXG4gKiBAcGFyYW0ge251bWJlcn0gaCBIZWlnaHQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gZyBDYW52YXMgcmVuZGVyaW5nIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gcyBTdHJpbmcgdG8gcHJpbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbG9yPXVuZGVmaW5lZENvbG9yXSBTdHJpbmcgY29sb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gW3Bpdm90PTBdIFBpcnZvdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2xlZnQ9ZmFsc2VdIElzIGxlZnQgYWxpZ25lZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbdHJhbnNwYXJlbmN5UmF0ZT0wLjBdIFRyYW5zcGFyZW5jeSByYXRlIHdoZXJlIDEuMCBpcyBmdWxseSB0cmFuc3BhcmVudFxuICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9JyddIElzIHNlcGFyYXRvciBmb3Igc2VxdWVuY2UuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsYXN0PWZhbHNlXSBJcyBjaGVja2VyIGlmIGVsZW1lbnQgbGFzdCBvciBub3QuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHggY29vcmRpbmF0ZSB0byBzdGFydCBwcmludGluZyBhdC5cbiAqL1xuZnVuY3Rpb24gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IHVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgdHJhbnNwYXJlbmN5UmF0ZSA9IDEuMCwgc2VwYXJhdG9yID0gJycsIGxhc3QgPSBmYWxzZSkge1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBjb25zdCBjb2xvclBhcnQgPSBzLnN1YnN0cmluZygwKTtcbiAgICBsZXQgZ3JheVBhcnQgPSBzZXBhcmF0b3I7XG4gICAgaWYgKGxhc3QpXG4gICAgICAgIGdyYXlQYXJ0ID0gJyc7XG4gICAgY29uc3QgdGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCArIGdyYXlQYXJ0KTtcbiAgICBjb25zdCBpbmRlbnQgPSA1O1xuICAgIGNvbnN0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCk7XG4gICAgY29uc3QgZHkgPSAodGV4dFNpemUuZm9udEJvdW5kaW5nQm94QXNjZW50ICsgdGV4dFNpemUuZm9udEJvdW5kaW5nQm94RGVzY2VudCkgLyAyO1xuICAgIGZ1bmN0aW9uIGRyYXcoZHgxLCBkeDIpIHtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgZy5nbG9iYWxBbHBoYSA9IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgICAgIGcuZmlsbFRleHQoY29sb3JQYXJ0LCB4ICsgZHgxLCB5ICsgZHkpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgICAgZy5maWxsVGV4dChncmF5UGFydCwgeCArIGR4MiwgeSArIGR5KTtcbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUud2lkdGggPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBjb2xvclRleHRTaXplLndpZHRoICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUud2lkdGgpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBjb2xvclRleHRTaXplLndpZHRoKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIGNvbG9yVGV4dFNpemUud2lkdGg7XG4gICAgfVxufVxuZnVuY3Rpb24gZmluZE1vbm9tZXJzKGhlbG1TdHJpbmcpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBjb25zdCB0eXBlcyA9IE9iamVjdC5rZXlzKG9yZy5oZWxtLndlYmVkaXRvci5tb25vbWVyVHlwZUxpc3QoKSk7XG4gICAgY29uc3QgbW9ub21lcnMgPSBbXTtcbiAgICBjb25zdCBtb25vbWVyX25hbWVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgbW9ub21lcnMucHVzaChuZXcgc2NpbC5oZWxtLk1vbm9tZXJzLmdldE1vbm9tZXJTZXQodHlwZXNbaV0pKTtcbiAgICAgICAgT2JqZWN0LmtleXMobW9ub21lcnNbaV0pLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICBtb25vbWVyX25hbWVzLnB1c2gobW9ub21lcnNbaV1ba10uaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc3BsaXRfc3RyaW5nID0gV2ViTG9nby5zcGxpdHRlckFzSGVsbShoZWxtU3RyaW5nKTtcbiAgICByZXR1cm4gbmV3IFNldChzcGxpdF9zdHJpbmcuZmlsdGVyKHZhbCA9PiAhbW9ub21lcl9uYW1lcy5pbmNsdWRlcyh2YWwpKSk7XG59XG5leHBvcnQgY2xhc3MgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnbWFjcm9tb2xlY3VsZVNlcXVlbmNlJzsgfVxuICAgIGdldCBjZWxsVHlwZSgpIHsgcmV0dXJuIEMuU0VNX1RZUEVTLk1hY3JvX01vbGVjdWxlOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAzMDsgfVxuICAgIGdldCBkZWZhdWx0V2lkdGgoKSB7IHJldHVybiAyMzA7IH1cbiAgICAvKipcbiAgICAgKiBDZWxsIHJlbmRlcmVyIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZSBvbiB0aGUgY2FudmFzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3IHdpZHRoIG9mIHRoZSBjZWxsLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoIGhlaWdodCBvZiB0aGUgY2VsbC5cbiAgICAgKiBAcGFyYW0ge0RHLkdyaWRDZWxsfSBncmlkQ2VsbCBHcmlkIGNlbGwuXG4gICAgICogQHBhcmFtIHtERy5HcmlkQ2VsbFN0eWxlfSBjZWxsU3R5bGUgQ2VsbCBzdHlsZS5cbiAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlQ2VsbFJlbmRlcmVyXG4gICAgICovXG4gICAgcmVuZGVyKGcsIHgsIHksIHcsIGgsIGdyaWRDZWxsLCBjZWxsU3R5bGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkUm93ICE9PSAtMSA/IGdyaWRDZWxsLmdyaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBncmlkQ2VsbC5jZWxsO1xuICAgICAgICBjb25zdCB0YWcgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGlmICh0YWcgPT09ICdIRUxNJykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coZmluZE1vbm9tZXJzKGNlbGwudmFsdWUpKTtcbiAgICAgICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzLnNpemUgPT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGFmb3JtYXQnLCAnaGVsbScpO1xuICAgICAgICAgICAgICAgIGhvc3Quc2V0QXR0cmlidXRlKCdkYXRhJywgZ3JpZENlbGwuY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgY29uc3QgY2FudmFzID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgd2lkdGg6IHcsIGhlaWdodDogaCwgc2tpbjogJ3c4Jywgdmlld29ubHk6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybXVsYSA9IGNhbnZhcy5nZXRGb3JtdWxhKHRydWUpO1xuICAgICAgICAgICAgICAgIGlmICghZm9ybXVsYSkge1xuICAgICAgICAgICAgICAgICAgICBncmlkQ2VsbC5lbGVtZW50ID0gdWkuZGl2VGV4dChncmlkQ2VsbC5jZWxsLnZhbHVlLCB7IHN0eWxlOiB7IGNvbG9yOiAncmVkJyB9IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9ub21lcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICB3ID0gZ3JpZCA/IE1hdGgubWluKGdyaWQuY2FudmFzLndpZHRoIC0geCwgdykgOiBnLmNhbnZhcy53aWR0aCAtIHg7XG4gICAgICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgICAgICBnLnJlY3QoeCwgeSwgdywgaCk7XG4gICAgICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICAgICAgZy5mb250ID0gJzEycHggbW9ub3NwYWNlJztcbiAgICAgICAgICAgICAgICBnLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IChfYSA9IGNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgICAgIGxldCBzdWJQYXJ0cyA9IFdlYkxvZ28uc3BsaXR0ZXJBc0hlbG0ocyk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yID0gdW5kZWZpbmVkQ29sb3I7XG4gICAgICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb25vbWVycy5oYXMoYW1pbm8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICdyZWQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBncmF5Q29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBzdWJQYXJ0cy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYW1pbm8sIGNvbG9yLCAwLCB0cnVlLCAxLjAsICcvJywgbGFzdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZy5yZXN0b3JlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgW3R5cGUsIHN1YnR5cGUsIHBhbGV0dGVUeXBlXSA9IGdyaWRDZWxsLmNlbGwuY29sdW1uLmdldFRhZyhERy5UQUdTLlVOSVRTKS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgICAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHMgPSAoX2IgPSBjZWxsLnZhbHVlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgICAgIC8vVE9ETzogY2FuIHRoaXMgYmUgcmVwbGFjZWQvbWVyZ2VkIHdpdGggc3BsaXRTZXF1ZW5jZT9cbiAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICAgICAgY29uc3QgcGFsZXR0ZSA9IGdldFBhbGxldGVCeVR5cGUocGFsZXR0ZVR5cGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gKF9jID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4uZ2V0VGFnKCdzZXBhcmF0b3InKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJyc7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBncmlkQ2VsbC5jZWxsLmNvbHVtbi5nZXRUYWcoJ3NlcGFyYXRvcicpKTtcbiAgICAgICAgICAgIGNvbnN0IHN1YlBhcnRzID0gc3BsaXR0ZXJGdW5jKGNlbGwudmFsdWUpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coc3ViUGFydHMpO1xuICAgICAgICAgICAgbGV0IHgxID0geDtcbiAgICAgICAgICAgIGxldCBjb2xvciA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgc3ViUGFydHMuZm9yRWFjaCgoYW1pbm8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29sb3IgPSBwYWxldHRlLmdldChhbWlubyk7XG4gICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSB1bmRlZmluZWRDb2xvcjtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gc3ViUGFydHMubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgeDEgPSBwcmludExlZnRPckNlbnRlcmVkKHgxLCB5LCB3LCBoLCBnLCBhbWlubywgY29sb3IsIDAsIHRydWUsIDEuMCwgc2VwYXJhdG9yLCBsYXN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZy5yZXN0b3JlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgdmFyIENPTFVNTlNfTkFNRVM7XG4oZnVuY3Rpb24gKENPTFVNTlNfTkFNRVMpIHtcbiAgICBDT0xVTU5TX05BTUVTW1wiU1BMSVRfQ09MXCJdID0gXCJ+c3BsaXRcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUNUSVZJVFlcIl0gPSBcIn5hY3Rpdml0eVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBQ1RJVklUWV9TQ0FMRURcIl0gPSBcImFjdGl2aXR5X3NjYWxlZFwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBTElHTkVEX1NFUVVFTkNFXCJdID0gXCJ+YWxpZ25lZF9zZXF1ZW5jZVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBTUlOT19BQ0lEX1JFU0lEVUVcIl0gPSBcIkFBUlwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJQT1NJVElPTlwiXSA9IFwiUG9zXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIlBfVkFMVUVcIl0gPSBcInBWYWx1ZVwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJNRUFOX0RJRkZFUkVOQ0VcIl0gPSBcIk1lYW4gZGlmZmVyZW5jZVwiO1xufSkoQ09MVU1OU19OQU1FUyB8fCAoQ09MVU1OU19OQU1FUyA9IHt9KSk7XG5leHBvcnQgdmFyIENBVEVHT1JJRVM7XG4oZnVuY3Rpb24gKENBVEVHT1JJRVMpIHtcbiAgICBDQVRFR09SSUVTW1wiT1RIRVJcIl0gPSBcIk90aGVyXCI7XG4gICAgQ0FURUdPUklFU1tcIkFMTFwiXSA9IFwiQWxsXCI7XG59KShDQVRFR09SSUVTIHx8IChDQVRFR09SSUVTID0ge30pKTtcbmV4cG9ydCB2YXIgVEFHUztcbihmdW5jdGlvbiAoVEFHUykge1xuICAgIFRBR1NbXCJBQVJcIl0gPSBcIkFBUlwiO1xuICAgIFRBR1NbXCJQT1NJVElPTlwiXSA9IFwiUG9zXCI7XG4gICAgVEFHU1tcIlNFUEFSQVRPUlwiXSA9IFwibW9ub21lci1zZXBhcmF0b3JcIjtcbiAgICBUQUdTW1wiU0VMRUNUSU9OXCJdID0gXCJzZWxlY3Rpb25cIjtcbn0pKFRBR1MgfHwgKFRBR1MgPSB7fSkpO1xuZXhwb3J0IHZhciBTRU1fVFlQRVM7XG4oZnVuY3Rpb24gKFNFTV9UWVBFUykge1xuICAgIFNFTV9UWVBFU1tcIkFNSU5PX0FDSURTXCJdID0gXCJhbWlub0FjaWRzXCI7XG4gICAgU0VNX1RZUEVTW1wiQUxJR05FRF9TRVFVRU5DRVwiXSA9IFwiYWxpZ25lZFNlcXVlbmNlXCI7XG4gICAgU0VNX1RZUEVTW1wiQUxJR05FRF9TRVFVRU5DRV9ESUZGRVJFTkNFXCJdID0gXCJhbGlnbmVkU2VxdWVuY2VEaWZmZXJlbmNlXCI7XG4gICAgU0VNX1RZUEVTW1wiQUNUSVZJVFlcIl0gPSBcImFjdGl2aXR5XCI7XG4gICAgU0VNX1RZUEVTW1wiQUNUSVZJVFlfU0NBTEVEXCJdID0gXCJhY3Rpdml0eVNjYWxlZFwiO1xuICAgIFNFTV9UWVBFU1tcIk1hY3JvX01vbGVjdWxlXCJdID0gXCJNYWNyb21vbGVjdWxlXCI7XG59KShTRU1fVFlQRVMgfHwgKFNFTV9UWVBFUyA9IHt9KSk7XG5leHBvcnQgY29uc3QgU1RBVFMgPSAnc3RhdHMnO1xuZXhwb3J0IGNvbnN0IEVNQkVERElOR19TVEFUVVMgPSAnZW1iZWRkaW5nU3RhdHVzJztcbmV4cG9ydCBjb25zdCBQRVBUSURFU19BTkFMWVNJUyA9ICdpc1BlcHRpZGVzQW5hbHlzaXMnO1xuZXhwb3J0IHZhciBGTEFHUztcbihmdW5jdGlvbiAoRkxBR1MpIHtcbiAgICBGTEFHU1tcIkNFTExfQ0hBTkdJTkdcIl0gPSBcImlzQ2VsbENoYW5naW5nXCI7XG59KShGTEFHUyB8fCAoRkxBR1MgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IGFhckdyb3VwcyA9IHtcbiAgICAnUic6ICdQQycsICdIJzogJ1BDJywgJ0snOiAnUEMnLFxuICAgICdEJzogJ05DJywgJ0UnOiAnTkMnLFxuICAgICdTJzogJ1UnLCAnVCc6ICdVJywgJ04nOiAnVScsICdRJzogJ1UnLFxuICAgICdDJzogJ1NDJywgJ1UnOiAnU0MnLCAnRyc6ICdTQycsICdQJzogJ1NDJyxcbiAgICAnQSc6ICdIJywgJ1YnOiAnSCcsICdJJzogJ0gnLCAnTCc6ICdIJywgJ00nOiAnSCcsICdGJzogJ0gnLCAnWSc6ICdIJywgJ1cnOiAnSCcsXG4gICAgJy0nOiAnLScsXG59O1xuZXhwb3J0IGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSB7XG4gICAgJ1BDJzogeyAnZGVzY3JpcHRpb24nOiAnUG9zaXRpdmUgQW1pbm8gQWNpZHMsIHdpdGggRWxlY3RyaWNhbGx5IENoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnUicsICdIJywgJ0snXSB9LFxuICAgICdOQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ05lZ2F0aXZlIEFtaW5vIEFjaWRzLCB3aXRoIEVsZWN0cmljYWxseSBDaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ0QnLCAnRSddIH0sXG4gICAgJ1UnOiB7ICdkZXNjcmlwdGlvbic6ICdBbWlubyBBY2lkcyB3aXRoIFBvbGFyIFVuY2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydTJywgJ1QnLCAnTicsICdRJ10gfSxcbiAgICAnU0MnOiB7ICdkZXNjcmlwdGlvbic6ICdTcGVjaWFsIENhc2VzJywgJ2FtaW5vQWNpZHMnOiBbJ0MnLCAnVScsICdHJywgJ1AnXSB9LFxuICAgICdIJzoge1xuICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW1pbm8gQWNpZHMgd2l0aCBIeWRyb3Bob2JpYyBTaWRlIENoYWluJyxcbiAgICAgICAgJ2FtaW5vQWNpZHMnOiBbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLFxuICAgIH0sXG4gICAgJy0nOiB7ICdkZXNjcmlwdGlvbic6ICdVbmtub3duIEFtaW5vIEFjaWQnLCAnYW1pbm9BY2lkcyc6IFsnLSddIH0sXG59O1xuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgJCBmcm9tICdjYXNoLWRvbSc7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xubGV0IGNvbnZlcnREaWFsb2cgPSBudWxsO1xubGV0IGNvbnZlcnREaWFsb2dTdWJzID0gW107XG4vKipcbiAqIENvbnZlcnRzIG5vdGF0aW9ucyBvZiBhIE1hY3JvbW9sZWN1bGUgY29sdW1uXG4gKlxuICogQHBhcmFtIHtERy5jb2x1bW59IGNvbCBDb2x1bW4gd2l0aCAnTWFjcm9tb2xlY3VsZScgc2VtYW50aWMgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydChjb2wpIHtcbiAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCBjdXJyZW50ID0gY29udmVydGVyLnNvdXJjZU5vdGF0aW9uO1xuICAgIC8vVE9ETzogcmVhZCBhbGwgbm90YXRpb25zXG4gICAgY29uc3Qgbm90YXRpb25zID0gW1xuICAgICAgICBcIkZBU1RBXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sXG4gICAgICAgIFwiU0VQQVJBVE9SXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLFxuICAgICAgICBcIkhFTE1cIiAvKiBOT1RBVElPTi5IRUxNICovXG4gICAgXTtcbiAgICBjb25zdCBzZXBhcmF0b3JBcnJheSA9IFsnLScsICcuJywgJy8nXTtcbiAgICBjb25zdCBmaWx0ZXJlZE5vdGF0aW9ucyA9IG5vdGF0aW9ucy5maWx0ZXIoKGUpID0+IGUgIT09IGN1cnJlbnQpO1xuICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uSW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnQ29udmVydCB0bycsIGZpbHRlcmVkTm90YXRpb25zWzBdLCBmaWx0ZXJlZE5vdGF0aW9ucyk7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5wdXQgPSB1aS5jaG9pY2VJbnB1dCgnU2VwYXJhdG9yJywgc2VwYXJhdG9yQXJyYXlbMF0sIHNlcGFyYXRvckFycmF5KTtcbiAgICAvLyBoaWRlIHRoZSBzZXBhcmF0b3IgaW5wdXQgZm9yIG5vbi1TRVBBUkFUT1IgdGFyZ2V0IG5vdGF0aW9uc1xuICAgIGlmICh0YXJnZXROb3RhdGlvbklucHV0LnZhbHVlICE9PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLylcbiAgICAgICAgJChzZXBhcmF0b3JJbnB1dC5yb290KS5oaWRlKCk7XG4gICAgZWxzZVxuICAgICAgICAkKHNlcGFyYXRvcklucHV0LnJvb3QpLnNob3coKTtcbiAgICB0YXJnZXROb3RhdGlvbklucHV0Lm9uQ2hhbmdlZCgoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICh0YXJnZXROb3RhdGlvbklucHV0LnZhbHVlICE9PSBcIlNFUEFSQVRPUlwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLylcbiAgICAgICAgICAgICQoc2VwYXJhdG9ySW5wdXQucm9vdCkuaGlkZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICAkKHNlcGFyYXRvcklucHV0LnJvb3QpLnNob3coKTtcbiAgICB9KSk7XG4gICAgaWYgKGNvbnZlcnREaWFsb2cgPT0gbnVsbCkge1xuICAgICAgICBjb252ZXJ0RGlhbG9nID0gdWkuZGlhbG9nKCdDb252ZXJ0IHNlcXVlbmNlIG5vdGF0aW9uJylcbiAgICAgICAgICAgIC5hZGQodWkuZGl2KFtcbiAgICAgICAgICAgIHVpLmgxKCdDdXJyZW50IG5vdGF0aW9uOiAnICsgY3VycmVudCksXG4gICAgICAgICAgICB0YXJnZXROb3RhdGlvbklucHV0LnJvb3QsXG4gICAgICAgICAgICBzZXBhcmF0b3JJbnB1dC5yb290XG4gICAgICAgIF0pKVxuICAgICAgICAgICAgLm9uT0soKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0Tm90YXRpb24gPSB0YXJnZXROb3RhdGlvbklucHV0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gc2VwYXJhdG9ySW5wdXQudmFsdWU7XG4gICAgICAgICAgICB5aWVsZCBjb252ZXJ0RG8oY29sLCB0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgfSkpXG4gICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICBjb252ZXJ0RGlhbG9nU3Vicy5wdXNoKGNvbnZlcnREaWFsb2cub25DbG9zZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb252ZXJ0RGlhbG9nU3Vicy5mb3JFYWNoKChzKSA9PiB7IHMudW5zdWJzY3JpYmUoKTsgfSk7XG4gICAgICAgICAgICBjb252ZXJ0RGlhbG9nU3VicyA9IFtdO1xuICAgICAgICAgICAgY29udmVydERpYWxvZyA9IG51bGw7XG4gICAgICAgIH0pKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY29udmVydERvKHNyY0NvbCwgdGFyZ2V0Tm90YXRpb24sIHNlcGFyYXRvcikge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlciA9IG5ldyBOb3RhdGlvbkNvbnZlcnRlcihzcmNDb2wpO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBjb252ZXJ0ZXIuY29udmVydCh0YXJnZXROb3RhdGlvbiwgc2VwYXJhdG9yKTtcbiAgICAgICAgc3JjQ29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgICAgICB5aWVsZCBncm9rLmRhdGEuZGV0ZWN0U2VtYW50aWNUeXBlcyhzcmNDb2wuZGF0YUZyYW1lKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9KTtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IEFpb2xpIGZyb20gJ0BiaW93YXNtL2Fpb2xpJztcbmltcG9ydCB7IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxdWVuY2UtZW5jb2Rlcic7XG4vKipcbiAqIENvbnZlcnRzIGFycmF5IG9mIHNlcXVlbmNlcyBpbnRvIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gc2VxdWVuY2VzIElucHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICogQHJldHVybiB7c3RyaW5nfSBGYXN0YS1mb3JtYXR0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBfc3RyaW5nc1RvRmFzdGEoc2VxdWVuY2VzKSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlcy5yZWR1Y2UoKGEsIHYsIGkpID0+IGEgKyBgPnNhbXBsZSR7aSArIDF9XFxuJHt2fVxcbmAsICcnKTtcbn1cbi8qKlxuICogRXh0cmFjdHMgYXJyYXkgb2Ygc2VxdWVuY2VzIGZyb20gc2ltcGxlIGZhc3RhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmFzdGEgRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfSBPdXRwdXQgbGlzdCBvZiBzZXF1ZW5jZXMuXG4gKi9cbmZ1bmN0aW9uIF9mYXN0YVRvU3RyaW5ncyhmYXN0YSkge1xuICAgIHJldHVybiBmYXN0YS5yZXBsYWNlKC8+c2FtcGxlXFxkKyhcXHJcXG58XFxyfFxcbikvZywgJycpLnNwbGl0KCdcXG4nKTtcbn1cbi8qKlxuICogUnVucyBBaW9saSBlbnZpcm9ubWVudCB3aXRoIGthbGlnbiB0b29sLlxuICpcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzcmNDb2wgQ29sdW1uIHdpdGggc2VxdWVuY2VzLlxuICogQHBhcmFtIHtib29sZWFufSBpc0FsaWduZWQgV2hldGhlciB0aGUgY29sdW1uIGlzIGFsaWduZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gdW5Vc2VkTmFtZVxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlLCB1blVzZWROYW1lID0gJycpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgc2VxdWVuY2VzID0gc3JjQ29sLnRvTGlzdCgpO1xuICAgICAgICBpZiAoaXNBbGlnbmVkKVxuICAgICAgICAgICAgc2VxdWVuY2VzID0gc2VxdWVuY2VzLm1hcCgodiwgXykgPT4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5jbGVhbih2KS5yZXBsYWNlKC9cXC0vZywgJycpKTtcbiAgICAgICAgY29uc3QgZmFzdGEgPSBfc3RyaW5nc1RvRmFzdGEoc2VxdWVuY2VzKTtcbiAgICAgICAgY29uc3QgQ0xJID0geWllbGQgbmV3IEFpb2xpKHtcbiAgICAgICAgICAgIHRvb2w6ICdrYWxpZ24nLFxuICAgICAgICAgICAgdmVyc2lvbjogJzMuMy4xJyxcbiAgICAgICAgICAgIHJlaW5pdDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFsnZmFzdGEubGVuZ3RoID0nLCBmYXN0YS5sZW5ndGhdKTtcbiAgICAgICAgeWllbGQgQ0xJLmZzLndyaXRlRmlsZSgnaW5wdXQuZmEnLCBmYXN0YSk7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHlpZWxkIENMSS5leGVjKCdrYWxpZ24gaW5wdXQuZmEgLWYgZmFzdGEgLW8gcmVzdWx0LmZhc3RhJyk7XG4gICAgICAgIGNvbnNvbGUud2FybihvdXRwdXQpO1xuICAgICAgICBjb25zdCBidWYgPSB5aWVsZCBDTEkuY2F0KCdyZXN1bHQuZmFzdGEnKTtcbiAgICAgICAgaWYgKCFidWYpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGthbGlnbiBvdXRwdXQgbm8gcmVzdWx0YCk7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBfZmFzdGFUb1N0cmluZ3MoYnVmKS5zbGljZSgwLCBzZXF1ZW5jZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdGd0Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKHVuVXNlZE5hbWUsIGFsaWduZWQpO1xuICAgICAgICAvLyB1bml0c1xuICAgICAgICBjb25zdCBzcmNVbml0cyA9IHNyY0NvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIGNvbnN0IHRndFVuaXRzID0gc3JjVW5pdHMuc3BsaXQoJzonKS5tYXAoKHAsIGkpID0+IGkgPT0gMSA/IHAgKyAnLk1TQScgOiBwKS5qb2luKCc6Jyk7XG4gICAgICAgIHRndENvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgdGd0VW5pdHMpO1xuICAgICAgICB0Z3RDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgcmV0dXJuIHRndENvbDtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TVNBRW5vdWdoTWVtb3J5KGNvbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlc0NvdW50ID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBzZXF1ZW5jZXNDb3VudCAvIDEwMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRlbHRhOyBpIDwgc2VxdWVuY2VzQ291bnQ7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgcnVuS2FsaWduKERHLkNvbHVtbi5mcm9tU3RyaW5ncyhjb2wubmFtZSwgY29sLnRvTGlzdCgpLnNsaWNlKDAsIE1hdGgucm91bmQoaSkpKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBzdWNjZWVkZWQgb24gJHtpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBmYWlsZWQgb24gJHtpfSB3aXRoICcke2Vycm9yfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCB7IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzKGNvbCwgc2VxKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nQXJyYXkgPSBjb2wudG9MaXN0KCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IG5ldyBBcnJheShzdHJpbmdBcnJheS5sZW5ndGgpLmZpbGwoMC4wKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdBcnJheS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgIGRpc3RhbmNlc1tpXSA9IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoQXZhaWxhYmxlTWV0cmljc1snU3RyaW5nJ11bJ0xldmVuc2h0ZWluJ10oc3RyaW5nQXJyYXlbaV0sIHNlcSkpO1xuICAgICAgICByZXR1cm4gREcuQ29sdW1uLmZyb21MaXN0KERHLkNPTFVNTl9UWVBFLkZMT0FULCAnZGlzdGFuY2VzJywgZGlzdGFuY2VzKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9vbHRpcChwYXJhbXMpIHtcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdID0gdWkuZGl2SChbXSk7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSB1aS5kaXZWKFtcbiAgICAgICAgdWkuZGl2VGV4dCgnc2VxdWVuc2UnKSxcbiAgICAgICAgdWkuZGl2VGV4dChwYXJhbXMuYWN0aXZpdHkubmFtZSksXG4gICAgXSk7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ3NwYWNlLWJldHdlZW4nO1xuICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKGNvbHVtbk5hbWVzKTtcbiAgICBwYXJhbXMubGluZS5tb2xzLmZvckVhY2goKG1vbCkgPT4ge1xuICAgICAgICBjb25zdCBzZXEgPSB1aS5kaXZUZXh0KHBhcmFtcy5kZi5nZXQocGFyYW1zLnNlcUNvbC5uYW1lLCBtb2wpKTtcbiAgICAgICAgY29uc3QgYWN0aXZpdHkgPSB1aS5kaXZUZXh0KHBhcmFtcy5kZi5nZXQocGFyYW1zLmFjdGl2aXR5Lm5hbWUsIG1vbCkudG9GaXhlZCgyKSk7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2xlZnQnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5wYWRkaW5nTGVmdCA9ICczMHB4JztcbiAgICAgICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXS5hcHBlbmQodWkuZGl2VihbXG4gICAgICAgICAgICBzZXEsXG4gICAgICAgICAgICBhY3Rpdml0eSxcbiAgICAgICAgXSwgeyBzdHlsZTogeyBwYWRkaW5nTGVmdDogJzVweCcgfSB9KSk7XG4gICAgfSk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBBdmFpbGFibGVNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgeyByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zZXF1ZW5jZS1zcGFjZSc7XG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VTcGFjZShzcGFjZVBhcmFtcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBwcmVwYXJlZERhdGE7XG4gICAgICAgIGlmICghKHNwYWNlUGFyYW1zLnNlcUNvbC50YWdzW0RHLlRBR1MuVU5JVFNdID09PSAnSEVMTScpKSB7XG4gICAgICAgICAgICBjb25zdCBzZXAgPSBzcGFjZVBhcmFtcy5zZXFDb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcEZpbmFsID0gc2VwID8gc2VwID09PSAnLicgPyAnXFxcXFxcLicgOiBzZXAgOiAnLSc7XG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc2VwRmluYWwsICdnJyk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1snU3RyaW5nJ10pLmluY2x1ZGVzKHNwYWNlUGFyYW1zLnNpbWlsYXJpdHlNZXRyaWMpKVxuICAgICAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKS5tYXAoKHYpID0+IHYucmVwbGFjZShyZWdleCwgJycpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VxdWVuY2VTcGFjZVJlc3VsdCA9IHlpZWxkIHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbihwcmVwYXJlZERhdGEsIHNwYWNlUGFyYW1zLm1ldGhvZE5hbWUsIHNwYWNlUGFyYW1zLnNpbWlsYXJpdHlNZXRyaWMsIHNwYWNlUGFyYW1zLm9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb2xzID0gc3BhY2VQYXJhbXMuZW1iZWRBeGVzTmFtZXMubWFwKChuYW1lLCBpbmRleCkgPT4gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkobmFtZSwgc2VxdWVuY2VTcGFjZVJlc3VsdC5lbWJlZGRpbmdbaW5kZXhdKSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBzZXF1ZW5jZVNwYWNlUmVzdWx0LmRpc3RhbmNlLCBjb29yZGluYXRlczogbmV3IERHLkNvbHVtbkxpc3QoY29scykgfTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZGRpbmdDb2xzTmFtZXMoZGYpIHtcbiAgICBjb25zdCBheGVzID0gWydFbWJlZF9YJywgJ0VtYmVkX1knXTtcbiAgICBjb25zdCBjb2xOYW1lSW5kID0gZGYuY29sdW1ucy5uYW1lcygpLmZpbHRlcigoaXQpID0+IGl0LmluY2x1ZGVzKGF4ZXNbMF0pKS5sZW5ndGggKyAxO1xuICAgIHJldHVybiBheGVzLm1hcCgoaXQpID0+IGAke2l0fV8ke2NvbE5hbWVJbmR9YCk7XG59XG4iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0IHsgQ0FQX0dST1VQX05BTUUsIENBUF9HUk9VUF9TTUlMRVMsIGpzb25TZGZNb25vbWVyTGliRGljdCwgTU9OT01FUl9TWU1CT0wsIFJHUk9VUF9BTFRFUl9JRCwgUkdST1VQX0ZJRUxELCBSR1JPVVBfTEFCRUwsIFNERl9NT05PTUVSX05BTUUgfSBmcm9tICcuLi9jb25zdCc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSA9ICcvc2FtcGxlcy9IRUxNQ29yZUxpYnJhcnkuanNvbic7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT05PTUVSX1NZTUJPTCA9ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfTU9MRklMRSA9ICdtb2xmaWxlJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfRklFTERTID0gWydzeW1ib2wnLCAnbW9sZmlsZScsICdyZ3JvdXBzJywgJ25hbWUnXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2xmaWxlc0Zyb21TZXEoY29sLCBtb25vbWVyc0xpYk9iamVjdCkge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgY29uc3Qgc2VwID0gY29sLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gICAgY29uc3Qgc3BsaXR0ZXJGdW5jID0gV2ViTG9nby5nZXRTcGxpdHRlcih1bml0cywgc2VwKTtcbiAgICBjb25zdCBtb25vbWVyc0RpY3QgPSBjcmVhdGVNb21vbWVyc01vbERpY3QobW9ub21lcnNMaWJPYmplY3QpO1xuICAgIGNvbnN0IG1vbEZpbGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgY29uc3QgbW9ub21lcnMgPSBzcGxpdHRlckZ1bmMoY29sLmdldChpKSk7XG4gICAgICAgIGNvbnN0IG1vbEZpbGVzRm9yU2VxID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgICAgICAgICAgIGlmICghbW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSkge1xuICAgICAgICAgICAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXIgJHttb25vbWVyc1tqXX0gaXMgbWlzc2luZyBpbiBIRUxNIGxpYnJhcnkuIFN0cnVjdHVyZSBjYW5ub3QgYmUgY3JlYXRlZGApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbW9sRmlsZXMucHVzaChtb2xGaWxlc0ZvclNlcSk7XG4gICAgfVxuICAgIHJldHVybiBtb2xGaWxlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliKSB7XG4gICAgY29uc3QgZGljdCA9IHt9O1xuICAgIGxpYi5mb3JFYWNoKChpdCkgPT4ge1xuICAgICAgICBpZiAoaXRbJ3BvbHltZXJUeXBlJ10gPT09ICdQRVBUSURFJykge1xuICAgICAgICAgICAgY29uc3QgbW9ub21lck9iamVjdCA9IHt9O1xuICAgICAgICAgICAgSEVMTV9DT1JFX0ZJRUxEUy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vbm9tZXJPYmplY3RbZmllbGRdID0gaXRbZmllbGRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWN0W2l0W0hFTE1fQ09SRV9MSUJfTU9OT01FUl9TWU1CT0xdXSA9IG1vbm9tZXJPYmplY3Q7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGljdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVKc29uTW9ub21lckxpYkZyb21TZGYodGFibGUpIHtcbiAgICBjb25zdCByZXN1bHRMaWIgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhYmxlLnJvd0NvdW50OyBpKyspIHtcbiAgICAgICAgY29uc3QgbW9ub21lciA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhqc29uU2RmTW9ub21lckxpYkRpY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gTU9OT01FUl9TWU1CT0wpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtb25vbWVyU3ltYm9sID0gdGFibGUuZ2V0KGpzb25TZGZNb25vbWVyTGliRGljdFtrZXldLCBpKTtcbiAgICAgICAgICAgICAgICBtb25vbWVyW2tleV0gPSBtb25vbWVyU3ltYm9sID09PSAnLicgPyB0YWJsZS5nZXQoU0RGX01PTk9NRVJfTkFNRSwgaSkgOiBtb25vbWVyU3ltYm9sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoa2V5ID09PSBSR1JPVVBfRklFTEQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZ3JvdXBzID0gdGFibGUuZ2V0KGpzb25TZGZNb25vbWVyTGliRGljdFtrZXldLCBpKS5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QganNvblJncm91cHMgPSBbXTtcbiAgICAgICAgICAgICAgICByZ3JvdXBzLmZvckVhY2goKGcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcmdyb3VwID0ge307XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsdEF0b20gPSBnLnN1YnN0cmluZyhnLmxhc3RJbmRleE9mKCddJykgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFkaWNhbE51bSA9IGcubWF0Y2goL1xcW1IoXFxkKylcXF0vKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgcmdyb3VwW0NBUF9HUk9VUF9TTUlMRVNdID0gYWx0QXRvbSA9PT0gJ0gnID8gYFsqOiR7cmFkaWNhbE51bX1dW0hdYCA6IGBPWyo6JHtyYWRpY2FsTnVtfV1gO1xuICAgICAgICAgICAgICAgICAgICByZ3JvdXBbUkdST1VQX0FMVEVSX0lEXSA9IGFsdEF0b20gPT09ICdIJyA/IGBSJHtyYWRpY2FsTnVtfS1IYCA6IGBSJHtyYWRpY2FsTnVtfS1PSGA7XG4gICAgICAgICAgICAgICAgICAgIHJncm91cFtDQVBfR1JPVVBfTkFNRV0gPSBhbHRBdG9tID09PSAnSCcgPyBgSGAgOiBgT0hgO1xuICAgICAgICAgICAgICAgICAgICByZ3JvdXBbUkdST1VQX0xBQkVMXSA9IGBSJHtyYWRpY2FsTnVtfWA7XG4gICAgICAgICAgICAgICAgICAgIGpzb25SZ3JvdXBzLnB1c2gocmdyb3VwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBtb25vbWVyW2tleV0gPSBqc29uUmdyb3VwcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChqc29uU2RmTW9ub21lckxpYkRpY3Rba2V5XSlcbiAgICAgICAgICAgICAgICAgICAgbW9ub21lcltrZXldID0gdGFibGUuZ2V0KGpzb25TZGZNb25vbWVyTGliRGljdFtrZXldLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdExpYi5wdXNoKG1vbm9tZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0TGliO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/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/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcblx0ICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG5cdCAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcblx0ICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcblx0ICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmKFNVUFBPUlRfREVTQykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIEM7XG5cdCAgfSxcblx0ICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuXHQgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuXHQgICAgICAsIHByZXYsIGluZGV4O1xuXHQgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG5cdCAgICBpZihlbnRyeSl7XG5cdCAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcblx0ICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcblx0ICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcblx0ICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG5cdCAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG5cdCAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcblx0ICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuXHQgICAgICB9O1xuXHQgICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG5cdCAgICAgIGlmKHByZXYpcHJldi5uID0gZW50cnk7XG5cdCAgICAgIHRoYXRbU0laRV0rKztcblx0ICAgICAgLy8gYWRkIHRvIGluZGV4XG5cdCAgICAgIGlmKGluZGV4ICE9PSAnRicpdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcblx0ICAgIH0gcmV0dXJuIHRoYXQ7XG5cdCAgfSxcblx0ICBnZXRFbnRyeTogZ2V0RW50cnksXG5cdCAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuXHQgICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG5cdCAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICAgICAgdGhpcy5fdCA9IGl0ZXJhdGVkOyAgLy8gdGFyZ2V0XG5cdCAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcblx0ICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcblx0ICAgIH0sIGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuXHQgICAgICAgICwgZW50cnkgPSB0aGF0Ll9sO1xuXHQgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG5cdCAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuXHQgICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG5cdCAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICByZXR1cm4gc3RlcCgxKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG5cdCAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG5cdCAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG5cdCAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG5cdCAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG5cdCAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuXHQgICAgc3BlY2llcyhDKTtcblx0ICAgIHNwZWNpZXMoX193ZWJwYWNrX3JlcXVpcmVfXygxMilbTkFNRV0pOyAvLyBmb3Igd3JhcHBlclxuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaGlkZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcblx0ICB2YXIgQmFzZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVtOQU1FXVxuXHQgICAgLCBDICAgICA9IEJhc2Vcblx0ICAgICwgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnXG5cdCAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuXHQgICAgLCBPICAgICA9IHt9O1xuXHQgIGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSB8fCB0eXBlb2YgQyAhPSAnZnVuY3Rpb24nXG5cdCAgICB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOyB9KSlcblx0ICApe1xuXHQgICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3Jcblx0ICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGFyZ2V0LCBDLCBOQU1FKTtcblx0ICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0YXJnZXRbQURERVJdLCB0YXJnZXQpO1xuXHQgICAgfSk7XG5cdCAgICAkLmVhY2guY2FsbCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMnLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcblx0ICAgICAgdmFyIGNoYWluID0gS0VZID09ICdhZGQnIHx8IEtFWSA9PSAnc2V0Jztcblx0ICAgICAgaWYoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpaGlkZShDLnByb3RvdHlwZSwgS0VZLCBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG5cdCAgICAgICAgcmV0dXJuIGNoYWluID8gdGhpcyA6IHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICAgIGlmKCdzaXplJyBpbiBwcm90bykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2Muc2l6ZTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQywgTkFNRSk7XG5cblx0ICBPW05BTUVdID0gQztcblx0ICAkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiwgTyk7XG5cblx0ICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cblx0ICByZXR1cm4gQztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciAkZGVmICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cdCRkZWYoJGRlZi5QLCAnU2V0Jywge3RvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXyg5MCkoJ1NldCcpfSk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgZm9yT2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgICAgaWYoY2xhc3NvZih0aGlzKSAhPSBOQU1FKXRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG5cdCAgICB2YXIgYXJyID0gW107XG5cdCAgICBmb3JPZih0aGlzLCBmYWxzZSwgYXJyLnB1c2gsIGFycik7XG5cdCAgICByZXR1cm4gYXJyO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjsiLCJtb2R1bGUuZXhwb3J0cyA9ICQ7IiwibW9kdWxlLmV4cG9ydHMgPSBERzsiLCJtb2R1bGUuZXhwb3J0cyA9IGdyb2s7IiwibW9kdWxlLmV4cG9ydHMgPSByeGpzOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyY1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHNjcmlwdFVybCA9IHNjcmlwdHNbc2NyaXB0cy5sZW5ndGggLSAxXS5zcmNcblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJwYWNrYWdlXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzIHRvIG1hdGNoIGV4dGVybmFsIG1vZHVsZXMgaW4gd2VicGFjayBjb25maWd1cmF0aW9uICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5leHBvcnQgY29uc3QgX3BhY2thZ2UgPSBuZXcgREcuUGFja2FnZSgpO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCB7IFZkUmVnaW9uc1ZpZXdlciB9IGZyb20gJy4vdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlcic7XG5pbXBvcnQgeyBydW5LYWxpZ24gfSBmcm9tICcuL3V0aWxzL211bHRpcGxlLXNlcXVlbmNlLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTZXF1ZW5jZUFsaWdubWVudCB9IGZyb20gJy4vc2VxX2FsaWduJztcbmltcG9ydCB7IGdldEVtYmVkZGluZ0NvbHNOYW1lcywgc2VxdWVuY2VTcGFjZSB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2Utc3BhY2UnO1xuaW1wb3J0IHsgZ2V0QWN0aXZpdHlDbGlmZnMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy92aWV3ZXJzL2FjdGl2aXR5LWNsaWZmcyc7XG5pbXBvcnQgeyBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcywgZHJhd1Rvb2x0aXAgfSBmcm9tICcuL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcyc7XG5pbXBvcnQgeyBjcmVhdGVKc29uTW9ub21lckxpYkZyb21TZGYsIGdldE1vbGZpbGVzRnJvbVNlcSwgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSB9IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWFjcm9Nb2wgfSBmcm9tICcuL3V0aWxzL2F0b21pYy13b3Jrcyc7XG5pbXBvcnQgeyBNYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXIgfSBmcm9tICcuL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgY29udmVydCB9IGZyb20gJy4vdXRpbHMvY29udmVydCc7XG4vL3RhZ3M6IGluaXRcbmV4cG9ydCBmdW5jdGlvbiBpbml0QmlvKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGFwcGFyZW50bHkgSEVMTVdlYkVkaXRvciByZXF1aXJlcyBkb2pvIHRvIGJlIGluaXRpYWxpemVkIGZpcnN0XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLy9uYW1lOiBtYWNyb21vbGVjdWxlU2VxdWVuY2VDZWxsUmVuZGVyZXJcbi8vdGFnczogY2VsbFJlbmRlcmVyXG4vL21ldGEuY2VsbFR5cGU6IE1hY3JvbW9sZWN1bGVcbi8vb3V0cHV0OiBncmlkX2NlbGxfcmVuZGVyZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gbWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyKCkge1xuICAgIHJldHVybiBuZXcgTWFjcm9tb2xlY3VsZVNlcXVlbmNlQ2VsbFJlbmRlcmVyKCk7XG59XG5mdW5jdGlvbiBjaGVja0lucHV0Q29sdW1uKGNvbCwgbmFtZSwgYWxsb3dlZE5vdGF0aW9ucyA9IFtdLCBhbGxvd2VkQWxwaGFiZXRzID0gW10pIHtcbiAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgaWYgKGNvbC5zZW1UeXBlICE9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKG5hbWUgKyAnIGFuYWx5c2lzIGlzIGFsbG93ZWQgZm9yIE1hY3JvbW9sZWN1bGVzIHNlbWFudGljIHR5cGUnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmICgoYWxsb3dlZEFscGhhYmV0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICFhbGxvd2VkQWxwaGFiZXRzLnNvbWUoKGEpID0+IHVuaXRzLnRvVXBwZXJDYXNlKCkuZW5kc1dpdGgoYS50b1VwcGVyQ2FzZSgpKSkpIHx8XG4gICAgICAgIChhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICFhbGxvd2VkTm90YXRpb25zLnNvbWUoKG4pID0+IHVuaXRzLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aChuLnRvVXBwZXJDYXNlKCkpKSkpIHtcbiAgICAgICAgY29uc3Qgbm90YXRpb25BZGQgPSBhbGxvd2VkTm90YXRpb25zLmxlbmd0aCA9PSAwID8gJ2FueSBub3RhdGlvbicgOlxuICAgICAgICAgICAgKGBub3RhdGlvbiR7YWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZE5vdGF0aW9ucy5tYXAoKG4pID0+IGBcIiR7bn1cImApLmpvaW4oJywgJyl9IGApO1xuICAgICAgICBjb25zdCBhbHBoYWJldEFkZCA9IGFsbG93ZWROb3RhdGlvbnMubGVuZ3RoID09IDAgPyAnYW55IGFscGhhYmV0JyA6XG4gICAgICAgICAgICAoYGFscGhhYmV0JHthbGxvd2VkQWxwaGFiZXRzLmxlbmd0aCA+IDEgPyAncycgOiAnJ30gJHthbGxvd2VkQWxwaGFiZXRzLm1hcCgoYSkgPT4gYFwiJHthfVwiYCkuam9pbignLCAnKX0uYCk7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhuYW1lICsgJyBhbmFseXNpcyBpcyBhbGxvd2VkIGZvciBNYWNyb21vbGVjdWxlcyB3aXRoICcgKyBub3RhdGlvbkFkZCArICcgYW5kICcgKyBhbHBoYWJldEFkZCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vL25hbWU6IHNlcXVlbmNlQWxpZ25tZW50XG4vL2lucHV0OiBzdHJpbmcgYWxpZ25UeXBlIHtjaG9pY2VzOiBbJ0xvY2FsIGFsaWdubWVudCcsICdHbG9iYWwgYWxpZ25tZW50J119XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy9pbnB1dDogc3RyaW5nIGFsaWduVGFibGUge2Nob2ljZXM6IFsnQVVUTycsICdOVUNMRU9USURFUycsICdCTE9TVU00NScsICdCTE9TVU01MCcsJ0JMT1NVTTYyJywnQkxPU1VNODAnLCdCTE9TVU05MCcsJ1BBTTMwJywnUEFNNzAnLCdQQU0yNTAnLCdTQ0hORUlERVInLCdUUkFOUyddfVxuLy9pbnB1dDogZG91YmxlIGdhcFxuLy9pbnB1dDogc3RyaW5nIHNlcTFcbi8vaW5wdXQ6IHN0cmluZyBzZXEyXG4vL291dHB1dDogb2JqZWN0IHJlc1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlQWxpZ25tZW50KGFsaWduVHlwZSwgYWxpZ25UYWJsZSwgZ2FwLCBzZXExLCBzZXEyKSB7XG4gICAgY29uc3QgdG9BbGlnbiA9IG5ldyBTZXF1ZW5jZUFsaWdubWVudChzZXExLCBzZXEyLCBnYXAsIGFsaWduVGFibGUpO1xuICAgIGNvbnN0IHJlcyA9IGFsaWduVHlwZSA9PSAnTG9jYWwgYWxpZ25tZW50JyA/IHRvQWxpZ24uc21pdGhXYXRlcm1hbigpIDogdG9BbGlnbi5uZWVkbGVtYW5XdW5jaCgpO1xuICAgIHJldHVybiByZXM7XG59XG4vL25hbWU6IFdlYkxvZ29cbi8vZGVzY3JpcHRpb246IFdlYkxvZ28gdmlld2VyXG4vL3RhZ3M6IHZpZXdlciwgcGFuZWxcbi8vb3V0cHV0OiB2aWV3ZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gd2ViTG9nb1ZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFdlYkxvZ28oKTtcbn1cbi8vbmFtZTogVmRSZWdpb25zXG4vL2Rlc2NyaXB0aW9uOiBWLURvbWFpbiByZWdpb25zIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHZkUmVnaW9uVmlld2VyKCkge1xuICAgIHJldHVybiBuZXcgVmRSZWdpb25zVmlld2VyKCk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZXF1ZW5jZSBBY3Rpdml0eSBDbGlmZnMuLi5cbi8vbmFtZTogU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzXG4vL2Rlc2NyaXB0aW9uOiBkZXRlY3QgYWN0aXZpdHkgY2xpZmZzXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGUgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbi8vaW5wdXQ6IGNvbHVtbiBhY3Rpdml0aWVzXG4vL2lucHV0OiBkb3VibGUgc2ltaWxhcml0eSA9IDgwIFtTaW1pbGFyaXR5IGN1dG9mZl1cbi8vaW5wdXQ6IHN0cmluZyBtZXRob2ROYW1lIHsgY2hvaWNlczpbXCJVTUFQXCIsIFwidC1TTkVcIiwgXCJTUEVcIl0gfVxuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2aXR5Q2xpZmZzKGRmLCBtYWNyb01vbGVjdWxlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdBY3Rpdml0eSBDbGlmZnMnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgYXhlc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICdTUEUnOiB7IGN5Y2xlczogMjAwMCwgbGFtYmRhOiAxLjAsIGRsYW1iZGE6IDAuMDAwNSB9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bml0cyA9IG1hY3JvTW9sZWN1bGUudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICAgICAgeWllbGQgZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIG1hY3JvTW9sZWN1bGUsIGF4ZXNOYW1lcywgJ0FjdGl2aXR5IGNsaWZmcycsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksICdMZXZlbnNodGVpbicsIG1ldGhvZE5hbWUsIERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSwgdW5pdHMsIHNlcXVlbmNlU3BhY2UsIHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCwgb3B0aW9uc1ttZXRob2ROYW1lXSk7XG4gICAgfSk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZXF1ZW5jZSBTcGFjZS4uLlxuLy9uYW1lOiBTZXF1ZW5jZSBTcGFjZVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gbWFjcm9Nb2xlY3VsZSB7IHNlbVR5cGU6IE1hY3JvbW9sZWN1bGUgfVxuLy9pbnB1dDogc3RyaW5nIG1ldGhvZE5hbWUgeyBjaG9pY2VzOltcIlVNQVBcIiwgXCJ0LVNORVwiLCBcIlNQRVwiXSB9XG4vL2lucHV0OiBzdHJpbmcgc2ltaWxhcml0eU1ldHJpYyB7IGNob2ljZXM6W1wiTGV2ZW5zaHRlaW5cIiwgXCJUYW5pbW90b1wiXSB9XG4vL2lucHV0OiBib29sIHBsb3RFbWJlZGRpbmdzID0gdHJ1ZVxuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlU3BhY2VUb3BNZW51KHRhYmxlLCBtYWNyb01vbGVjdWxlLCBtZXRob2ROYW1lLCBzaW1pbGFyaXR5TWV0cmljID0gJ0xldmVuc2h0ZWluJywgcGxvdEVtYmVkZGluZ3MpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoIWNoZWNrSW5wdXRDb2x1bW4obWFjcm9Nb2xlY3VsZSwgJ0FjdGl2aXR5IENsaWZmcycpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBlbWJlZENvbHNOYW1lcyA9IGdldEVtYmVkZGluZ0NvbHNOYW1lcyh0YWJsZSk7XG4gICAgICAgIGNvbnN0IGNoZW1TcGFjZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIHNlcUNvbDogbWFjcm9Nb2xlY3VsZSxcbiAgICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgICBzaW1pbGFyaXR5TWV0cmljOiBzaW1pbGFyaXR5TWV0cmljLFxuICAgICAgICAgICAgZW1iZWRBeGVzTmFtZXM6IGVtYmVkQ29sc05hbWVzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlU3BhY2VSZXMgPSB5aWVsZCBzZXF1ZW5jZVNwYWNlKGNoZW1TcGFjZVBhcmFtcyk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGluZ3MgPSBzZXF1ZW5jZVNwYWNlUmVzLmNvb3JkaW5hdGVzO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBlbWJlZGRpbmdzKVxuICAgICAgICAgICAgdGFibGUuY29sdW1ucy5hZGQoY29sKTtcbiAgICAgICAgaWYgKHBsb3RFbWJlZGRpbmdzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgZ3Jvay5zaGVsbC52aWV3cykge1xuICAgICAgICAgICAgICAgIGlmICh2Lm5hbWUgPT09IHRhYmxlLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIHYuc2NhdHRlclBsb3QoeyB4OiBlbWJlZENvbHNOYW1lc1swXSwgeTogZW1iZWRDb2xzTmFtZXNbMV0sIHRpdGxlOiAnU2VxdWVuY2Ugc3BhY2UnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG47XG4vL3RvcC1tZW51OiBCaW8gfCBUbyBBdG9taWMgTGV2ZWwuLi5cbi8vbmFtZTogVG8gQXRvbWljIExldmVsXG4vL2Rlc2NyaXB0aW9uOiByZXR1cm5zIG1vbGZpbGVzIGZvciBlYWNoIG1vbm9tZXIgZnJvbSBIRUxNIGxpYnJhcnlcbi8vaW5wdXQ6IGRhdGFmcmFtZSBkZiBbSW5wdXQgZGF0YSB0YWJsZV1cbi8vaW5wdXQ6IGNvbHVtbiBtYWNyb01vbGVjdWxlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIHRvQXRvbWljTGV2ZWwoZGYsIG1hY3JvTW9sZWN1bGUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBpZiAoREcuRnVuYy5maW5kKHsgcGFja2FnZTogJ0NoZW0nLCBuYW1lOiAnZ2V0UmRLaXRNb2R1bGUnIH0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKCdUcmFuc2Zvcm1hdGlvbiB0byBhdG9taWMgbGV2ZWwgcmVxdWlyZXMgcGFja2FnZSBcIkNoZW1cIiBpbnN0YWxsZWQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGVja0lucHV0Q29sdW1uKG1hY3JvTW9sZWN1bGUsICdUbyBBdG9taWMgTGV2ZWwnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3O1xuICAgICAgICBmb3IgKGNvbnN0IHZpZXcgb2YgZ3Jvay5zaGVsbC50YWJsZVZpZXdzKSB7XG4gICAgICAgICAgICBpZiAoZGYubmFtZSA9PT0gdmlldy5uYW1lKVxuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3ID0gdmlldztcbiAgICAgICAgfVxuICAgICAgICAvLyBTb21lIGhhY2sgdG8gYWN0aXZhdGUgQ2hlbSBNb2xlY3VsZSByZW5kZXJpbmdcbiAgICAgICAgY29uc3QgZmlsZTIgPSB5aWVsZCBfcGFja2FnZS5maWxlcy5yZWFkQXNUZXh0KCd0ZXN0cy9zYXItc21hbGwuY3N2Jyk7XG4gICAgICAgIGNvbnN0IGRmMiA9IERHLkRhdGFGcmFtZS5mcm9tQ3N2KGZpbGUyKTtcbiAgICAgICAgY29uc3QgdjIgPSBncm9rLnNoZWxsLmFkZFRhYmxlVmlldyhkZjIpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwuY2xvc2VUYWJsZShkZjIpO1xuICAgICAgICAgICAgdjIuY2xvc2UoKTtcbiAgICAgICAgICAgIGdyb2suc2hlbGwudiA9IGN1cnJlbnRWaWV3O1xuICAgICAgICB9LCAxMDApO1xuICAgICAgICBjb25zdCBtb25vbWVyc0xpYkZpbGUgPSB5aWVsZCBfcGFja2FnZS5maWxlcy5yZWFkQXNUZXh0KEhFTE1fQ09SRV9MSUJfRklMRU5BTUUpO1xuICAgICAgICBjb25zdCBtb25vbWVyc0xpYk9iamVjdCA9IEpTT04ucGFyc2UobW9ub21lcnNMaWJGaWxlKTtcbiAgICAgICAgY29uc3QgYXRvbWljQ29kZXMgPSBnZXRNb2xmaWxlc0Zyb21TZXEobWFjcm9Nb2xlY3VsZSwgbW9ub21lcnNMaWJPYmplY3QpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCBnZXRNYWNyb01vbChhdG9taWNDb2Rlcyk7XG4gICAgICAgIGNvbnN0IGNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygncmVnZW5lcmF0ZWQnLCByZXN1bHQpO1xuICAgICAgICBjb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTU9MRUNVTEU7XG4gICAgICAgIGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdID0gJ21vbGJsb2NrJztcbiAgICAgICAgZGYuY29sdW1ucy5hZGQoY29sLCB0cnVlKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IE1TQS4uLlxuLy9uYW1lOiBNU0Fcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG4vL291dHB1dDogY29sdW1uIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIG11bHRpcGxlU2VxdWVuY2VBbGlnbm1lbnRBbnkodGFibGUsIGNvbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihjb2wsICdNU0EnLCBbJ2Zhc3RhJ10sIFsnRE5BJywgJ1JOQScsICdQVCddKSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCB1blVzZWROYW1lID0gdGFibGUuY29sdW1ucy5nZXRVbnVzZWROYW1lKGBtc2EoJHtjb2wubmFtZX0pYCk7XG4gICAgICAgIGNvbnN0IG1zYUNvbCA9IHlpZWxkIHJ1bkthbGlnbihjb2wsIGZhbHNlLCB1blVzZWROYW1lKTtcbiAgICAgICAgdGFibGUuY29sdW1ucy5hZGQobXNhQ29sKTtcbiAgICAgICAgLy8gVGhpcyBjYWxsIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBjZWxsIHJlbmRlcmVyIGFjdGl2YXRpb25cbiAgICAgICAgeWllbGQgZ3Jvay5kYXRhLmRldGVjdFNlbWFudGljVHlwZXModGFibGUpO1xuICAgICAgICAvLyBjb25zdCB0djogREcuVGFibGVWaWV3ID0gZ3Jvay5zaGVsbC50djtcbiAgICAgICAgLy8gdHYuZ3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIHJldHVybiBtc2FDb2w7XG4gICAgfSk7XG59XG4vL25hbWU6IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL3RvcC1tZW51OiBCaW8gfCBDb21wb3NpdGlvbiBBbmFseXNpc1xuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NpdGlvbkFuYWx5c2lzKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIEhpZ2hlciBwcmlvcml0eSBmb3IgY29sdW1ucyB3aXRoIE1TQSBkYXRhIHRvIHNob3cgd2l0aCBXZWJMb2dvLlxuICAgICAgICBjb25zdCB0diA9IGdyb2suc2hlbGwudHY7XG4gICAgICAgIGNvbnN0IGRmID0gdHYuZGF0YUZyYW1lO1xuICAgICAgICBjb25zdCBjb2wgPSBXZWJMb2dvLnBpY2tVcFNlcUNvbDIoZGYpO1xuICAgICAgICBpZiAoIWNvbCkge1xuICAgICAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcignQ3VycmVudCB0YWJsZSBkb2VzIG5vdCBjb250YWluIHNlcXVlbmNlcycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tJbnB1dENvbHVtbihjb2wsICdDb21wb3NpdGlvbicpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBhbGxvd2VkTm90YXRpb25zID0gWydmYXN0YScsICdzZXBhcmF0b3InXTtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBpZiAoIWFsbG93ZWROb3RhdGlvbnMuc29tZSgobikgPT4gdW5pdHMudG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKG4udG9VcHBlckNhc2UoKSkpKSB7XG4gICAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoJ0NvbXBvc2l0aW9uIGFuYWx5c2lzIGlzIGFsbG93ZWQgZm9yICcgK1xuICAgICAgICAgICAgICAgIGBub3RhdGlvbiR7YWxsb3dlZE5vdGF0aW9ucy5sZW5ndGggPiAxID8gJ3MnIDogJyd9ICR7YWxsb3dlZE5vdGF0aW9ucy5tYXAoKG4pID0+IGBcIiR7bn1cImApLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdsVmlld2VyID0gdHYuYWRkVmlld2VyKCdXZWJMb2dvJywgeyBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbC5uYW1lIH0pO1xuICAgICAgICBncm9rLnNoZWxsLnR2LmRvY2tNYW5hZ2VyLmRvY2sod2xWaWV3ZXIsIERHLkRPQ0tfVFlQRS5ET1dOLCBudWxsLCAnQ29tcG9zaXRpb24gYW5hbHlzaXMnLCAwLjI1KTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IFNkZiB0byBKc29uIGxpYi4uLlxuLy9uYW1lOiBzZGZUb0pzb25MaWJcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuZXhwb3J0IGZ1bmN0aW9uIHNkZlRvSnNvbkxpYih0YWJsZSkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGpzb25Nb25vbWVyTGlicmFyeSA9IGNyZWF0ZUpzb25Nb25vbWVyTGliRnJvbVNkZih0YWJsZSk7XG4gICAgfSk7XG59XG4vLyBoZWxwZXIgZnVuY3Rpb24gZm9yIGltcG9ydEZhc3RhXG5mdW5jdGlvbiBwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgZW5kT2ZTZXF1ZW5jZSkge1xuICAgIGNvbnN0IHNlcSA9IGZpbGVDb250ZW50LnNsaWNlKHN0YXJ0T2ZTZXF1ZW5jZSwgZW5kT2ZTZXF1ZW5jZSk7XG4gICAgY29uc3Qgc2VxQXJyYXkgPSBzZXEuc3BsaXQoL1xccy8pO1xuICAgIHJldHVybiBzZXFBcnJheS5qb2luKCcnKTtcbn1cbi8vbmFtZTogaW1wb3J0RmFzdGFcbi8vZGVzY3JpcHRpb246IE9wZW5zIEZBU1RBIGZpbGVcbi8vdGFnczogZmlsZS1oYW5kbGVyXG4vL21ldGEuZXh0OiBmYXN0YSwgZm5hLCBmZm4sIGZhYSwgZnJuLCBmYSwgZnN0XG4vL2lucHV0OiBzdHJpbmcgZmlsZUNvbnRlbnRcbi8vb3V0cHV0OiBsaXN0IHRhYmxlc1xuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydEZhc3RhKGZpbGVDb250ZW50KSB7XG4gICAgY29uc3QgcmVnZXggPSAvXj4oLiopJC9nbTsgLy8gbWF0Y2ggbGluZXMgc3RhcnRpbmcgd2l0aCA+XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXkgPSBbXTtcbiAgICBjb25zdCBzZXF1ZW5jZXNBcnJheSA9IFtdO1xuICAgIGxldCBzdGFydE9mU2VxdWVuY2UgPSAwO1xuICAgIGxldCBtYXRjaDsgLy8gbWF0Y2guaW5kZXggaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0Y2hlZCBsaW5lXG4gICAgd2hpbGUgKG1hdGNoID0gcmVnZXguZXhlYyhmaWxlQ29udGVudCkpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBmaWxlQ29udGVudC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyAxLCByZWdleC5sYXN0SW5kZXgpO1xuICAgICAgICBkZXNjcmlwdGlvbnNBcnJheS5wdXNoKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKHN0YXJ0T2ZTZXF1ZW5jZSAhPT0gMClcbiAgICAgICAgICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIHN0YXJ0T2ZTZXF1ZW5jZSA9IHJlZ2V4Lmxhc3RJbmRleCArIDE7XG4gICAgfVxuICAgIHNlcXVlbmNlc0FycmF5LnB1c2gocGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIC0xKSk7XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXlDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2Rlc2NyaXB0aW9uJywgZGVzY3JpcHRpb25zQXJyYXkpO1xuICAgIGNvbnN0IHNlcXVlbmNlQ29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdzZXF1ZW5jZScsIHNlcXVlbmNlc0FycmF5KTtcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gJ01hY3JvbW9sZWN1bGUnO1xuICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXF1ZW5jZUNvbCwgNSwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgIGNvbnN0IHNlcVR5cGUgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgY29uc3QgUGVwdGlkZUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFtcbiAgICAgICAgJ0cnLCAnTCcsICdZJywgJ1MnLCAnRScsICdRJywgJ0QnLCAnTicsICdGJywgJ0EnLFxuICAgICAgICAnSycsICdSJywgJ0gnLCAnQycsICdWJywgJ1AnLCAnVycsICdJJywgJ00nLCAnVCcsXG4gICAgXSk7XG4gICAgY29uc3QgRG5hRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoWydBJywgJ0MnLCAnRycsICdUJ10pO1xuICAgIGNvbnN0IFJuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVSddKTtcbiAgICAvL2NvbnN0IFNtaWxlc1Jhd0FscGhhYmV0ID0gbmV3IFNldChbXG4gICAgLy8gICdPJywgJ0MnLCAnYycsICdOJywgJ1MnLCAnRicsICcoJywgJyknLFxuICAgIC8vICAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsXG4gICAgLy8gICcrJywgJy0nLCAnQCcsICdbJywgJ10nLCAnLycsICdcXFxcJywgJyMnLCAnPSddKTtcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFsnUFQnLCBQZXB0aWRlRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFsnRE5BJywgRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFsnUk5BJywgUm5hRmFzdGFBbHBoYWJldF0sXG4gICAgXTtcbiAgICAvL2NvbnN0IGFscGhhYmV0Q2FuZGlkYXRlczogW3N0cmluZywgU2V0PHN0cmluZz5dW10gPSBbXG4gICAgLy8gIFsnTlQnLCBuZXcgU2V0KE9iamVjdC5rZXlzKE51Y2xlb3RpZGVzLk5hbWVzKSldLFxuICAgIC8vICBbJ1BUJywgbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSldLFxuICAgIC8vXTtcbiAgICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW0gPSBhbHBoYWJldENhbmRpZGF0ZXMubWFwKChjKSA9PiBXZWJMb2dvLmdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzFdKSk7XG4gICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICBjb25zdCBhbHBoYWJldCA9IG1heENvcyA+IDAuNjUgPyBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMF0gOiAnVU4nO1xuICAgIHNlcXVlbmNlQ29sLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgY29uc3QgdW5pdHMgPSBgZmFzdGE6JHtzZXFUeXBlfToke2FscGhhYmV0fWA7XG4gICAgc2VxdWVuY2VDb2wuc2V0VGFnKERHLlRBR1MuVU5JVFMsIHVuaXRzKTtcbiAgICByZXR1cm4gW0RHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbXG4gICAgICAgICAgICBkZXNjcmlwdGlvbnNBcnJheUNvbCxcbiAgICAgICAgICAgIHNlcXVlbmNlQ29sLFxuICAgICAgICBdKV07XG59XG4vL25hbWU6IEJpbyB8IENvbnZlcnQgLi4uXG4vL2ZyaWVuZGx5LW5hbWU6IEJpbyB8IENvbnZlcnRcbi8vdGFnczogcGFuZWwsIGJpb1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFuZWwoY29sKSB7XG4gICAgY29udmVydChjb2wpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9