@datagrok/bio 1.5.6 → 1.5.7

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
@@ -1206,6 +1206,7 @@ class WebLogo extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.JsViewer {
1206
1206
  this.horizontalAlignment = this.string('horizontalAlignment', 'center', { choices: ['left', 'center', 'right'] });
1207
1207
  this.fitArea = this.bool('fitArea', true);
1208
1208
  this.shrinkEmptyTail = this.bool('shrinkEmptyTail', true);
1209
+ this.skipEmptyPositions = this.bool('skipEmptyPositions', false);
1209
1210
  }
1210
1211
  /** For startPosition equals to endPosition Length is 1 */
1211
1212
  get Length() {
@@ -1452,7 +1453,8 @@ class WebLogo extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.JsViewer {
1452
1453
  this.positions[jPos].rowCount += this.positions[jPos].freq[m].count;
1453
1454
  }
1454
1455
  //#endregion
1455
- const maxHeight = this.canvas.height - this.axisHeight;
1456
+ const r = window.devicePixelRatio;
1457
+ const maxHeight = this.canvas.height - this.axisHeight * r;
1456
1458
  // console.debug(`WebLogo<${this.viewerId}>._calculate() maxHeight=${maxHeight}.`);
1457
1459
  //#region Calculate screen
1458
1460
  for (let jPos = 0; jPos < this.Length; jPos++) {
@@ -1557,18 +1559,19 @@ class WebLogo extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.JsViewer {
1557
1559
  height = height * scale;
1558
1560
  this._positionWidth = this.positionWidth * scale;
1559
1561
  }
1560
- this.canvas.width = width;
1562
+ const r = window.devicePixelRatio;
1563
+ this.canvas.width = width * r;
1561
1564
  this.canvas.style.width = `${width}px`;
1562
1565
  // const canvasHeight: number = width > this.root.clientWidth ? height - 8 : height;
1563
1566
  this.host.style.setProperty('height', `${height}px`);
1564
1567
  const canvasHeight = this.host.clientHeight;
1565
- this.canvas.height = canvasHeight;
1568
+ this.canvas.height = canvasHeight * r;
1566
1569
  this.canvas.style.setProperty('height', `${canvasHeight}px`);
1567
1570
  // Adjust host and root width
1568
1571
  if (this.fixWidth) {
1569
1572
  // full width for canvas host and root
1570
1573
  this.root.style.width = this.host.style.width = `${width}px`;
1571
- this.root.style.height /*= this.host.style.height*/ = `${height}px`;
1574
+ this.root.style.height = `${height}px`;
1572
1575
  this.host.style.setProperty('overflow', 'hidden', 'important');
1573
1576
  }
1574
1577
  else {
@@ -1733,12 +1736,10 @@ class WebLogo extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.JsViewer {
1733
1736
  }
1734
1737
  /** Get splitter method to split sequences to monomers */
1735
1738
  static getSplitter(units, separator) {
1736
- if (units.toLowerCase().startsWith('fasta')) {
1739
+ if (units.toLowerCase().startsWith('fasta'))
1737
1740
  return WebLogo.splitterAsFasta;
1738
- }
1739
- else if (units.toLowerCase().startsWith('separator')) {
1741
+ else if (units.toLowerCase().startsWith('separator'))
1740
1742
  return WebLogo.getSplitterWithSeparator(separator);
1741
- }
1742
1743
  else
1743
1744
  throw new Error(`Unexpected units ${units} .`);
1744
1745
  // TODO: Splitter for HELM
@@ -1754,7 +1755,7 @@ WebLogo.aaSynonyms = {
1754
1755
  '[MeG]': 'G',
1755
1756
  '[MeF]': 'F',
1756
1757
  };
1757
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWxvZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWItbG9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBb0JqRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBUyxLQUFpQjtJQUN4RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMxQyxPQUFPLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDO0FBRUYsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVMsQ0FBUyxFQUFFLENBQVM7SUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxJ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Q0FBQyxFQUFFO1lBQzNDLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQztTQUNoQzthQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0RCxPQUFPLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwRDs7WUFDQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixLQUFLLElBQUksQ0FBQyxDQUFDO1FBRWpELDBCQUEwQjtJQUM1QixDQUFDOztBQWpyQmEsbUJBQVcsR0FBRyxhQUFhLENBQUM7QUFDM0IsbUJBQVcsR0FBVyxDQUFDLENBQUMsQ0FBQztBQWlvQnpCLGlCQUFTLEdBQUcscUJBQXFCLENBQUM7QUFpRGpELDhGQUE4RjtBQUMvRSxrQkFBVSxHQUErQjtJQUN0RCxTQUFTLEVBQUUsR0FBRztJQUNkLE9BQU8sRUFBRSxHQUFHO0lBQ1osT0FBTyxFQUFFLEdBQUc7SUFDWixPQUFPLEVBQUUsR0FBRztDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQge0FtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlc30gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQge051Y2xlb3RpZGVzLCBOdWNsZW90aWRlc1BhbGV0dGVzfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQge1Vua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4uL3Vua25vd24nO1xuaW1wb3J0IHtTZXFQYWxldHRlfSBmcm9tICcuLi9zZXEtcGFsZXR0ZXMnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5kZWNsYXJlIG1vZHVsZSAnZGF0YWdyb2stYXBpL3NyYy9ncmlkJyB7XG4gIGludGVyZmFjZSBSZWN0IHtcbiAgICBjb250YWlucyh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW47XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTENhbnZhc0VsZW1lbnQge1xuICAgIGdldEN1cnNvclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogREcuUG9pbnQ7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTW9ub21lckZyZXFzID0geyBbbTogc3RyaW5nXTogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5cbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogREcuUG9pbnQge1xuICBjb25zdCByZWN0ID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcblxuREcuUmVjdC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbk1vbm9tZXJJbmZvIHtcbiAgLyoqIFNlcXVlbmNlcyBjb3VudCB3aXRoIG1vbm9tZXIgaW4gcG9zaXRpb25cbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG5cbiAgLyoqIFJlbWVtYmVyIHNjcmVlbiBjb29yZHMgcmVjdFxuICAgKi9cbiAgYm91bmRzOiBERy5SZWN0O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY291bnQgPSAwO1xuICAgIHRoaXMuYm91bmRzID0gbmV3IERHLlJlY3QoMCwgMCwgMCwgMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uSW5mbyB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIGZyZXE6IHsgW206IHN0cmluZ106IFBvc2l0aW9uTW9ub21lckluZm8gfTtcbiAgcm93Q291bnQ6IG51bWJlcjtcblxuICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBwb3NpdGlvbiAoJzExMUEnLCAnMTExLjEnLCBldGMpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgIHRoaXMucm93Q291bnQgPSAwO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICBwdWJsaWMgc3RhdGljIHJlc2lkdWVzU2V0ID0gJ251Y2xlb3RpZGVzJztcbiAgcHJpdmF0ZSBzdGF0aWMgdmlld2VyQ291bnQ6IG51bWJlciA9IC0xO1xuXG4gIHByaXZhdGUgdmlld2VySWQ6IG51bWJlciA9IC0xO1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gcHJpdmF0ZSByZWFkb25seSBjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUgPSBDb2xvclNjaGVtZXNbTnVjbGVvdGlkZXNXZWJMb2dvLnJlc2lkdWVzU2V0XTtcbiAgcHJvdGVjdGVkIGNwOiBTZXFQYWxldHRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBob3N0PzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgbXNnSG9zdD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNhbnZhcz86IEhUTUxDYW52YXNFbGVtZW50O1xuICBwcml2YXRlIHNsaWRlcj86IERHLlJhbmdlU2xpZGVyO1xuICBwcml2YXRlIHRleHRCYXNlbGluZTogQ2FudmFzVGV4dEJhc2VsaW5lO1xuXG4gIHByaXZhdGUgYXhpc0hlaWdodDogbnVtYmVyID0gMTI7XG5cbiAgcHJpdmF0ZSBzZXFDb2w6IERHLkNvbHVtbjxzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG4gIC8vIHByaXZhdGUgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgcG9zaXRpb25zOiBQb3NpdGlvbkluZm9bXSA9IFtdO1xuXG4gIHByaXZhdGUgcm93c01hc2tlZDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSByb3dzTnVsbDogbnVtYmVyID0gMDtcblxuICAvLyBWaWV3ZXIncyBwcm9wZXJ0aWVzIChsaWtlbHkgdGhleSBzaG91bGQgYmUgcHVibGljIHNvIHRoYXQgdGhleSBjYW4gYmUgc2V0IG91dHNpZGUpXG4gIHByaXZhdGUgX3Bvc2l0aW9uV2lkdGg6IG51bWJlcjtcbiAgcHVibGljIHBvc2l0aW9uV2lkdGg6IG51bWJlcjtcbiAgcHVibGljIG1pbkhlaWdodDogbnVtYmVyO1xuICBwdWJsaWMgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjb25zaWRlck51bGxTZXF1ZW5jZXM6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXF1ZW5jZUNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBzdGFydFBvc2l0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGVuZFBvc2l0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGZpeFdpZHRoOiBib29sZWFuO1xuICBwdWJsaWMgdmVydGljYWxBbGlnbm1lbnQ6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBob3Jpem9udGFsQWxpZ25tZW50OiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZml0QXJlYTogYm9vbGVhbjtcbiAgcHVibGljIHNocmlua0VtcHR5VGFpbDogYm9vbGVhbjtcblxuICBwcml2YXRlIHBvc2l0aW9uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBzdGFydFBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICBwcml2YXRlIGVuZFBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gIHByaXZhdGUgZ2V0IExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgdmlld1N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudmlld2VySWQgPSBXZWJMb2dvLnZpZXdlckNvdW50O1xuICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcblxuICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG5cbiAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoID0gdGhpcy5mbG9hdCgncG9zaXRpb25XaWR0aCcsIDE2LyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICB0aGlzLm1pbkhlaWdodCA9IHRoaXMuZmxvYXQoJ21pbkhlaWdodCcsIDUwLyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWF4SGVpZ2h0JywgMTAwLyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuXG4gICAgdGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMgPSB0aGlzLmJvb2woJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcycsIGZhbHNlKTtcbiAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcblxuICAgIHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnc3RhcnRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcblxuICAgIHRoaXMuZml4V2lkdGggPSB0aGlzLmJvb2woJ2ZpeFdpZHRoJywgZmFsc2UpO1xuXG4gICAgdGhpcy52ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCd2ZXJ0aWNhbEFsaWdubWVudCcsICdtaWRkbGUnLFxuICAgICAge2Nob2ljZXM6IFsndG9wJywgJ21pZGRsZScsICdib3R0b20nXX0pO1xuICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsXG4gICAgICB7Y2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddfSk7XG4gICAgdGhpcy5maXRBcmVhID0gdGhpcy5ib29sKCdmaXRBcmVhJywgdHJ1ZSk7XG4gICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJMb2dvIHNlY29uZCBpbml0aWFsaXphdGlvbiEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLmhlbHBVcmwgPSAnL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvd2ViLWxvZ28ubWQnO1xuXG4gICAgdGhpcy5tc2dIb3N0ID0gdWkuZGl2KCdObyBtZXNzYWdlJyk7XG4gICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICB0aGlzLmNhbnZhcyA9IHVpLmNhbnZhcygpO1xuICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuXG4gICAgdGhpcy5ob3N0ID0gdWkuZGl2KFt0aGlzLm1zZ0hvc3QsIHRoaXMuY2FudmFzXSk7XG5cbiAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEycHgnO1xuXG4gICAgY29uc3QgZ2V0TW9ub21lciA9IChwOiBERy5Qb2ludCk6IFtudW1iZXIsIHN0cmluZyB8IG51bGwsIFBvc2l0aW9uTW9ub21lckluZm8gfCBudWxsXSA9PiB7XG4gICAgICBjb25zdCBqUG9zID0gTWF0aC5mbG9vcihwLnggLyB0aGlzLl9wb3NpdGlvbldpZHRoKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG5cbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuXG4gICAgICBjb25zdCBtb25vbWVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG5cbiAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgfTtcblxuXG4gICAgLy8gdGhpcy5zdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZW92ZXInKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAvLyB9KSk7XG5cbiAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZW1vdmUnKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jYW52YXMpXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY29uc3QgYXJncyA9IGUgYXMgTW91c2VFdmVudDtcbiAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuXG4gICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICB1aS50b29sdGlwLnNob3dSb3dHcm91cCh0aGlzLmRhdGFGcmFtZSwgKGlSb3cpID0+IHtcbiAgICAgICAgICBjb25zdCBzZXEgPSB0aGlzLnNlcUNvbCEuZ2V0KGlSb3cpO1xuICAgICAgICAgIGNvbnN0IHNlcU0gPSBzZXEgPyBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzZXEpW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gc2VxTSA9PT0gbW9ub21lciAmJiB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0KGlSb3cpO1xuICAgICAgICB9LCBhcmdzLnggKyAxNiwgYXJncy55ICsgMTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuY2FudmFzLCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY29uc3QgYXJncyA9IGUgYXMgTW91c2VFdmVudDtcbiAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuXG4gICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sIS5nZXQoaVJvdyk7XG4gICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pKTtcblxuICAgIHRoaXMudmlld1N1YnMucHVzaCh1aS5vblNpemVDaGFuZ2VkKHRoaXMucm9vdCkuc3Vic2NyaWJlKHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQuYmluZCh0aGlzKSkpO1xuXG4gICAgdGhpcy5yb290LmFwcGVuZCh0aGlzLmhvc3QpO1xuICAgIC8vIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnNsaWRlci5yb290KTtcblxuICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByb290T25TaXplQ2hhbmdlZChhcmdzOiBhbnkpIHtcbiAgICB0aGlzLnJlbmRlcih0cnVlKTtcblxuICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Sb290U2l6ZUNoYW5nZWQoKSBgICtcbiAgICAvLyAgIGByb290LndpZHRoPSR7dGhpcy5yb290LmNsaWVudFdpZHRofSwgcm9vdC5oZWlnaHQ9JHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fSwgYCArXG4gICAgLy8gICBgY2FudmFzLndpZHRoPSR7dGhpcy5jYW52YXMud2lkdGh9LCBjYW52YXMuaGVpZ2h0PSR7dGhpcy5jYW52YXMuaGVpZ2h0fSAuYCk7XG4gIH1cblxuICAvKiogQXNzaWducyB7QGxpbmsgc2VxQ29sfSBhbmQge0BsaW5rIGNwfSBiYXNlZCBvbiB7QGxpbmsgc2VxdWVuY2VDb2x1bW5OYW1lfSBhbmQgY2FsbHMge0BsaW5rIHJlbmRlcn0oKS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlU2VxQ29sKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFGcmFtZSkge1xuICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA/IHRoaXMuZGF0YUZyYW1lLmNvbCh0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSkgOiBudWxsO1xuICAgICAgaWYgKHRoaXMuc2VxQ29sID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnBpY2tVcFNlcUNvbCh0aGlzLmRhdGFGcmFtZSk7XG4gICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID0gdGhpcy5zZXFDb2wgPyB0aGlzLnNlcUNvbC5uYW1lIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICB0aGlzLmNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKHRoaXMuc2VxQ29sKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUG9zaXRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXFDb2wpXG4gICAgICByZXR1cm47XG5cbiAgICBsZXQgY2F0ZWdvcmllczogKHN0cmluZyB8IG51bGwpIFtdO1xuICAgIGlmICh0aGlzLnNocmlua0VtcHR5VGFpbCkge1xuICAgICAgY29uc3QgaW5kaWNlczogSW50MzJBcnJheSA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgIGNhdGVnb3JpZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoXG4gICAgICAgIEFycmF5LmZyb20oQXJyYXkoaW5kaWNlcy5sZW5ndGgpLmtleXMoKSkubWFwKChpOiBudW1iZXIpID0+IHRoaXMuc2VxQ29sIS5nZXQoaW5kaWNlc1tpXSkpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3JpZXMgPSB0aGlzLnNlcUNvbC5jYXRlZ29yaWVzO1xuICAgIH1cbiAgICBjb25zdCBtYXhMZW5ndGggPSBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi5jYXRlZ29yaWVzLm1hcChcbiAgICAgIChzKSA9PiBzICE9PSBudWxsID8gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEocykubGVuZ3RoIDogMCkpIDogMDtcblxuICAgIC8vIEdldCBwb3NpdGlvbiBuYW1lcyBmcm9tIGRhdGEgY29sdW1uIHRhZyAncG9zaXRpb25OYW1lcydcbiAgICBjb25zdCBwb3NpdGlvbk5hbWVzVHh0ID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdwb3NpdGlvbk5hbWVzJyk7XG4gICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBwb3NpdGlvbk5hbWVzVHh0ID8gcG9zaXRpb25OYW1lc1R4dC5zcGxpdCgnLCAnKS5tYXAoKG4pID0+IG4udHJpbSgpKSA6XG4gICAgICBbLi4uQXJyYXkobWF4TGVuZ3RoKS5rZXlzKCldLm1hcCgoalBvcykgPT4gYCR7alBvcyArIDF9YCk7XG5cbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAodGhpcy5zdGFydFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSkgP1xuICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5zdGFydFBvc2l0aW9uTmFtZSkgOiAwO1xuICAgIHRoaXMuZW5kUG9zaXRpb24gPSAodGhpcy5lbmRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5lbmRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLmVuZFBvc2l0aW9uTmFtZSkgOiAobWF4TGVuZ3RoIC0gMSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHk6IERHLlByb3BlcnR5KTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblByb3BlcnR5Q2hhbmdlZCggJHtwcm9wZXJ0eS5uYW1lfSA9ICcnIH0pYCk7XG4gICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpO1xuXG4gICAgc3dpdGNoIChwcm9wZXJ0eS5uYW1lKSB7XG4gICAgY2FzZSAnY29uc2lkZXJOdWxsU2VxdWVuY2VzJzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdGFydFBvc2l0aW9uTmFtZSc6XG4gICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kUG9zaXRpb25OYW1lJzpcbiAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGg7XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21pbkhlaWdodCc6XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21heEhlaWdodCc6XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2ZpeFdpZHRoJzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndmVydGljYWxBbGlnbm1lbnQnOlxuICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdob3Jpem9udGFsQWxpZ25tZW50JzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZml0QXJlYSc6XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Nocmlua0VtcHR5VGFpbCc6XG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgIGNvbnN0IGRhdGFGcmFtZVR4dDogc3RyaW5nID0gdGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCc7XG4gICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICBzdXBlci5vblRhYmxlQXR0YWNoZWQoKTtcblxuICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG5cbiAgICBpZiAodGhpcy5kYXRhRnJhbWUgIT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpKTtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGRldGFjaCgpIHtcbiAgICBjb25zdCBkYXRhRnJhbWVUeHQgPSBgJHt0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJ31gO1xuICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgc3VwZXIuZGV0YWNoKCk7XG5cbiAgICB0aGlzLnZpZXdTdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaG9zdCEucmVtb3ZlKCk7XG4gICAgdGhpcy5jYW52YXMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tc2dIb3N0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaG9zdCA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX251bGxTZXF1ZW5jZShmaWxsZXJSZXNpZHVlID0gJ1gnKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMpXG4gICAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKS5maWxsKGZpbGxlclJlc2lkdWUpLmpvaW4oJycpO1xuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9jYWxjdWxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0IHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUpXG4gICAgICByZXR1cm47XG5cbiAgICB0aGlzLmNhbGNTaXplKCk7XG5cbiAgICB0aGlzLnBvc2l0aW9ucyA9IG5ldyBBcnJheSh0aGlzLkxlbmd0aCk7XG4gICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICBjb25zdCBwb3NOYW1lOiBzdHJpbmcgPSB0aGlzLnBvc2l0aW9uTmFtZXNbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc107XG4gICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXSA9IG5ldyBQb3NpdGlvbkluZm8ocG9zTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gMjAyMi0wNS0wNSBhc2thbGtpbiBpbnN0cnVjdGVkIHRvIHNob3cgV2ViTG9nbyBiYXNlZCBvbiBmaWx0ZXIgKG5vdCBzZWxlY3Rpb24pXG4gICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAvLyBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgPyB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkgOlxuICAgIC8vICAgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuXG4gICAgdGhpcy5yb3dzTWFza2VkID0gaW5kaWNlcy5sZW5ndGg7XG4gICAgdGhpcy5yb3dzTnVsbCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGkgb2YgaW5kaWNlcykge1xuICAgICAgbGV0IHM6IHN0cmluZyA9IDxzdHJpbmc+KHRoaXMuc2VxQ29sLmdldChpKSk7XG5cbiAgICAgIGlmICghcykge1xuICAgICAgICBzID0gdGhpcy5fbnVsbFNlcXVlbmNlKCk7XG4gICAgICAgICsrdGhpcy5yb3dzTnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VxTTogc3RyaW5nW10gPSBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzKTtcbiAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICBjb25zdCBtOiBzdHJpbmcgPSBzZXFNW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIHx8ICctJztcbiAgICAgICAgaWYgKCEobSBpbiBwbUluZm8pKVxuICAgICAgICAgIHBtSW5mb1ttXSA9IG5ldyBQb3NpdGlvbk1vbm9tZXJJbmZvKCk7XG4gICAgICAgIHBtSW5mb1ttXS5jb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vI3JlZ2lvbiBQb2xpc2ggZnJlcSBjb3VudHNcbiAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG5cbiAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50ID0gMDtcbiAgICAgIGZvciAoY29uc3QgbSBpbiB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxKVxuICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgIH1cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodDtcbiAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Ll9jYWxjdWxhdGUoKSBtYXhIZWlnaHQ9JHttYXhIZWlnaHR9LmApO1xuXG4gICAgLy8jcmVnaW9uIENhbGN1bGF0ZSBzY3JlZW5cbiAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgIGNvbnN0IGZyZXE6IHsgW2M6IHN0cmluZ106IFBvc2l0aW9uTW9ub21lckluZm8gfSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuXG4gICAgICBsZXQgeTogbnVtYmVyID0gdGhpcy5heGlzSGVpZ2h0O1xuXG4gICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoYVswXSAhPT0gJy0nICYmIGJbMF0gIT09ICctJylcbiAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJyAmJiBiWzBdID09PSAnLScpXG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJylcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIGVsc2UgLyogKGJbMF0gPT09ICctJykgKi9cbiAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICBjb25zdCBwbUluZm86IFBvc2l0aW9uTW9ub21lckluZm8gPSBlbnRyeVsxXTtcbiAgICAgICAgLy8gY29uc3QgbTogc3RyaW5nID0gZW50cnlbMF07XG4gICAgICAgIGNvbnN0IGg6IG51bWJlciA9IG1heEhlaWdodCAqIHBtSW5mby5jb3VudCAvIHJvd0NvdW50O1xuXG4gICAgICAgIHBtSW5mby5ib3VuZHMgPSBuZXcgREcuUmVjdChqUG9zICogdGhpcy5fcG9zaXRpb25XaWR0aCwgeSwgdGhpcy5fcG9zaXRpb25XaWR0aCwgaCk7XG4gICAgICAgIHkgKz0gaDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uXG4gIH1cblxuICAvLyByZWZsZWN0IGNoYW5nZXMgbWFkZSB0byBmaWx0ZXIvc2VsZWN0aW9uXG4gIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgIHRoaXMubXNnSG9zdCEuaW5uZXJUZXh0ID0gYFVua25vd24gcGFsZXR0ZSAoY29sdW1uIHNlbVR5cGU6ICcke3RoaXMuc2VxQ29sLnNlbVR5cGV9JykuYDtcbiAgICAgICAgdGhpcy5tc2dIb3N0IS5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1zZ0hvc3QhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lIHx8ICF0aGlzLmNwKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKCFnKSByZXR1cm47XG5cbiAgICBpZiAocmVjYWxjKVxuICAgICAgdGhpcy5fY2FsY3VsYXRlKCk7XG5cbiAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgZy5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGcuZmlsbFJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgZy50ZXh0QmFzZWxpbmUgPSB0aGlzLnRleHRCYXNlbGluZTtcblxuICAgIC8vIFByZXZlbnRzIGRpdmlzaW9uIGJ5IHplcm8gb24gTGVuZ3RoID0gMFxuICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgcmV0dXJuO1xuXG4gICAgLy8jcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICBnLmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgZy50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgY29uc3QgcG9zTmFtZU1heFdpZHRoID0gTWF0aC5tYXgoLi4udGhpcy5wb3NpdGlvbnMubWFwKChwb3MpID0+IGcubWVhc3VyZVRleHQocG9zLm5hbWUpLndpZHRoKSk7XG4gICAgY29uc3QgaFNjYWxlID0gcG9zTmFtZU1heFdpZHRoIDwgKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSA/IDEgOiAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpIC8gcG9zTmFtZU1heFdpZHRoO1xuXG4gICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICBjb25zdCBwb3M6IFBvc2l0aW9uSW5mbyA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgZy5zZXRUcmFuc2Zvcm0oXG4gICAgICAgIGhTY2FsZSwgMCwgMCwgMSxcbiAgICAgICAgalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGggKyB0aGlzLl9wb3NpdGlvbldpZHRoIC8gMiwgMCk7XG4gICAgICBnLmZpbGxUZXh0KHBvcy5uYW1lLCAwLCAwKTtcbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuXG4gICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICBmb3IgKGNvbnN0IFttb25vbWVyLCBwbUluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpKSB7XG4gICAgICAgIGlmIChtb25vbWVyICE9PSAnLScpIHtcbiAgICAgICAgICBjb25zdCBiID0gcG1JbmZvLmJvdW5kcztcblxuICAgICAgICAgIGNvbnN0IGZvbnRTdHlsZSA9ICcxNnB4IFJvYm90bywgUm9ib3RvIExvY2FsLCBzYW5zLXNlcmlmJztcbiAgICAgICAgICAvLyBIYWNrcyB0byBzY2FsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyB0byB0YXJnZXQgcmVjdGFuZ2xlXG4gICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVyQXNjZW50ID0gMC4yNTtcbiAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQgPSAxMi4yO1xuXG4gICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnbGlnaHRncmF5JztcbiAgICAgICAgICBnLmxpbmVXaWR0aCA9IDE7XG4gICAgICAgICAgZy5yZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICBnLmZpbGxTdHlsZSA9IHRoaXMuY3AuZ2V0KG1vbm9tZXIpID8/IHRoaXMuY3AuZ2V0KCdvdGhlcicpO1xuICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgIGcuZm9udCA9IGZvbnRTdHlsZTtcbiAgICAgICAgICAvL2cuZmlsbFJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IG1UbTogVGV4dE1ldHJpY3MgPSBnLm1lYXN1cmVUZXh0KG1vbm9tZXIpO1xuXG4gICAgICAgICAgLy8gaWYgKG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICE9IDApXG4gICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKGBtOiAke219LCBtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDogJHttTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudH1gKTtcblxuICAgICAgICAgIGcuc2V0VHJhbnNmb3JtKFxuICAgICAgICAgICAgYi53aWR0aCAvIG1UbS53aWR0aCwgMCwgMCwgYi5oZWlnaHQgLyB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQsXG4gICAgICAgICAgICBiLmxlZnQsIGIudG9wKTtcbiAgICAgICAgICBnLmZpbGxUZXh0KG1vbm9tZXIsIDAsIC11cHBlcmNhc2VMZXR0ZXJBc2NlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYWxjU2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QpXG4gICAgICByZXR1cm47XG5cbiAgICBsZXQgd2lkdGg6IG51bWJlciA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgIGxldCBoZWlnaHQgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgTWF0aC5tYXgodGhpcy5taW5IZWlnaHQsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQpKTtcblxuICAgIGlmICh0aGlzLmZpdEFyZWEpIHtcbiAgICAgIGNvbnN0IHhTY2FsZTogbnVtYmVyID0gdGhpcy5yb290LmNsaWVudEhlaWdodCAvIGhlaWdodDtcbiAgICAgIGNvbnN0IHlTY2FsZTogbnVtYmVyID0gdGhpcy5yb290LmNsaWVudFdpZHRoIC8gd2lkdGg7XG4gICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KDEsIE1hdGgubWluKHhTY2FsZSwgeVNjYWxlKSk7XG4gICAgICB3aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICBoZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggKiBzY2FsZTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuXG4gICAgLy8gY29uc3QgY2FudmFzSGVpZ2h0OiBudW1iZXIgPSB3aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCA/IGhlaWdodCAtIDggOiBoZWlnaHQ7XG4gICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xuICAgIHRoaXMuY2FudmFzLnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtjYW52YXNIZWlnaHR9cHhgKTtcblxuICAgIC8vIEFkanVzdCBob3N0IGFuZCByb290IHdpZHRoXG4gICAgaWYgKHRoaXMuZml4V2lkdGgpIHtcbiAgICAgIC8vIGZ1bGwgd2lkdGggZm9yIGNhbnZhcyBob3N0IGFuZCByb290XG4gICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0IC8qPSB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0Ki8gPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFsbG93IHNjcm9sbCBjYW52YXMgaW4gcm9vdFxuICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gdGhpcy5ob3N0LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgdGhpcy5ob3N0LnN0eWxlLm92ZXJmbG93WCA9ICdhdXRvIWltcG9ydGFudCc7XG4gICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgbnVsbCk7XG5cbiAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgndGV4dC1hbGlnbicsIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCk7XG5cbiAgICAgIC8vIHZlcnRpY2FsIGFsaWdubWVudFxuICAgICAgbGV0IGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgc3dpdGNoICh0aGlzLnZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICBjYXNlICd0b3AnOlxuICAgICAgICBob3N0VG9wTWFyZ2luID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpIC8gMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGAke2hvc3RUb3BNYXJnaW59cHhgLCAnaW1wb3J0YW50Jyk7XG5cbiAgICAgIGlmICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IDwgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7dGhpcy5yb290LmNsaWVudEhlaWdodH1weGApO1xuICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5kZWJ1ZyhcbiAgICAvLyAgIGB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgIC8vICAgYHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPSAke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgLy8gICBgdGhpcy5ob3N0LnN0eWxlLmhlaWdodCA9ICR7dGhpcy5ob3N0LnN0eWxlLmhlaWdodH1cXG5gICtcbiAgICAvLyAgIGB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLmhvc3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgIC8vICAgJ1xcbicgK1xuICAgIC8vICAgYHRoaXMuY2FudmFzLmhlaWdodCAgICAgICA9ICR7dGhpcy5jYW52YXMuaGVpZ2h0fVxcbmAgK1xuICAgIC8vICAgYHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICR7dGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAgICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcGlja1VwUGFsZXR0ZShzZXFDb2w6IERHLkNvbHVtbiwgbWluTGVuZ3RoOiBudW1iZXIgPSA1KTogU2VxUGFsZXR0ZSB7XG4gICAgbGV0IHJlczogU2VxUGFsZXR0ZSB8IG51bGwgPSBudWxsO1xuICAgIHN3aXRjaCAoc2VxQ29sLnNlbVR5cGUpIHtcbiAgICBjYXNlIEFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgcmVzID0gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IHN0YXRzOiBTZXFDb2xTdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcblxuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlczogW1NldDxzdHJpbmc+LCBTZXFQYWxldHRlXVtdID0gW1xuICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoTnVjbGVvdGlkZXMuTmFtZXMpKSwgTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW1dLFxuICAgICAgW25ldyBTZXQoT2JqZWN0LmtleXMoQW1pbm9hY2lkcy5OYW1lcykpLCBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3Vwc10sXG4gICAgXTtcbiAgICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW06IG51bWJlcltdID0gYWxwaGFiZXRDYW5kaWRhdGVzXG4gICAgICAubWFwKChjKSA9PiBXZWJMb2dvLmdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzBdKSk7XG4gICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICBpZiAobWF4Q29zID4gMC42NSlcbiAgICAgIHJlcyA9IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVsxXTtcbiAgICBlbHNlXG4gICAgICByZXMgPSBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqIFN0YXRzIG9mIHNlcXVlbmNlcyB3aXRoIHNwZWNpZmllZCBzcGxpdHRlciBmdW5jLCByZXR1cm5zIHsgZnJlcSwgc2FtZUxlbmd0aCB9LlxuICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAgICogQHBhcmFtIHtTcGxpdHRlckZ1bmN9IHNwbGl0dGVyXG4gICAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICAgKi9cbiAgc3RhdGljIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgICBjb25zdCBmcmVxOiB7IFttOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCBzZXEgb2Ygc2VxQ29sLmNhdGVnb3JpZXMpIHtcbiAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuXG4gICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgZmlyc3RMZW5ndGggPSBtU2VxLmxlbmd0aDtcbiAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgICBpZiAobVNlcS5sZW5ndGggPiBtaW5MZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgZnJlcVttXSA9IDA7XG4gICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7ZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEFscGhhYmV0U2ltaWxhcml0eShmcmVxOiBNb25vbWVyRnJlcXMsIGFscGhhYmV0OiBTZXQ8c3RyaW5nPiwgZ2FwU3ltYm9sOiBzdHJpbmcgPSAnLScpOiBudW1iZXIge1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0PHN0cmluZz4oWy4uLm5ldyBTZXQoT2JqZWN0LmtleXMoZnJlcSkpLCAuLi5hbHBoYWJldF0pO1xuICAgIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG5cbiAgICBjb25zdCBmcmVxQTogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBhbHBoYWJldEE6IG51bWJlcltdID0gW107XG4gICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgIGZyZXFBLnB1c2gobSBpbiBmcmVxID8gZnJlcVttXSA6IDApO1xuICAgICAgYWxwaGFiZXRBLnB1c2goYWxwaGFiZXQuaGFzKG0pID8gMSA6IDApO1xuICAgIH1cbiAgICAvKiBUaGVyZSB3ZXJlIGEgZmV3IGlkZWFzOiBjaGktc3F1YXJlZCwgcGVhcnNvbiBjb3JyZWxhdGlvbiAodmFyaWFuY2U/KSwgc2NhbGFyIHByb2R1Y3QgKi9cbiAgICBjb25zdCBmcmVxVjogVmVjdG9yID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgY29uc3QgYWxwaGFiZXRWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgY29uc3QgY29zOiBudW1iZXIgPSB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG4gICAgcmV0dXJuIGNvcztcbiAgfVxuXG4gIC8qKiBGaXJzdCB0cnkgdG8gZmluZCBjb2x1bW4gd2l0aCBzZW1UeXBlICdhbGlnbmVkU2VxdWVuY2UnLlxuICAgKiBOZXh0IGxvb2sgZm9yIGNvbHVtbiB3aXRoIGRhdGEgYWxwaGFiZXQgY29ycmVzcG9uZGluZyB0byBhbnkgb2YgdGhlIGtub3duIHBhbGV0dGVzLlxuICAgKiBAcGFyYW0ge0RHLkRhdGFGcmFtZX0gZGF0YUZyYW1lXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gVGhlIGNvbHVtbiB3ZSB3ZXJlIGxvb2tpbmcgZm9yIG9yIG51bGxcbiAgICovXG4gIHByaXZhdGUgcGlja1VwU2VxQ29sKGRhdGFGcmFtZTogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gICAgbGV0IHJlczogREcuQ29sdW1uIHwgbnVsbCA9IGRhdGFGcmFtZS5jb2x1bW5zLmJ5U2VtVHlwZSgnYWxpZ25lZFNlcXVlbmNlJyk7XG4gICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkYXRhRnJhbWUuY29sdW1ucykge1xuICAgICAgICBjb25zdCBjcCA9IFdlYkxvZ28ucGlja1VwUGFsZXR0ZShjb2wgYXMgREcuQ29sdW1uLCA1KTtcbiAgICAgICAgaWYgKGNwICE9PSBudWxsICYmICEoY3AgaW5zdGFuY2VvZiBVbmtub3duU2VxUGFsZXR0ZSkpIHtcbiAgICAgICAgICByZXMgPSBjb2w7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5cbiAgLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAgICogQHBhcmFtIHthbnl9IHNlcSBvYmplY3Qgd2l0aCBzZXF1ZW5jZVxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3BsaXR0ZXJBc0Zhc3RhKHNlcTogYW55KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlczogc3RyaW5nW10gPSB3dTxSZWdFeHBNYXRjaEFycmF5PihzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChXZWJMb2dvLm1vbm9tZXJSZSkpXG4gICAgICAubWFwKChtYTogUmVnRXhwTWF0Y2hBcnJheSkgPT4ge1xuICAgICAgICBsZXQgbVJlczogc3RyaW5nO1xuICAgICAgICBjb25zdCBtOiBzdHJpbmcgPSBtYVswXTtcbiAgICAgICAgaWYgKG0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGlmIChtIGluIFdlYkxvZ28uYWFTeW5vbnltcykge1xuICAgICAgICAgICAgbVJlcyA9IFdlYkxvZ28uYWFTeW5vbnltc1ttXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbVJlcyA9ICcnO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgTG9uZyBtb25vbWVyICcke219JyBoYXMgbm90IGEgc2hvcnQgc3lub255bS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbVJlcyA9IG07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1SZXM7XG4gICAgICB9KS50b0FycmF5KCk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqIEdldHMgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlIGJ5IHNlcGFyYXRvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yXG4gICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nKTogU3BsaXR0ZXJGdW5jIHtcbiAgICByZXR1cm4gKHNlcTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gc2VxLnNwbGl0KHNlcGFyYXRvcik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBHZXQgc3BsaXR0ZXIgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlcyB0byBtb25vbWVycyAqL1xuICBwdWJsaWMgc3RhdGljIGdldFNwbGl0dGVyKHVuaXRzOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nKTogU3BsaXR0ZXJGdW5jIHtcbiAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKSB7XG4gICAgICByZXR1cm4gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgfSBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKSB7XG4gICAgICByZXR1cm4gV2ViTG9nby5nZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yKTtcbiAgICB9IGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG5cbiAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxuICB9XG5cbiAgLyoqIE9ubHkgc29tZSBvZiB0aGUgc3lub255bXMuIFRoZXNlIHdlcmUgb2J0YWluZWQgZnJvbSB0aGUgY2x1c3RlcmVkIG9saWdvcGVwdGlkZSBkYXRhc2V0LiAqL1xuICBwcml2YXRlIHN0YXRpYyBhYVN5bm9ueW1zOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAnW01lTmxlXSc6ICdMJywgLy8gTmxlIC0gbm9ybGV1Y2luZVxuICAgICdbTWVBXSc6ICdBJyxcbiAgICAnW01lR10nOiAnRycsXG4gICAgJ1tNZUZdJzogJ0YnLFxuICB9O1xufVxuIl19
1758
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWxvZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWItbG9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUN2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBb0JqRSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBUyxLQUFpQjtJQUN4RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMxQyxPQUFPLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDO0FBRUYsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVMsQ0FBUyxFQUFFLENBQVM7SUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxJ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RTtZQUNyQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELHlEQUF5RDtJQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWEsRUFBRSxTQUFpQjtRQUN4RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3pDLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQzthQUM1QixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO1lBQ2xELE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDOztZQUVuRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixLQUFLLElBQUksQ0FBQyxDQUFDO1FBRWpELDBCQUEwQjtJQUM1QixDQUFDOztBQXJyQmEsbUJBQVcsR0FBRyxhQUFhLENBQUM7QUFDM0IsbUJBQVcsR0FBVyxDQUFDLENBQUMsQ0FBQztBQXFvQnpCLGlCQUFTLEdBQUcscUJBQXFCLENBQUM7QUFpRGpELDhGQUE4RjtBQUMvRSxrQkFBVSxHQUErQjtJQUN0RCxTQUFTLEVBQUUsR0FBRztJQUNkLE9BQU8sRUFBRSxHQUFHO0lBQ1osT0FBTyxFQUFFLEdBQUc7SUFDWixPQUFPLEVBQUUsR0FBRztDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQge0FtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlc30gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQge051Y2xlb3RpZGVzLCBOdWNsZW90aWRlc1BhbGV0dGVzfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQge1Vua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4uL3Vua25vd24nO1xuaW1wb3J0IHtTZXFQYWxldHRlfSBmcm9tICcuLi9zZXEtcGFsZXR0ZXMnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5kZWNsYXJlIG1vZHVsZSAnZGF0YWdyb2stYXBpL3NyYy9ncmlkJyB7XG4gIGludGVyZmFjZSBSZWN0IHtcbiAgICBjb250YWlucyh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW47XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTENhbnZhc0VsZW1lbnQge1xuICAgIGdldEN1cnNvclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogREcuUG9pbnQ7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTW9ub21lckZyZXFzID0geyBbbTogc3RyaW5nXTogbnVtYmVyIH07XG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5cbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogREcuUG9pbnQge1xuICBjb25zdCByZWN0ID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcblxuREcuUmVjdC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbk1vbm9tZXJJbmZvIHtcbiAgLyoqIFNlcXVlbmNlcyBjb3VudCB3aXRoIG1vbm9tZXIgaW4gcG9zaXRpb25cbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG5cbiAgLyoqIFJlbWVtYmVyIHNjcmVlbiBjb29yZHMgcmVjdFxuICAgKi9cbiAgYm91bmRzOiBERy5SZWN0O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY291bnQgPSAwO1xuICAgIHRoaXMuYm91bmRzID0gbmV3IERHLlJlY3QoMCwgMCwgMCwgMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uSW5mbyB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIGZyZXE6IHsgW206IHN0cmluZ106IFBvc2l0aW9uTW9ub21lckluZm8gfTtcbiAgcm93Q291bnQ6IG51bWJlcjtcblxuICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBwb3NpdGlvbiAoJzExMUEnLCAnMTExLjEnLCBldGMpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgIHRoaXMucm93Q291bnQgPSAwO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICBwdWJsaWMgc3RhdGljIHJlc2lkdWVzU2V0ID0gJ251Y2xlb3RpZGVzJztcbiAgcHJpdmF0ZSBzdGF0aWMgdmlld2VyQ291bnQ6IG51bWJlciA9IC0xO1xuXG4gIHByaXZhdGUgdmlld2VySWQ6IG51bWJlciA9IC0xO1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gcHJpdmF0ZSByZWFkb25seSBjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUgPSBDb2xvclNjaGVtZXNbTnVjbGVvdGlkZXNXZWJMb2dvLnJlc2lkdWVzU2V0XTtcbiAgcHJvdGVjdGVkIGNwOiBTZXFQYWxldHRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBob3N0PzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgbXNnSG9zdD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNhbnZhcz86IEhUTUxDYW52YXNFbGVtZW50O1xuICBwcml2YXRlIHNsaWRlcj86IERHLlJhbmdlU2xpZGVyO1xuICBwcml2YXRlIHRleHRCYXNlbGluZTogQ2FudmFzVGV4dEJhc2VsaW5lO1xuXG4gIHByaXZhdGUgYXhpc0hlaWdodDogbnVtYmVyID0gMTI7XG5cbiAgcHJpdmF0ZSBzZXFDb2w6IERHLkNvbHVtbjxzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG4gIC8vIHByaXZhdGUgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgcG9zaXRpb25zOiBQb3NpdGlvbkluZm9bXSA9IFtdO1xuXG4gIHByaXZhdGUgcm93c01hc2tlZDogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSByb3dzTnVsbDogbnVtYmVyID0gMDtcblxuICAvLyBWaWV3ZXIncyBwcm9wZXJ0aWVzIChsaWtlbHkgdGhleSBzaG91bGQgYmUgcHVibGljIHNvIHRoYXQgdGhleSBjYW4gYmUgc2V0IG91dHNpZGUpXG4gIHByaXZhdGUgX3Bvc2l0aW9uV2lkdGg6IG51bWJlcjtcbiAgcHVibGljIHBvc2l0aW9uV2lkdGg6IG51bWJlcjtcbiAgcHVibGljIG1pbkhlaWdodDogbnVtYmVyO1xuICBwdWJsaWMgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBjb25zaWRlck51bGxTZXF1ZW5jZXM6IGJvb2xlYW47XG4gIHB1YmxpYyBzZXF1ZW5jZUNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBzdGFydFBvc2l0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGVuZFBvc2l0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGZpeFdpZHRoOiBib29sZWFuO1xuICBwdWJsaWMgdmVydGljYWxBbGlnbm1lbnQ6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyBob3Jpem9udGFsQWxpZ25tZW50OiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZml0QXJlYTogYm9vbGVhbjtcbiAgcHVibGljIHNocmlua0VtcHR5VGFpbDogYm9vbGVhbjtcbiAgcHVibGljIHNraXBFbXB0eVBvc2l0aW9uczogYm9vbGVhbjtcblxuICBwcml2YXRlIHBvc2l0aW9uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBzdGFydFBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICBwcml2YXRlIGVuZFBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gIHByaXZhdGUgZ2V0IExlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgdmlld1N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudmlld2VySWQgPSBXZWJMb2dvLnZpZXdlckNvdW50O1xuICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcblxuICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG5cbiAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoID0gdGhpcy5mbG9hdCgncG9zaXRpb25XaWR0aCcsIDE2LyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICB0aGlzLm1pbkhlaWdodCA9IHRoaXMuZmxvYXQoJ21pbkhlaWdodCcsIDUwLyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWF4SGVpZ2h0JywgMTAwLyosXG4gICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuXG4gICAgdGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMgPSB0aGlzLmJvb2woJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcycsIGZhbHNlKTtcbiAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcblxuICAgIHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnc3RhcnRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcblxuICAgIHRoaXMuZml4V2lkdGggPSB0aGlzLmJvb2woJ2ZpeFdpZHRoJywgZmFsc2UpO1xuXG4gICAgdGhpcy52ZXJ0aWNhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCd2ZXJ0aWNhbEFsaWdubWVudCcsICdtaWRkbGUnLFxuICAgICAge2Nob2ljZXM6IFsndG9wJywgJ21pZGRsZScsICdib3R0b20nXX0pO1xuICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsXG4gICAgICB7Y2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddfSk7XG4gICAgdGhpcy5maXRBcmVhID0gdGhpcy5ib29sKCdmaXRBcmVhJywgdHJ1ZSk7XG4gICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICAgIHRoaXMuc2tpcEVtcHR5UG9zaXRpb25zID0gdGhpcy5ib29sKCdza2lwRW1wdHlQb3NpdGlvbnMnLCBmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYkxvZ28gc2Vjb25kIGluaXRpYWxpemF0aW9uIScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuaGVscFVybCA9ICcvaGVscC92aXN1YWxpemUvdmlld2Vycy93ZWItbG9nby5tZCc7XG5cbiAgICB0aGlzLm1zZ0hvc3QgPSB1aS5kaXYoJ05vIG1lc3NhZ2UnKTtcbiAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgIHRoaXMuY2FudmFzID0gdWkuY2FudmFzKCk7XG4gICAgdGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSAnMTAwJSc7XG5cbiAgICB0aGlzLmhvc3QgPSB1aS5kaXYoW3RoaXMubXNnSG9zdCwgdGhpcy5jYW52YXNdKTtcblxuICAgIC8vIHRoaXMuc2xpZGVyID0gdWkucmFuZ2VTbGlkZXIoMCwgMjAsIDIsIDUpO1xuICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTJweCc7XG5cbiAgICBjb25zdCBnZXRNb25vbWVyID0gKHA6IERHLlBvaW50KTogW251bWJlciwgc3RyaW5nIHwgbnVsbCwgUG9zaXRpb25Nb25vbWVySW5mbyB8IG51bGxdID0+IHtcbiAgICAgIGNvbnN0IGpQb3MgPSBNYXRoLmZsb29yKHAueCAvIHRoaXMuX3Bvc2l0aW9uV2lkdGgpO1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXTtcblxuICAgICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApXG4gICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG5cbiAgICAgIGNvbnN0IG1vbm9tZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IE9iamVjdC5rZXlzKHBvc2l0aW9uLmZyZXEpXG4gICAgICAgIC5maW5kKChtKSA9PiBwb3NpdGlvbi5mcmVxW21dLmJvdW5kcy5jb250YWlucyhwLngsIHAueSkpO1xuICAgICAgaWYgKG1vbm9tZXIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIFtqUG9zLCBudWxsLCBudWxsXTtcblxuICAgICAgcmV0dXJuIFtqUG9zLCBtb25vbWVyLCBwb3NpdGlvbi5mcmVxW21vbm9tZXJdXTtcbiAgICB9O1xuXG5cbiAgICAvLyB0aGlzLnN1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlb3ZlcicpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIC8vIH0pKTtcblxuICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlbW92ZScpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjb25zdCBhcmdzID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG5cbiAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sIS5nZXQoaVJvdyk7XG4gICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgIH0sIGFyZ3MueCArIDE2LCBhcmdzLnkgKyAxNik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aS50b29sdGlwLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgZS5idXR0b24gIT0gMClcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjb25zdCBhcmdzID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG5cbiAgICAgIC8vIHByZXZlbnRzIGRlc2VsZWN0IGFsbCByb3dzIGlmIHdlIG1pc3MgbW9ub21lciBib3VuZHNcbiAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5pbml0KChpUm93KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2whLmdldChpUm93KTtcbiAgICAgICAgICBjb25zdCBzZXFNID0gc2VxID8gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEoc2VxKVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuXG4gICAgdGhpcy52aWV3U3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG5cbiAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuaG9zdCk7XG4gICAgLy8gdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuc2xpZGVyLnJvb3QpO1xuXG4gICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3M6IGFueSkge1xuICAgIHRoaXMucmVuZGVyKHRydWUpO1xuXG4gICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblJvb3RTaXplQ2hhbmdlZCgpIGAgK1xuICAgIC8vICAgYHJvb3Qud2lkdGg9JHt0aGlzLnJvb3QuY2xpZW50V2lkdGh9LCByb290LmhlaWdodD0ke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9LCBgICtcbiAgICAvLyAgIGBjYW52YXMud2lkdGg9JHt0aGlzLmNhbnZhcy53aWR0aH0sIGNhbnZhcy5oZWlnaHQ9JHt0aGlzLmNhbnZhcy5oZWlnaHR9IC5gKTtcbiAgfVxuXG4gIC8qKiBBc3NpZ25zIHtAbGluayBzZXFDb2x9IGFuZCB7QGxpbmsgY3B9IGJhc2VkIG9uIHtAbGluayBzZXF1ZW5jZUNvbHVtbk5hbWV9IGFuZCBjYWxscyB7QGxpbmsgcmVuZGVyfSgpLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVTZXFDb2woKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YUZyYW1lKSB7XG4gICAgICB0aGlzLnNlcUNvbCA9IHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID8gdGhpcy5kYXRhRnJhbWUuY29sKHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lKSA6IG51bGw7XG4gICAgICBpZiAodGhpcy5zZXFDb2wgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNlcUNvbCA9IHRoaXMucGlja1VwU2VxQ29sKHRoaXMuZGF0YUZyYW1lKTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnNlcUNvbCA/IHRoaXMuc2VxQ29sLm5hbWUgOiBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VxQ29sKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgIHRoaXMuY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUodGhpcy5zZXFDb2wpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlcUNvbClcbiAgICAgIHJldHVybjtcblxuICAgIGxldCBjYXRlZ29yaWVzOiAoc3RyaW5nIHwgbnVsbCkgW107XG4gICAgaWYgKHRoaXMuc2hyaW5rRW1wdHlUYWlsKSB7XG4gICAgICBjb25zdCBpbmRpY2VzOiBJbnQzMkFycmF5ID0gdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgY2F0ZWdvcmllcyA9IEFycmF5LmZyb20obmV3IFNldChcbiAgICAgICAgQXJyYXkuZnJvbShBcnJheShpbmRpY2VzLmxlbmd0aCkua2V5cygpKS5tYXAoKGk6IG51bWJlcikgPT4gdGhpcy5zZXFDb2whLmdldChpbmRpY2VzW2ldKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcmllcyA9IHRoaXMuc2VxQ29sLmNhdGVnb3JpZXM7XG4gICAgfVxuICAgIGNvbnN0IG1heExlbmd0aCA9IGNhdGVnb3JpZXMubGVuZ3RoID4gMCA/IE1hdGgubWF4KC4uLmNhdGVnb3JpZXMubWFwKFxuICAgICAgKHMpID0+IHMgIT09IG51bGwgPyBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzKS5sZW5ndGggOiAwKSkgOiAwO1xuXG4gICAgLy8gR2V0IHBvc2l0aW9uIG5hbWVzIGZyb20gZGF0YSBjb2x1bW4gdGFnICdwb3NpdGlvbk5hbWVzJ1xuICAgIGNvbnN0IHBvc2l0aW9uTmFtZXNUeHQgPSB0aGlzLnNlcUNvbC5nZXRUYWcoJ3Bvc2l0aW9uTmFtZXMnKTtcbiAgICAvLyBGYWxsYmFjayBpZiAncG9zaXRpb25OYW1lcycgdGFnIGlzIG5vdCBwcm92aWRlZFxuICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IHBvc2l0aW9uTmFtZXNUeHQgPyBwb3NpdGlvbk5hbWVzVHh0LnNwbGl0KCcsICcpLm1hcCgobikgPT4gbi50cmltKCkpIDpcbiAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcblxuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9ICh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSA6IDA7XG4gICAgdGhpcy5lbmRQb3NpdGlvbiA9ICh0aGlzLmVuZFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLmVuZFBvc2l0aW9uTmFtZSkpID9cbiAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuZW5kUG9zaXRpb25OYW1lKSA6IChtYXhMZW5ndGggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eTogREcuUHJvcGVydHkpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUHJvcGVydHlDaGFuZ2VkKCAke3Byb3BlcnR5Lm5hbWV9ID0gJycgfSlgKTtcbiAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSk7XG5cbiAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICBjYXNlICdjb25zaWRlck51bGxTZXF1ZW5jZXMnOlxuICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWUnOlxuICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N0YXJ0UG9zaXRpb25OYW1lJzpcbiAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmRQb3NpdGlvbk5hbWUnOlxuICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3Bvc2l0aW9uV2lkdGgnOlxuICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWluSGVpZ2h0JzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWF4SGVpZ2h0JzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZml4V2lkdGgnOlxuICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd2ZXJ0aWNhbEFsaWdubWVudCc6XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2hvcml6b250YWxBbGlnbm1lbnQnOlxuICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmaXRBcmVhJzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc2hyaW5rRW1wdHlUYWlsJzpcbiAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgY29uc3QgZGF0YUZyYW1lVHh0OiBzdHJpbmcgPSB0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJztcbiAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgIHN1cGVyLm9uVGFibGVBdHRhY2hlZCgpO1xuXG4gICAgdGhpcy51cGRhdGVTZXFDb2woKTtcblxuICAgIGlmICh0aGlzLmRhdGFGcmFtZSAhPT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24ub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4gdGhpcy5yZW5kZXIoKSkpO1xuICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZGV0YWNoKCkge1xuICAgIGNvbnN0IGRhdGFGcmFtZVR4dCA9IGAke3RoaXMuZGF0YUZyYW1lID8gJ2RhdGEnIDogJ251bGwnfWA7XG4gICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICBzdXBlci5kZXRhY2goKTtcblxuICAgIHRoaXMudmlld1N1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5ob3N0IS5yZW1vdmUoKTtcbiAgICB0aGlzLmNhbnZhcyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1zZ0hvc3QgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5ob3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbnVsbFNlcXVlbmNlKGZpbGxlclJlc2lkdWUgPSAnWCcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcylcbiAgICAgIHJldHVybiBuZXcgQXJyYXkodGhpcy5MZW5ndGgpLmZpbGwoZmlsbGVyUmVzaWR1ZSkuam9pbignJyk7XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NhbGN1bGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSlcbiAgICAgIHJldHVybjtcblxuICAgIHRoaXMuY2FsY1NpemUoKTtcblxuICAgIHRoaXMucG9zaXRpb25zID0gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKTtcbiAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgIGNvbnN0IHBvc05hbWU6IHN0cmluZyA9IHRoaXMucG9zaXRpb25OYW1lc1t0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXTtcbiAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdID0gbmV3IFBvc2l0aW9uSW5mbyhwb3NOYW1lKTtcbiAgICB9XG5cbiAgICAvLyAyMDIyLTA1LTA1IGFza2Fsa2luIGluc3RydWN0ZWQgdG8gc2hvdyBXZWJMb2dvIGJhc2VkIG9uIGZpbHRlciAobm90IHNlbGVjdGlvbilcbiAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgIC8vIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5nZXRTZWxlY3RlZEluZGV4ZXMoKSA6XG4gICAgLy8gICB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG5cbiAgICB0aGlzLnJvd3NNYXNrZWQgPSBpbmRpY2VzLmxlbmd0aDtcbiAgICB0aGlzLnJvd3NOdWxsID0gMDtcblxuICAgIGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG4gICAgICBsZXQgczogc3RyaW5nID0gPHN0cmluZz4odGhpcy5zZXFDb2wuZ2V0KGkpKTtcblxuICAgICAgaWYgKCFzKSB7XG4gICAgICAgIHMgPSB0aGlzLl9udWxsU2VxdWVuY2UoKTtcbiAgICAgICAgKyt0aGlzLnJvd3NOdWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXFNOiBzdHJpbmdbXSA9IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHMpO1xuICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgIGNvbnN0IHBtSW5mbyA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgIGNvbnN0IG06IHN0cmluZyA9IHNlcU1bdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gfHwgJy0nO1xuICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgcG1JbmZvW21dID0gbmV3IFBvc2l0aW9uTW9ub21lckluZm8oKTtcbiAgICAgICAgcG1JbmZvW21dLmNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgLy8gZGVsZXRlIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbJy0nXTtcblxuICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgPSAwO1xuICAgICAgZm9yIChjb25zdCBtIGluIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpXG4gICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50ICs9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbbV0uY291bnQ7XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgY29uc3QgciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodCAqIHI7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5fY2FsY3VsYXRlKCkgbWF4SGVpZ2h0PSR7bWF4SGVpZ2h0fS5gKTtcblxuICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICBjb25zdCBmcmVxOiB7IFtjOiBzdHJpbmddOiBQb3NpdGlvbk1vbm9tZXJJbmZvIH0gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudDtcblxuICAgICAgbGV0IHk6IG51bWJlciA9IHRoaXMuYXhpc0hlaWdodDtcblxuICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGZyZXEpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGFbMF0gIT09ICctJyAmJiBiWzBdICE9PSAnLScpXG4gICAgICAgICAgcmV0dXJuIGJbMV0uY291bnQgLSBhWzFdLmNvdW50O1xuICAgICAgICBlbHNlIGlmIChhWzBdID09PSAnLScgJiYgYlswXSA9PT0gJy0nKVxuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChhWzBdID09PSAnLScpXG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIC8qIChiWzBdID09PSAnLScpICovXG4gICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgY29uc3QgcG1JbmZvOiBQb3NpdGlvbk1vbm9tZXJJbmZvID0gZW50cnlbMV07XG4gICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICBjb25zdCBoOiBudW1iZXIgPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcblxuICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIHksIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIGgpO1xuICAgICAgICB5ICs9IGg7XG4gICAgICB9XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuICB9XG5cbiAgLy8gcmVmbGVjdCBjaGFuZ2VzIG1hZGUgdG8gZmlsdGVyL3NlbGVjdGlvblxuICByZW5kZXIocmVjYWxjID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLm1zZ0hvc3QpIHtcbiAgICAgIGlmICh0aGlzLnNlcUNvbCAmJiAhdGhpcy5jcCkge1xuICAgICAgICB0aGlzLm1zZ0hvc3QhLmlubmVyVGV4dCA9IGBVbmtub3duIHBhbGV0dGUgKGNvbHVtbiBzZW1UeXBlOiAnJHt0aGlzLnNlcUNvbC5zZW1UeXBlfScpLmA7XG4gICAgICAgIHRoaXMubXNnSG9zdCEuc3R5bGUuZGlzcGxheSA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tc2dIb3N0IS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCAhdGhpcy5jcClcbiAgICAgIHJldHVybjtcblxuICAgIGNvbnN0IGcgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmICghZykgcmV0dXJuO1xuXG4gICAgaWYgKHJlY2FsYylcbiAgICAgIHRoaXMuX2NhbGN1bGF0ZSgpO1xuXG4gICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICBnLmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgIGcudGV4dEJhc2VsaW5lID0gdGhpcy50ZXh0QmFzZWxpbmU7XG5cbiAgICAvLyBQcmV2ZW50cyBkaXZpc2lvbiBieSB6ZXJvIG9uIExlbmd0aCA9IDBcbiAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uID09PSAtMSB8fCB0aGlzLmVuZFBvc2l0aW9uID09PSAtMSlcbiAgICAgIHJldHVybjtcblxuICAgIC8vI3JlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcbiAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgIGcudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgZy5mb250ID0gJzEwcHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgIGNvbnN0IGhTY2FsZSA9IHBvc05hbWVNYXhXaWR0aCA8ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgPyAxIDogKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSAvIHBvc05hbWVNYXhXaWR0aDtcblxuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgY29uc3QgcG9zOiBQb3NpdGlvbkluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXTtcbiAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgIGcuc2V0VHJhbnNmb3JtKFxuICAgICAgICBoU2NhbGUsIDAsIDAsIDEsXG4gICAgICAgIGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoICsgdGhpcy5fcG9zaXRpb25XaWR0aCAvIDIsIDApO1xuICAgICAgZy5maWxsVGV4dChwb3MubmFtZSwgMCwgMCk7XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcblxuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgZm9yIChjb25zdCBbbW9ub21lciwgcG1JbmZvXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxKSkge1xuICAgICAgICBpZiAobW9ub21lciAhPT0gJy0nKSB7XG4gICAgICAgICAgY29uc3QgYiA9IHBtSW5mby5ib3VuZHM7XG5cbiAgICAgICAgICBjb25zdCBmb250U3R5bGUgPSAnMTZweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgICAgLy8gSGFja3MgdG8gc2NhbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgdG8gdGFyZ2V0IHJlY3RhbmdsZVxuICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckFzY2VudCA9IDAuMjU7XG4gICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVySGVpZ2h0ID0gMTIuMjtcblxuICAgICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ2xpZ2h0Z3JheSc7XG4gICAgICAgICAgZy5saW5lV2lkdGggPSAxO1xuICAgICAgICAgIGcucmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgZy5maWxsU3R5bGUgPSB0aGlzLmNwLmdldChtb25vbWVyKSA/PyB0aGlzLmNwLmdldCgnb3RoZXInKTtcbiAgICAgICAgICBnLnRleHRBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgLy9nLmZpbGxSZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICBjb25zdCBtVG06IFRleHRNZXRyaWNzID0gZy5tZWFzdXJlVGV4dChtb25vbWVyKTtcblxuICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgIC8vICAgY29uc29sZS5kZWJ1ZyhgbTogJHttfSwgbU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQ6ICR7bU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnR9YCk7XG5cbiAgICAgICAgICBnLnNldFRyYW5zZm9ybShcbiAgICAgICAgICAgIGIud2lkdGggLyBtVG0ud2lkdGgsIDAsIDAsIGIuaGVpZ2h0IC8gdXBwZXJjYXNlTGV0dGVySGVpZ2h0LFxuICAgICAgICAgICAgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgZy5maWxsVGV4dChtb25vbWVyLCAwLCAtdXBwZXJjYXNlTGV0dGVyQXNjZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2FsY1NpemUoKSB7XG4gICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0KVxuICAgICAgcmV0dXJuO1xuXG4gICAgbGV0IHdpZHRoOiBudW1iZXIgPSB0aGlzLkxlbmd0aCAqIHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0KSk7XG5cbiAgICBpZiAodGhpcy5maXRBcmVhKSB7XG4gICAgICBjb25zdCB4U2NhbGU6IG51bWJlciA9IHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICBjb25zdCB5U2NhbGU6IG51bWJlciA9IHRoaXMucm9vdC5jbGllbnRXaWR0aCAvIHdpZHRoO1xuICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1heCgxLCBNYXRoLm1pbih4U2NhbGUsIHlTY2FsZSkpO1xuICAgICAgd2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuICAgICAgaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICB0aGlzLl9wb3NpdGlvbldpZHRoID0gdGhpcy5wb3NpdGlvbldpZHRoICogc2NhbGU7XG4gICAgfVxuXG4gICAgY29uc3QgciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGggKiByO1xuICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuXG4gICAgLy8gY29uc3QgY2FudmFzSGVpZ2h0OiBudW1iZXIgPSB3aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCA/IGhlaWdodCAtIDggOiBoZWlnaHQ7XG4gICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICogcjtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7Y2FudmFzSGVpZ2h0fXB4YCk7XG5cbiAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgIGlmICh0aGlzLmZpeFdpZHRoKSB7XG4gICAgICAvLyBmdWxsIHdpZHRoIGZvciBjYW52YXMgaG9zdCBhbmQgcm9vdFxuICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gdGhpcy5ob3N0LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgdGhpcy5yb290LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYWxsb3cgc2Nyb2xsIGNhbnZhcyBpbiByb290XG4gICAgICB0aGlzLnJvb3Quc3R5bGUud2lkdGggPSB0aGlzLmhvc3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICB0aGlzLmhvc3Quc3R5bGUub3ZlcmZsb3dYID0gJ2F1dG8haW1wb3J0YW50JztcbiAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCBudWxsKTtcblxuICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCd0ZXh0LWFsaWduJywgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KTtcblxuICAgICAgLy8gdmVydGljYWwgYWxpZ25tZW50XG4gICAgICBsZXQgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICBzd2l0Y2ggKHRoaXMudmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCkgLyAyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgdGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYCR7aG9zdFRvcE1hcmdpbn1weGAsICdpbXBvcnRhbnQnKTtcblxuICAgICAgaWYgKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fXB4YCk7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmRlYnVnKFxuICAgIC8vICAgYHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSAke3RoaXMucm9vdC5zdHlsZS5oZWlnaHR9XFxuYCArXG4gICAgLy8gICBgdGhpcy5yb290LmNsaWVudEhlaWdodCA9ICR7dGhpcy5yb290LmNsaWVudEhlaWdodH1cXG5gICtcbiAgICAvLyAgIGB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgIC8vICAgYHRoaXMuaG9zdC5jbGllbnRIZWlnaHQgPSAke3RoaXMuaG9zdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgLy8gICAnXFxuJyArXG4gICAgLy8gICBgdGhpcy5jYW52YXMuaGVpZ2h0ICAgICAgID0gJHt0aGlzLmNhbnZhcy5oZWlnaHR9XFxuYCArXG4gICAgLy8gICBgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHR9YCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbCBDb2x1bW4gdG8gbG9vayBmb3IgYSBwYWxldHRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICAgKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwaWNrVXBQYWxldHRlKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciA9IDUpOiBTZXFQYWxldHRlIHtcbiAgICBsZXQgcmVzOiBTZXFQYWxldHRlIHwgbnVsbCA9IG51bGw7XG4gICAgc3dpdGNoIChzZXFDb2wuc2VtVHlwZSkge1xuICAgIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICByZXMgPSBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgcmVzID0gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3Qgc3RhdHM6IFNlcUNvbFN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzOiBbU2V0PHN0cmluZz4sIFNlcVBhbGV0dGVdW10gPSBbXG4gICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpLCBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbV0sXG4gICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgICBdO1xuICAgIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbTogbnVtYmVyW10gPSBhbHBoYWJldENhbmRpZGF0ZXNcbiAgICAgIC5tYXAoKGMpID0+IFdlYkxvZ28uZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMF0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGlmIChtYXhDb3MgPiAwLjY1KVxuICAgICAgcmVzID0gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzFdO1xuICAgIGVsc2VcbiAgICAgIHJlcyA9IFVua25vd25TZXFQYWxldHRlcy5Db2xvcjtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkxlbmd0aFxuICAgKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAgICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gICAqL1xuICBzdGF0aWMgZ2V0U3RhdHMoc2VxQ29sOiBERy5Db2x1bW4sIG1pbkxlbmd0aDogbnVtYmVyLCBzcGxpdHRlcjogU3BsaXR0ZXJGdW5jKTogU2VxQ29sU3RhdHMge1xuICAgIGNvbnN0IGZyZXE6IHsgW206IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICAgIGxldCBmaXJzdExlbmd0aCA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICAgIGlmIChmaXJzdExlbmd0aCA9PSBudWxsKVxuICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgICBzYW1lTGVuZ3RoID0gZmFsc2U7XG5cbiAgICAgIGlmIChtU2VxLmxlbmd0aCA+IG1pbkxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICAgIGlmICghKG0gaW4gZnJlcSkpXG4gICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtmcmVxOiBmcmVxLCBzYW1lTGVuZ3RoOiBzYW1lTGVuZ3RofTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXE6IE1vbm9tZXJGcmVxcywgYWxwaGFiZXQ6IFNldDxzdHJpbmc+LCBnYXBTeW1ib2w6IHN0cmluZyA9ICctJyk6IG51bWJlciB7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAga2V5cy5kZWxldGUoZ2FwU3ltYm9sKTtcblxuICAgIGNvbnN0IGZyZXFBOiBudW1iZXJbXSA9IFtdO1xuICAgIGNvbnN0IGFscGhhYmV0QTogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG0gb2Yga2V5cykge1xuICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgfVxuICAgIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICAgIGNvbnN0IGZyZXFWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICBjb25zdCBhbHBoYWJldFY6IFZlY3RvciA9IG5ldyBWZWN0b3IoYWxwaGFiZXRBKTtcbiAgICBjb25zdCBjb3M6IG51bWJlciA9IHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbiAgICByZXR1cm4gY29zO1xuICB9XG5cbiAgLyoqIEZpcnN0IHRyeSB0byBmaW5kIGNvbHVtbiB3aXRoIHNlbVR5cGUgJ2FsaWduZWRTZXF1ZW5jZScuXG4gICAqIE5leHQgbG9vayBmb3IgY29sdW1uIHdpdGggZGF0YSBhbHBoYWJldCBjb3JyZXNwb25kaW5nIHRvIGFueSBvZiB0aGUga25vd24gcGFsZXR0ZXMuXG4gICAqIEBwYXJhbSB7REcuRGF0YUZyYW1lfSBkYXRhRnJhbWVcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSBUaGUgY29sdW1uIHdlIHdlcmUgbG9va2luZyBmb3Igb3IgbnVsbFxuICAgKi9cbiAgcHJpdmF0ZSBwaWNrVXBTZXFDb2woZGF0YUZyYW1lOiBERy5EYXRhRnJhbWUpOiBERy5Db2x1bW4gfCBudWxsIHtcbiAgICBsZXQgcmVzOiBERy5Db2x1bW4gfCBudWxsID0gZGF0YUZyYW1lLmNvbHVtbnMuYnlTZW1UeXBlKCdhbGlnbmVkU2VxdWVuY2UnKTtcbiAgICBpZiAocmVzID09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFGcmFtZS5jb2x1bW5zKSB7XG4gICAgICAgIGNvbnN0IGNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKGNvbCBhcyBERy5Db2x1bW4sIDUpO1xuICAgICAgICBpZiAoY3AgIT09IG51bGwgJiYgIShjcCBpbnN0YW5jZW9mIFVua25vd25TZXFQYWxldHRlKSkge1xuICAgICAgICAgIHJlcyA9IGNvbDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbW9ub21lclJlID0gL1xcWyhcXHcrKVxcXXwoXFx3KXwoLSkvZztcblxuICAvKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICAgKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBhcnJheSBvZiBtb25vbWVyc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzcGxpdHRlckFzRmFzdGEoc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcmVzOiBzdHJpbmdbXSA9IHd1PFJlZ0V4cE1hdGNoQXJyYXk+KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKFdlYkxvZ28ubW9ub21lclJlKSlcbiAgICAgIC5tYXAoKG1hOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICAgIGxldCBtUmVzOiBzdHJpbmc7XG4gICAgICAgIGNvbnN0IG06IHN0cmluZyA9IG1hWzBdO1xuICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgaWYgKG0gaW4gV2ViTG9nby5hYVN5bm9ueW1zKSB7XG4gICAgICAgICAgICBtUmVzID0gV2ViTG9nby5hYVN5bm9ueW1zW21dO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtUmVzID0gJyc7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb25nIG1vbm9tZXIgJyR7bX0nIGhhcyBub3QgYSBzaG9ydCBzeW5vbnltLmApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtUmVzID0gbTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbVJlcztcbiAgICAgIH0pLnRvQXJyYXkoKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAgICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yOiBzdHJpbmcpOiBTcGxpdHRlckZ1bmMge1xuICAgIHJldHVybiAoc2VxOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BsaXR0ZXIodW5pdHM6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcpOiBTcGxpdHRlckZ1bmMge1xuICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2Zhc3RhJykpXG4gICAgICByZXR1cm4gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSlcbiAgICAgIHJldHVybiBXZWJMb2dvLmdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpO1xuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1bml0cyAke3VuaXRzfSAuYCk7XG5cbiAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxuICB9XG5cbiAgLyoqIE9ubHkgc29tZSBvZiB0aGUgc3lub255bXMuIFRoZXNlIHdlcmUgb2J0YWluZWQgZnJvbSB0aGUgY2x1c3RlcmVkIG9saWdvcGVwdGlkZSBkYXRhc2V0LiAqL1xuICBwcml2YXRlIHN0YXRpYyBhYVN5bm9ueW1zOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAnW01lTmxlXSc6ICdMJywgLy8gTmxlIC0gbm9ybGV1Y2luZVxuICAgICdbTWVBXSc6ICdBJyxcbiAgICAnW01lR10nOiAnRycsXG4gICAgJ1tNZUZdJzogJ0YnLFxuICB9O1xufVxuIl19
1758
1759
 
1759
1760
  /***/ }),
1760
1761
 
@@ -10315,4 +10316,4 @@ function convertPanel(col) {
10315
10316
  bio = __webpack_exports__;
10316
10317
  /******/ })()
10317
10318
  ;
10318
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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Q04sSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLGVBQWU7QUFDdkY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEVBQTBFLGVBQWU7QUFDekY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsS0FBSyxFQUFFLEVBR1Y7O0FBRVY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyRkFBMkYsZUFBZTtBQUMxRztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLDJFQUEyRSxlQUFlO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBLCtGQUErRixlQUFlO0FBQzlHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkRBQTZELHNFQUFzRTtBQUNuSTs7QUFFQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQSxxRUFBcUU7O0FBRXJFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxtQkFBbUI7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVB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QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLHVEQUFhO0FBQ2hDO0FBQ0EsdURBQXVELGtFQUF3QjtBQUMvRTtBQUNBLHFDQUFxQyx1REFBYTtBQUNsRDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBEQUFnQjtBQUM1QjtBQUNBO0FBQ0Esa0NBQWtDLDhCQUE4QjtBQUNoRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrREFBcUI7QUFDdEQsd0JBQXdCLCtEQUFxQjtBQUM3QztBQUNBLGtCQUFrQiwwRkFBZ0IsaUJBQWlCLGlHQUF1QjtBQUMxRTtBQUNBO0FBQ0EsbUNBQW1DLHNGQUFpQjtBQUNwRCxtQ0FBbUMsb0ZBQWdCO0FBQ25EO0FBQ0E7QUFDQSxnRUFBZ0UsdUdBQTZCO0FBQzdGO0FBQ0E7QUFDQSwwQkFBMEIsa0VBQXdCO0FBQ2xELDJCQUEyQixRQUFRLEdBQUcsU0FBUztBQUMvQyx1QkFBdUIsdURBQWE7QUFDcEMsWUFBWSxrRUFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDZDtBQUNQLElBQUksdURBQU87QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AYmlvd2FzbS9haW9saS9kaXN0L2Fpb2xpLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxLXBhbGV0dGVzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvc2VxdWVuY2UtZW5jb2Rlci5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3Vua25vd24uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92ZC1yZWdpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nby5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc2VxdWVuY2Utc3BhY2UuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20uanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9mYXN0ZXN0LWxldmVuc2h0ZWluL2luZGV4LmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9qYXJvLXdpbmtsZXItdHlwZXNjcmlwdC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3NlcV9hbGlnbi50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvYXRvbWljLXdvcmtzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnZlcnQudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL211bHRpcGxlLXNlcXVlbmNlLWFsaWdubWVudC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9zZXF1ZW5jZS1hY3Rpdml0eS1jbGlmZnMudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLXNwYWNlLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy91dGlscy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlci50cyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvd3UvZGlzdC93dS5qcyIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiREdcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiT0NMXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcImdyb2tcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwicnhqc1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJ1aVwiIiwid2VicGFjazovL2Jpby93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2pzb25wIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGdsb2JhbC5BaW9saSA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICB2YXIgbmFtZSA9IFwiQGJpb3dhc20vYWlvbGlcIjtcbiAgdmFyIHZlcnNpb24gPSBcIjIuNC4wLXJjMlwiO1xuICB2YXIgZGVzY3JpcHRpb24gPSBcIkEgZnJhbWV3b3JrIGZvciBidWlsZGluZyBXZWJBc3NlbWJseS1iYXNlZCBnZW5vbWljcyB0b29sc1wiO1xuICB2YXIgYnJvd3NlciA9IFwiZGlzdC9haW9saS5qc1wiO1xuICB2YXIgd29ya2VyID0gXCJkaXN0L2Fpb2xpLndvcmtlci5qc1wiO1xuICB2YXIgbWFpbiA9IFwiYWlvbGkuanNcIjtcbiAgdmFyIHJlcG9zaXRvcnkgPSB7XG4gIFx0dHlwZTogXCJnaXRcIixcbiAgXHR1cmw6IFwiZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9iaW93YXNtL2Fpb2xpLmdpdFwiXG4gIH07XG4gIHZhciBhdXRob3IgPSBcIlJvYmVydCBBYm91a2hhbGlsXCI7XG4gIHZhciBsaWNlbnNlID0gXCJNSVRcIjtcbiAgdmFyIGRlcGVuZGVuY2llcyA9IHtcbiAgXHRjb21saW5rOiBcIl40LjMuMVwiLFxuICBcdFwid2FzbS1mZWF0dXJlLWRldGVjdFwiOiBcIl4xLjIuMTFcIlxuICB9O1xuICB2YXIgZGV2RGVwZW5kZW5jaWVzID0ge1xuICBcdFwiQHJvbGx1cC9wbHVnaW4tY29tbW9uanNcIjogXCJeMTEuMC4xXCIsXG4gIFx0XCJAcm9sbHVwL3BsdWdpbi1qc29uXCI6IFwiXjQuMS4wXCIsXG4gIFx0XCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIjogXCJeNy4wLjBcIixcbiAgXHRjeXByZXNzOiBcIl44LjAuMFwiLFxuICBcdHJvbGx1cDogXCJeMS4yOS4wXCIsXG4gIFx0XCJyb2xsdXAtcGx1Z2luLXRlcnNlclwiOiBcIl43LjAuMlwiXG4gIH07XG4gIHZhciBzY3JpcHRzID0ge1xuICBcdGJ1aWxkOiBcInJvbGx1cCAtY1wiLFxuICBcdGRldjogXCJyb2xsdXAgLWMgLXdcIixcbiAgXHR0ZXN0OiBcImN5cHJlc3MgcnVuXCIsXG4gIFx0XCJ0ZXN0LW9wZW5cIjogXCJjeXByZXNzIG9wZW5cIlxuICB9O1xuICB2YXIgZmlsZXMgPSBbXG4gIFx0XCJkaXN0XCJcbiAgXTtcbiAgdmFyIHBrZyA9IHtcbiAgXHRuYW1lOiBuYW1lLFxuICBcdHZlcnNpb246IHZlcnNpb24sXG4gIFx0ZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICBcdGJyb3dzZXI6IGJyb3dzZXIsXG4gIFx0d29ya2VyOiB3b3JrZXIsXG4gIFx0bWFpbjogbWFpbixcbiAgXHRyZXBvc2l0b3J5OiByZXBvc2l0b3J5LFxuICBcdGF1dGhvcjogYXV0aG9yLFxuICBcdGxpY2Vuc2U6IGxpY2Vuc2UsXG4gIFx0ZGVwZW5kZW5jaWVzOiBkZXBlbmRlbmNpZXMsXG4gIFx0ZGV2RGVwZW5kZW5jaWVzOiBkZXZEZXBlbmRlbmNpZXMsXG4gIFx0c2NyaXB0czogc2NyaXB0cyxcbiAgXHRmaWxlczogZmlsZXNcbiAgfTtcblxuICAvKipcclxuICAgKiBDb3B5cmlnaHQgMjAxOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICAgKi9cclxuICBjb25zdCBwcm94eU1hcmtlciA9IFN5bWJvbChcIkNvbWxpbmsucHJveHlcIik7XHJcbiAgY29uc3QgY3JlYXRlRW5kcG9pbnQgPSBTeW1ib2woXCJDb21saW5rLmVuZHBvaW50XCIpO1xyXG4gIGNvbnN0IHJlbGVhc2VQcm94eSA9IFN5bWJvbChcIkNvbWxpbmsucmVsZWFzZVByb3h5XCIpO1xyXG4gIGNvbnN0IHRocm93TWFya2VyID0gU3ltYm9sKFwiQ29tbGluay50aHJvd25cIik7XHJcbiAgY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiAodHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIiAmJiB2YWwgIT09IG51bGwpIHx8IHR5cGVvZiB2YWwgPT09IFwiZnVuY3Rpb25cIjtcclxuICAvKipcclxuICAgKiBJbnRlcm5hbCB0cmFuc2ZlciBoYW5kbGUgdG8gaGFuZGxlIG9iamVjdHMgbWFya2VkIHRvIHByb3h5LlxyXG4gICAqL1xyXG4gIGNvbnN0IHByb3h5VHJhbnNmZXJIYW5kbGVyID0ge1xyXG4gICAgICBjYW5IYW5kbGU6ICh2YWwpID0+IGlzT2JqZWN0KHZhbCkgJiYgdmFsW3Byb3h5TWFya2VyXSxcclxuICAgICAgc2VyaWFsaXplKG9iaikge1xyXG4gICAgICAgICAgY29uc3QgeyBwb3J0MSwgcG9ydDIgfSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xyXG4gICAgICAgICAgZXhwb3NlKG9iaiwgcG9ydDEpO1xyXG4gICAgICAgICAgcmV0dXJuIFtwb3J0MiwgW3BvcnQyXV07XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlc2VyaWFsaXplKHBvcnQpIHtcclxuICAgICAgICAgIHBvcnQuc3RhcnQoKTtcclxuICAgICAgICAgIHJldHVybiB3cmFwKHBvcnQpO1xyXG4gICAgICB9LFxyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgdHJhbnNmZXIgaGFuZGxlciB0byBoYW5kbGUgdGhyb3duIGV4Y2VwdGlvbnMuXHJcbiAgICovXHJcbiAgY29uc3QgdGhyb3dUcmFuc2ZlckhhbmRsZXIgPSB7XHJcbiAgICAgIGNhbkhhbmRsZTogKHZhbHVlKSA9PiBpc09iamVjdCh2YWx1ZSkgJiYgdGhyb3dNYXJrZXIgaW4gdmFsdWUsXHJcbiAgICAgIHNlcmlhbGl6ZSh7IHZhbHVlIH0pIHtcclxuICAgICAgICAgIGxldCBzZXJpYWxpemVkO1xyXG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgICBzZXJpYWxpemVkID0ge1xyXG4gICAgICAgICAgICAgICAgICBpc0Vycm9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdmFsdWUubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHZhbHVlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdGFjazogdmFsdWUuc3RhY2ssXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSB7IGlzRXJyb3I6IGZhbHNlLCB2YWx1ZSB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIFtzZXJpYWxpemVkLCBbXV07XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlc2VyaWFsaXplKHNlcmlhbGl6ZWQpIHtcclxuICAgICAgICAgIGlmIChzZXJpYWxpemVkLmlzRXJyb3IpIHtcclxuICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihzZXJpYWxpemVkLnZhbHVlLm1lc3NhZ2UpLCBzZXJpYWxpemVkLnZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRocm93IHNlcmlhbGl6ZWQudmFsdWU7XHJcbiAgICAgIH0sXHJcbiAgfTtcclxuICAvKipcclxuICAgKiBBbGxvd3MgY3VzdG9taXppbmcgdGhlIHNlcmlhbGl6YXRpb24gb2YgY2VydGFpbiB2YWx1ZXMuXHJcbiAgICovXHJcbiAgY29uc3QgdHJhbnNmZXJIYW5kbGVycyA9IG5ldyBNYXAoW1xyXG4gICAgICBbXCJwcm94eVwiLCBwcm94eVRyYW5zZmVySGFuZGxlcl0sXHJcbiAgICAgIFtcInRocm93XCIsIHRocm93VHJhbnNmZXJIYW5kbGVyXSxcclxuICBdKTtcclxuICBmdW5jdGlvbiBleHBvc2Uob2JqLCBlcCA9IHNlbGYpIHtcclxuICAgICAgZXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgZnVuY3Rpb24gY2FsbGJhY2soZXYpIHtcclxuICAgICAgICAgIGlmICghZXYgfHwgIWV2LmRhdGEpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCB7IGlkLCB0eXBlLCBwYXRoIH0gPSBPYmplY3QuYXNzaWduKHsgcGF0aDogW10gfSwgZXYuZGF0YSk7XHJcbiAgICAgICAgICBjb25zdCBhcmd1bWVudExpc3QgPSAoZXYuZGF0YS5hcmd1bWVudExpc3QgfHwgW10pLm1hcChmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIGxldCByZXR1cm5WYWx1ZTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gcGF0aC5zbGljZSgwLCAtMSkucmVkdWNlKChvYmosIHByb3ApID0+IG9ialtwcm9wXSwgb2JqKTtcclxuICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHBhdGgucmVkdWNlKChvYmosIHByb3ApID0+IG9ialtwcm9wXSwgb2JqKTtcclxuICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkdFVFwiIC8qIEdFVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJhd1ZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJTRVRcIiAvKiBTRVQgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50W3BhdGguc2xpY2UoLTEpWzBdXSA9IGZyb21XaXJlVmFsdWUoZXYuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJBUFBMWVwiIC8qIEFQUExZICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmF3VmFsdWUuYXBwbHkocGFyZW50LCBhcmd1bWVudExpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJDT05TVFJVQ1RcIiAvKiBDT05TVFJVQ1QgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXcgcmF3VmFsdWUoLi4uYXJndW1lbnRMaXN0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHByb3h5KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiRU5EUE9JTlRcIiAvKiBFTkRQT0lOVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBvcnQxLCBwb3J0MiB9ID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3NlKG9iaiwgcG9ydDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdHJhbnNmZXIocG9ydDEsIFtwb3J0MV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVyblZhbHVlID0geyB2YWx1ZSwgW3Rocm93TWFya2VyXTogMCB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJldHVyblZhbHVlKVxyXG4gICAgICAgICAgICAgIC5jYXRjaCgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgW3Rocm93TWFya2VyXTogMCB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAudGhlbigocmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBbd2lyZVZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IHRvV2lyZVZhbHVlKHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICBlcC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHdpcmVWYWx1ZSksIHsgaWQgfSksIHRyYW5zZmVyYWJsZXMpO1xyXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSBcIlJFTEVBU0VcIiAvKiBSRUxFQVNFICovKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGRldGFjaCBhbmQgZGVhY3RpdmUgYWZ0ZXIgc2VuZGluZyByZWxlYXNlIHJlc3BvbnNlIGFib3ZlLlxyXG4gICAgICAgICAgICAgICAgICBlcC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICAgIGNsb3NlRW5kUG9pbnQoZXApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGVwLnN0YXJ0KSB7XHJcbiAgICAgICAgICBlcC5zdGFydCgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGlzTWVzc2FnZVBvcnQoZW5kcG9pbnQpIHtcclxuICAgICAgcmV0dXJuIGVuZHBvaW50LmNvbnN0cnVjdG9yLm5hbWUgPT09IFwiTWVzc2FnZVBvcnRcIjtcclxuICB9XHJcbiAgZnVuY3Rpb24gY2xvc2VFbmRQb2ludChlbmRwb2ludCkge1xyXG4gICAgICBpZiAoaXNNZXNzYWdlUG9ydChlbmRwb2ludCkpXHJcbiAgICAgICAgICBlbmRwb2ludC5jbG9zZSgpO1xyXG4gIH1cclxuICBmdW5jdGlvbiB3cmFwKGVwLCB0YXJnZXQpIHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBbXSwgdGFyZ2V0KTtcclxuICB9XHJcbiAgZnVuY3Rpb24gdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNSZWxlYXNlZCkge1xyXG4gICAgICBpZiAoaXNSZWxlYXNlZCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlXCIpO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGNyZWF0ZVByb3h5KGVwLCBwYXRoID0gW10sIHRhcmdldCA9IGZ1bmN0aW9uICgpIHsgfSkge1xyXG4gICAgICBsZXQgaXNQcm94eVJlbGVhc2VkID0gZmFsc2U7XHJcbiAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwge1xyXG4gICAgICAgICAgZ2V0KF90YXJnZXQsIHByb3ApIHtcclxuICAgICAgICAgICAgICB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1Byb3h5UmVsZWFzZWQpO1xyXG4gICAgICAgICAgICAgIGlmIChwcm9wID09PSByZWxlYXNlUHJveHkpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJSRUxFQVNFXCIgLyogUkVMRUFTRSAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlRW5kUG9pbnQoZXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJveHlSZWxlYXNlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHByb3AgPT09IFwidGhlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdGhlbjogKCkgPT4gcHJveHkgfTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBjb25zdCByID0gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJHRVRcIiAvKiBHRVQgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgfSkudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHIudGhlbi5iaW5kKHIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUHJveHkoZXAsIFsuLi5wYXRoLCBwcm9wXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2V0KF90YXJnZXQsIHByb3AsIHJhd1ZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhyb3dJZlByb3h5UmVsZWFzZWQoaXNQcm94eVJlbGVhc2VkKTtcclxuICAgICAgICAgICAgICAvLyBGSVhNRTogRVM2IFByb3h5IEhhbmRsZXIgYHNldGAgbWV0aG9kcyBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIGFcclxuICAgICAgICAgICAgICAvLyBib29sZWFuLiBUbyBzaG93IGdvb2Qgd2lsbCwgd2UgcmV0dXJuIHRydWUgYXN5bmNocm9ub3VzbHkgwq9cXF8o44OEKV8vwq9cclxuICAgICAgICAgICAgICBjb25zdCBbdmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gdG9XaXJlVmFsdWUocmF3VmFsdWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU0VUXCIgLyogU0VUICovLFxyXG4gICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGF0aCwgcHJvcF0ubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGFwcGx5KF90YXJnZXQsIF90aGlzQXJnLCByYXdBcmd1bWVudExpc3QpIHtcclxuICAgICAgICAgICAgICB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1Byb3h5UmVsZWFzZWQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgaWYgKGxhc3QgPT09IGNyZWF0ZUVuZHBvaW50KSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkVORFBPSU5UXCIgLyogRU5EUE9JTlQgKi8sXHJcbiAgICAgICAgICAgICAgICAgIH0pLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIFdlIGp1c3QgcHJldGVuZCB0aGF0IGBiaW5kKClgIGRpZG7igJl0IGhhcHBlbi5cclxuICAgICAgICAgICAgICBpZiAobGFzdCA9PT0gXCJiaW5kXCIpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb3h5KGVwLCBwYXRoLnNsaWNlKDAsIC0xKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IFthcmd1bWVudExpc3QsIHRyYW5zZmVyYWJsZXNdID0gcHJvY2Vzc0FyZ3VtZW50cyhyYXdBcmd1bWVudExpc3QpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiQVBQTFlcIiAvKiBBUFBMWSAqLyxcclxuICAgICAgICAgICAgICAgICAgcGF0aDogcGF0aC5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdCxcclxuICAgICAgICAgICAgICB9LCB0cmFuc2ZlcmFibGVzKS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNvbnN0cnVjdChfdGFyZ2V0LCByYXdBcmd1bWVudExpc3QpIHtcclxuICAgICAgICAgICAgICB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1Byb3h5UmVsZWFzZWQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IFthcmd1bWVudExpc3QsIHRyYW5zZmVyYWJsZXNdID0gcHJvY2Vzc0FyZ3VtZW50cyhyYXdBcmd1bWVudExpc3QpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFwiQ09OU1RSVUNUXCIgLyogQ09OU1RSVUNUICovLFxyXG4gICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LFxyXG4gICAgICAgICAgICAgIH0sIHRyYW5zZmVyYWJsZXMpLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHByb3h5O1xyXG4gIH1cclxuICBmdW5jdGlvbiBteUZsYXQoYXJyKSB7XHJcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBhcnIpO1xyXG4gIH1cclxuICBmdW5jdGlvbiBwcm9jZXNzQXJndW1lbnRzKGFyZ3VtZW50TGlzdCkge1xyXG4gICAgICBjb25zdCBwcm9jZXNzZWQgPSBhcmd1bWVudExpc3QubWFwKHRvV2lyZVZhbHVlKTtcclxuICAgICAgcmV0dXJuIFtwcm9jZXNzZWQubWFwKCh2KSA9PiB2WzBdKSwgbXlGbGF0KHByb2Nlc3NlZC5tYXAoKHYpID0+IHZbMV0pKV07XHJcbiAgfVxyXG4gIGNvbnN0IHRyYW5zZmVyQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xyXG4gIGZ1bmN0aW9uIHRyYW5zZmVyKG9iaiwgdHJhbnNmZXJzKSB7XHJcbiAgICAgIHRyYW5zZmVyQ2FjaGUuc2V0KG9iaiwgdHJhbnNmZXJzKTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgZnVuY3Rpb24gcHJveHkob2JqKSB7XHJcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9iaiwgeyBbcHJveHlNYXJrZXJdOiB0cnVlIH0pO1xyXG4gIH1cclxuICBmdW5jdGlvbiB0b1dpcmVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICBmb3IgKGNvbnN0IFtuYW1lLCBoYW5kbGVyXSBvZiB0cmFuc2ZlckhhbmRsZXJzKSB7XHJcbiAgICAgICAgICBpZiAoaGFuZGxlci5jYW5IYW5kbGUodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW3NlcmlhbGl6ZWRWYWx1ZSwgdHJhbnNmZXJhYmxlc10gPSBoYW5kbGVyLnNlcmlhbGl6ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJIQU5ETEVSXCIgLyogSEFORExFUiAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VyaWFsaXplZFZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc2ZlcmFibGVzLFxyXG4gICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBcIlJBV1wiIC8qIFJBVyAqLyxcclxuICAgICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0cmFuc2ZlckNhY2hlLmdldCh2YWx1ZSkgfHwgW10sXHJcbiAgICAgIF07XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGZyb21XaXJlVmFsdWUodmFsdWUpIHtcclxuICAgICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFwiSEFORExFUlwiIC8qIEhBTkRMRVIgKi86XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZmVySGFuZGxlcnMuZ2V0KHZhbHVlLm5hbWUpLmRlc2VyaWFsaXplKHZhbHVlLnZhbHVlKTtcclxuICAgICAgICAgIGNhc2UgXCJSQVdcIiAvKiBSQVcgKi86XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIG1zZywgdHJhbnNmZXJzKSB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaWQgPSBnZW5lcmF0ZVVVSUQoKTtcclxuICAgICAgICAgIGVwLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGZ1bmN0aW9uIGwoZXYpIHtcclxuICAgICAgICAgICAgICBpZiAoIWV2LmRhdGEgfHwgIWV2LmRhdGEuaWQgfHwgZXYuZGF0YS5pZCAhPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlcC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBsKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKGV2LmRhdGEpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoZXAuc3RhcnQpIHtcclxuICAgICAgICAgICAgICBlcC5zdGFydCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXAucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7IGlkIH0sIG1zZyksIHRyYW5zZmVycyk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBmdW5jdGlvbiBnZW5lcmF0ZVVVSUQoKSB7XHJcbiAgICAgIHJldHVybiBuZXcgQXJyYXkoNClcclxuICAgICAgICAgIC5maWxsKDApXHJcbiAgICAgICAgICAubWFwKCgpID0+IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS50b1N0cmluZygxNikpXHJcbiAgICAgICAgICAuam9pbihcIi1cIik7XHJcbiAgfVxuICAvLyMgc291cmNlTWFwcGluZ1VSTD1jb21saW5rLm1qcy5tYXBcblxuICAvLyBDb25zdGFudHNcbiAgY29uc3QgVVJMX0NETl9ST09UID0gXCJodHRwczovL2Nkbi5iaW93YXNtLmNvbS92MlwiO1xuICBjb25zdCBDT05GSUdfREVGQVVMVFMgPSB7XG4gIFx0Ly8gQmlvd2FzbSBDRE4gVVJMc1xuICBcdHVybENETjogVVJMX0NETl9ST09ULFxuICBcdC8vIEdldCB0aGUgV29ya2VyIGNvZGUgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBBaW9saSB2ZXJzaW9uXG4gIFx0dXJsQWlvbGk6IGAke1VSTF9DRE5fUk9PVH0vYWlvbGkvJHtwa2cudmVyc2lvbn0vYWlvbGkud29ya2VyLmpzYCxcbiAgXHQvLyBXaGVyZSB3ZSBjYW4gZmluZCB0aGUgYmFzZSBiaW93YXNtIG1vZHVsZSAob25seSBtb2RpZnkgdGhpcyBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQpXG4gIFx0dXJsQmFzZU1vZHVsZTogbnVsbCxcblxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIG1vdW50aW5nIHRoZSBzaGFyZWQgZmlsZXN5c3RlbVxuICBcdGRpclNoYXJlZDogXCIvc2hhcmVkXCIsXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3IgbW91bnRpbmcgRmlsZS9CbG9iIG9iamVjdHMgdG8gdGhlIHZpcnR1YWwgZmlsZSBzeXN0ZW1cbiAgXHRkaXJNb3VudGVkOiBcIi9tbnRcIixcbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBzeW1saW5rcyAoYmFzaWNhbGx5LCB3ZSBtYWtlIGEgc3ltbGluayB0byBlYWNoIGZpbGUgbW91bnRlZCBvbiBXT1JLRVJGU1xuICBcdC8vIHNvIHRoYXQgb3BlcmF0aW9ucyBsaWtlIFwic2FtdG9vbHMgaW5kZXhcIiBkb24ndCBjcmFzaCBkdWUgdG8gdGhlIHJlYWQtb25seSBuYXR1cmUgb2YgV09SS0VSUykuXG4gIFx0Ly8gQWxzbyBtb3VudCBVUkxzIGxhemlseSBpbiB0aGF0IGZvbGRlci5cbiAgXHRkaXJEYXRhOiBcIi9kYXRhXCIsXG4gIFx0Ly8gSW50ZXJsZWF2ZSBzdGRvdXQvc3RkZXJyLiBJZiBzZXQgdG8gZmFsc2UsIGAuZXhlYygpYCByZXR1cm5zIGFuIG9iamVjdCB7IFwic3Rkb3V0XCI6IDx0ZXh0PiwgXCJzdGRlcnJcIjogPHRleHQ+IH1cbiAgXHRwcmludEludGVybGVhdmVkOiB0cnVlLFxuXG4gIFx0Ly8gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuIHdoZW5ldmVyIHdlIHJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIFdlYldvcmtlciB3aXRoIHBheWxvYWQgeyB0eXBlOiBcImJpb3dhc21cIiwgdmFsdWU6IC4uLiB9LlxuICBcdC8vIFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL2Jpb3dhc20vYmlvd2FzbS90cmVlL21haW4vdG9vbHMvYmh0c25lPiBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBjYW4gYmUgdXNlZCB0byBzZW5kIHJlZ3VsYXIgdXBkYXRlc1xuICBcdC8vIGJhY2sgdG8gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBjYWxsTWFpbigpIGlzIGRvbmUgcnVubmluZy5cbiAgXHRjYWxsYmFjazogbnVsbCxcblxuICBcdC8vIERlYnVnZ2luZ1xuICBcdGRlYnVnOiBmYWxzZSxcbiAgXHRlbnY6IFwicHJkXCJcbiAgfTtcblxuICAvLyBDbGFzczogMSBvYmplY3QgPSAxIHdvcmtlcjsgdXNlciBjYW4gZGVjaWRlIGlmIHRoZXkgd2FudCB0b29scyBydW5uaW5nIGluIHNlcGFyYXRlIHRocmVhZHMgb3IgYWxsIG9mIHRoZW0gaW4gb25lXG4gIGNsYXNzIEFpb2xpXG4gIHtcbiAgXHRjb25zdHJ1Y3Rvcih0b29scywgY29uZmlnPXt9KVxuICBcdHtcbiAgXHRcdGlmKHRvb2xzID09IG51bGwpXG4gIFx0XHRcdHRocm93IFwiRXhwZWN0aW5nIGFycmF5IG9mIHRvb2xzIGFzIGlucHV0IHRvIEFpb2xpIGNvbnN0cnVjdG9yLlwiO1xuXG4gIFx0XHQvLyBQYXJzZSB1c2VyIGlucHV0XG4gIFx0XHRpZighQXJyYXkuaXNBcnJheSh0b29scykpXG4gIFx0XHRcdHRvb2xzID0gWyB0b29scyBdO1xuICBcdFx0Ly8gT3ZlcndyaXRlIGRlZmF1bHQgY29uZmlnIGlmIHNwZWNpZmllZFxuICBcdFx0Y29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgQ09ORklHX0RFRkFVTFRTLCBjb25maWcpO1xuICBcdFx0Ly8gRm9yIGNvbnZlbmllbmNlLCBzdXBwb3J0IFwiPHRvb2w+Lzx2ZXJzaW9uPlwiIG9yIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIiBpbnN0ZWFkIG9mIG9iamVjdCBjb25maWdcbiAgXHRcdHRvb2xzID0gdG9vbHMubWFwKHRoaXMuX3BhcnNlVG9vbCk7XG4gIFx0XHQvLyBJZiB0ZXN0aW5nIHdpdGggZGlmZmVyZW50IGVudmlyb25tZW50IGUuZy4gY2RuLXN0Zy5iaW93YXNtLmNvbVxuICBcdFx0aWYoY29uZmlnLmVudiAhPSBcInByZFwiKSB7XG4gIFx0XHRcdGNvbmZpZy51cmxDRE4gPSBjb25maWcudXJsQ0ROLnJlcGxhY2UoXCJjZG5cIiwgYGNkbi0ke2NvbmZpZy5lbnZ9YCk7XG4gIFx0XHRcdGNvbmZpZy51cmxBaW9saSA9IGNvbmZpZy51cmxBaW9saS5yZXBsYWNlKFwiY2RuXCIsIGBjZG4tJHtjb25maWcuZW52fWApO1xuICBcdFx0fVxuXG4gIFx0XHQvLyBBZGQgYmlvd2FzbSBiYXNlIG1vZHVsZSB0byBsaXN0IG9mIHRvb2xzIHRvIGluaXRpYWxpemUgKG5lZWQgdGhpcyBmb3IgdGhlIHNoYXJlZCB2aXJ0dWFsIGZpbGVzeXN0ZW0pXG4gIFx0XHR0b29scyA9IFt7XG4gIFx0XHRcdHRvb2w6IFwiYmFzZVwiLFxuICBcdFx0XHR2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgXHRcdFx0dXJsUHJlZml4OiBjb25maWcudXJsQmFzZU1vZHVsZVxuICBcdFx0fSwgLi4udG9vbHNdO1xuXG4gIFx0XHQvLyBTZXQgc3RhdGVcbiAgXHRcdHRoaXMudG9vbHMgPSB0b29scztcbiAgXHRcdHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gIFx0XHQvLyBIYW5kbGUgY2FsbGJhY2sgKGRlbGV0ZSBpdCBiZWNhdXNlIHdlIGNhbid0IHNlbmQgYSBmdW5jdGlvbiB0byB0aGUgV2ViV29ya2VyKVxuICBcdFx0aWYodGhpcy5jb25maWcuY2FsbGJhY2sgIT0gbnVsbClcbiAgXHRcdFx0dGhpcy5jYWxsYmFjayA9IHRoaXMuY29uZmlnLmNhbGxiYWNrO1xuICBcdFx0ZGVsZXRlIHRoaXMuY29uZmlnLmNhbGxiYWNrO1xuXG4gIFx0XHRyZXR1cm4gdGhpcy5pbml0KCk7XG4gIFx0fVxuXG4gIFx0Ly8gSW5pdGlhbGl6ZSB0aGUgV2ViV29ya2VyIGFuZCB0aGUgV2ViQXNzZW1ibHkgbW9kdWxlcyB3aXRoaW4gaXRcbiAgXHRhc3luYyBpbml0KCkge1xuICBcdFx0Ly8gTm90ZTogV2UgY2FuIG9ubHkgY3JlYXRlIGEgV2ViV29ya2VyIHVzaW5nIGEgVVJMIHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgYXBwIHJ1bm5pbmcgaXQsIGkuZS4gd2VcbiAgXHRcdC8vIGNhbid0IGRvIGBuZXcgV29ya2VyKFwiaHR0cHM6Ly9jZG4uYmlvd2FzbS5jb20vdjIvLi4uXCIpYCwgc28gaW5zdGVhZCB3ZSBuZWVkIHRvIGZldGNoIHRoZSBjb250ZW50cyBvZiB0aGF0XG4gIFx0XHQvLyBVUkwgZmlyc3QsIGFuZCB0aGVuIGNyZWF0ZSB0aGUgV2ViV29ya2VyLiBTZWUgPGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82MDAxNTg5OD4uXG4gIFx0XHRjb25zdCBtb2R1bGVKUyA9IGF3YWl0IChhd2FpdCBmZXRjaCh0aGlzLmNvbmZpZy51cmxBaW9saSkpLnRleHQoKTtcbiAgXHRcdGNvbnN0IG1vZHVsZUJsb2IgPSBuZXcgQmxvYihbbW9kdWxlSlNdLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiIH0pO1xuXG4gIFx0XHQvLyBDcmVhdGUgdGhlIFdlYldvcmtlclxuICBcdFx0Y29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKG1vZHVsZUJsb2IpKTtcbiAgXHRcdC8vIExpc3RlbiBmb3IgXCJiaW93YXNtXCIgbWVzc2FnZXMgZnJvbSB0aGUgV2ViV29ya2VyXG4gIFx0XHRpZih0aGlzLmNhbGxiYWNrKVxuICBcdFx0XHR3b3JrZXIub25tZXNzYWdlID0gZSA9PiB7XG4gIFx0XHRcdFx0aWYoZS5kYXRhLnR5cGUgPT0gXCJiaW93YXNtXCIpXG4gIFx0XHRcdFx0XHR0aGlzLmNhbGxiYWNrKGUuZGF0YS52YWx1ZSk7XG4gIFx0XHRcdH07XG5cbiAgXHRcdGNvbnN0IGFpb2xpID0gd3JhcCh3b3JrZXIpO1xuICBcdFx0YWlvbGkudG9vbHMgPSB0aGlzLnRvb2xzO1xuICBcdFx0YWlvbGkuY29uZmlnID0gdGhpcy5jb25maWc7XG5cbiAgXHRcdC8vIEluaXRpYWxpemUgdGhlIHRvb2xzIGluc2lkZSB0aGUgV2ViV29ya2VyXG4gIFx0XHRhd2FpdCBhaW9saS5pbml0KCk7XG5cbiAgXHRcdHJldHVybiBhaW9saTtcbiAgXHR9XG5cbiAgXHQvLyBQYXJzZSBcIjx0b29sPi88dmVyc2lvbj5cIiBhbmQgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiIGludG8geyBcInRvb2xcIjogPHRvb2w+LCBcInByb2dyYW1cIjogPHByb2dyYW0+LCBcInZlcnNpb25cIjogPHZlcnNpb24+IH1cbiAgXHRfcGFyc2VUb29sKHRvb2wpXG4gIFx0e1xuICBcdFx0Ly8gSWYgbm90IGEgc3RyaW5nLCBsZWF2ZSBpdCBhcyBpc1xuICBcdFx0aWYodHlwZW9mIHRvb2wgIT09IFwic3RyaW5nXCIpXG4gIFx0XHRcdHJldHVybiB0b29sO1xuXG4gIFx0XHQvLyBTdXBwb3J0IFwiPHRvb2w+Lzx2ZXJzaW9uPlwiIGFuZCBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCJcbiAgXHRcdGNvbnN0IHRvb2xTcGxpdCA9IHRvb2wuc3BsaXQoXCIvXCIpO1xuICBcdFx0aWYodG9vbFNwbGl0Lmxlbmd0aCAhPSAyICYmIHRvb2xTcGxpdC5sZW5ndGggIT0gMylcbiAgXHRcdFx0dGhyb3cgXCJFeHBlY3RpbmcgJzx0b29sPi88dmVyc2lvbj4nIG9yICc8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPidcIjtcblxuICBcdFx0cmV0dXJuIHtcbiAgXHRcdFx0dG9vbDogdG9vbFNwbGl0WzBdLFxuICBcdFx0XHRwcm9ncmFtOiB0b29sU3BsaXQubGVuZ3RoID09IDMgPyB0b29sU3BsaXRbMV0gOiB0b29sU3BsaXRbMF0sXG4gIFx0XHRcdHZlcnNpb246IHRvb2xTcGxpdFt0b29sU3BsaXQubGVuZ3RoIC0gMV1cbiAgXHRcdH07XG4gIFx0fVxuICB9XG5cbiAgcmV0dXJuIEFpb2xpO1xuXG59KSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWlvbGkuanMubWFwXG4iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBBbWlub2FjaWRzUGFsZXR0ZXMgZXh0ZW5kcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIGdldCBMZXNrKCkge1xuICAgICAgICBpZiAodGhpcy5sZXNrID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMubGVzayA9IHRoaXMubWFrZVBhbGV0dGUoW1xuICAgICAgICAgICAgICAgIFtbJ0cnLCAnQScsICdTJywgJ1QnXSwgJ29yYW5nZSddLFxuICAgICAgICAgICAgICAgIFtbJ0MnLCAnVicsICdJJywgJ0wnLCAnUCcsICdGJywgJ1knLCAnTScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydOJywgJ1EnLCAnSCddLCAnbWFnZW50YSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snSycsICdSJ10sICdhbGxfYmx1ZSddLFxuICAgICAgICAgICAgXSwgZmFsc2UsIEFtaW5vYWNpZHNQYWxldHRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGVzaztcbiAgICB9XG4gICAgc3RhdGljIGdldCBHcm9rR3JvdXBzKCkge1xuICAgICAgICBpZiAodGhpcy5ncm9rR3JvdXBzID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3Jva0dyb3VwcyA9IHRoaXMubWFrZVBhbGV0dGUoW1xuICAgICAgICAgICAgICAgIFtbJ0MnLCAnVSddLCAneWVsbG93J10sXG4gICAgICAgICAgICAgICAgW1snRycsICdQJ10sICdyZWQnXSxcbiAgICAgICAgICAgICAgICBbWydBJywgJ1YnLCAnSScsICdMJywgJ00nLCAnRicsICdZJywgJ1cnXSwgJ2FsbF9ncmVlbiddLFxuICAgICAgICAgICAgICAgIFtbJ1InLCAnSCcsICdLJ10sICdsaWdodF9ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snRCcsICdFJ10sICdkYXJrX2JsdWUnXSxcbiAgICAgICAgICAgICAgICBbWydTJywgJ1QnLCAnTicsICdRJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdyb2tHcm91cHM7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgUmFzTW9sKCkge1xuICAgICAgICBpZiAodGhpcy5yYXNNb2wgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5yYXNNb2wgPSBuZXcgQW1pbm9hY2lkc1BhbGV0dGVzKHtcbiAgICAgICAgICAgICAgICAvLyBodHRwOi8vYWNjZXMuZW5zLWx5b24uZnIvYmlvdGljL3Jhc3RvcC9oZWxwL2NvbG91ci5odG1cbiAgICAgICAgICAgICAgICAnRCc6ICcjRTYwQTBBJyxcbiAgICAgICAgICAgICAgICAnRSc6ICcjRTYwQTBBJyxcbiAgICAgICAgICAgICAgICAnQyc6ICcjRTZFNjAwJyxcbiAgICAgICAgICAgICAgICAnTSc6ICcjRTZFNjAwJyxcbiAgICAgICAgICAgICAgICAnSyc6ICcjMTQ1QUZGJyxcbiAgICAgICAgICAgICAgICAnUic6ICcjMTQ1QUZGJyxcbiAgICAgICAgICAgICAgICAnUyc6ICcjRkE5NjAwJyxcbiAgICAgICAgICAgICAgICAnVCc6ICcjRkE5NjAwJyxcbiAgICAgICAgICAgICAgICAnRic6ICcjMzIzMkFBJyxcbiAgICAgICAgICAgICAgICAnWSc6ICcjMzIzMkFBJyxcbiAgICAgICAgICAgICAgICAnTic6ICcjMDBEQ0RDJyxcbiAgICAgICAgICAgICAgICAnUSc6ICcjMDBEQ0RDJyxcbiAgICAgICAgICAgICAgICAnRyc6ICcjRUJFQkVCJyxcbiAgICAgICAgICAgICAgICAnTCc6ICcjMEY4MjBGJyxcbiAgICAgICAgICAgICAgICAnVic6ICcjMEY4MjBGJyxcbiAgICAgICAgICAgICAgICAnSSc6ICcjMEY4MjBGJyxcbiAgICAgICAgICAgICAgICAnQSc6ICcjQzhDOEM4JyxcbiAgICAgICAgICAgICAgICAnVyc6ICcjQjQ1QUI0JyxcbiAgICAgICAgICAgICAgICAnSCc6ICcjODI4MkQyJyxcbiAgICAgICAgICAgICAgICAnUCc6ICcjREM5NjgyJyxcbiAgICAgICAgICAgICAgICAnb3RoZXJzJzogJyNCRUEwNkUnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmFzTW9sO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBBbWlub2FjaWRzIHtcbiAgICBzdGF0aWMgZ2V0UGFsZXR0ZShzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgc3dpdGNoIChzY2hlbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2dyb2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgIGNhc2UgJ2xlc2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuTGVzaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaGVtUGFsZXR0ZTogc2NoZW1lIFxcYCR7c2NoZW1lfVxcYCBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGl2aWRlZCBhbWlubyBhY2lkIHdpdGggaXRzIGNvbnRlbnQgaW4gdGhlIGJyYWNrZXQsIGlmIHRoZSBjb250ZW50IGlzIG51bWJlciwgdGhlbiBpdHMgb21pdHRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGMgcmF3IGFtaW5vXG4gICAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nXX0gb3V0ZXIgYW5kIGlubmVyIGNvbnRlbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0SW5uZXJPdXRlcihjKSB7XG4gICAgICAgIGxldCBpc0lubmVyID0gMDtcbiAgICAgICAgbGV0IGlubmVyID0gJyc7XG4gICAgICAgIGxldCBvdXRlciA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYykge1xuICAgICAgICAgICAgaWYgKGNoYXIgPT0gJygnKVxuICAgICAgICAgICAgICAgIGlzSW5uZXIrKztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gJyknKVxuICAgICAgICAgICAgICAgIGlzSW5uZXItLTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5uZXIpXG4gICAgICAgICAgICAgICAgaW5uZXIgKz0gY2hhcjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdXRlciArPSBjaGFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VJbnQoaW5uZXIpKSA/IFtvdXRlciwgJyddIDogW291dGVyLCBpbm5lcl07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRDb2xvckFBUGl2b3QobW9ub21lciA9ICcnLCBzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIC8vY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IEFBUGFsZXR0ZXMuR3Jva0dyb3VwcygpO1xuICAgICAgICBjb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gdGhpcy5nZXRQYWxldHRlKHNjaGVtZSk7XG4gICAgICAgIGxldCBbb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXJdID0gdGhpcy5nZXRJbm5lck91dGVyKG1vbm9tZXIpO1xuICAgICAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgICAgIGlubmVyTW9ub21lciA9IChpbm5lck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke2lubmVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogaW5uZXJNb25vbWVyKTtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9hID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgMV0gOlxuICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXJbMF0gPT0gJ2QnICYmIG1vbm9tZXJbMV0gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDIgfHwgbW9ub21lclsyXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IChfYiA9IG1vbm9tZXJbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2UuZ2V0KGFtaW5vKSwgYW1pbm8sIGlubmVyTW9ub21lciwgMl0gOlxuICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVyLnN1YnN0cmluZygwLCAzKSBpbiB0aGlzLkFBRnVsbE5hbWVzKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMyB8fCBtb25vbWVyWzNdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygwLCAzKV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAzXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgoX2MgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9Mb3dlckNhc2UoKSkgPT0gbW9ub21lclswXSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDEsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gNCB8fCBtb25vbWVyWzRdID09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMSwgMyldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCA0XSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAwXTtcbiAgICB9XG59XG5BbWlub2FjaWRzLlNlbVR5cGUgPSAnQW1pbm9hY2lkcyc7XG5BbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudCA9ICdBbWlub2FjaWRzTXVsdGlwbGVBbGlnbm1lbnQnO1xuQW1pbm9hY2lkcy51bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbkFtaW5vYWNpZHMuTmFtZXMgPSB7XG4gICAgJ0cnOiAnR2x5Y2luZScsXG4gICAgJ0wnOiAnTGV1Y2luZScsXG4gICAgJ1knOiAnVHlyb3NpbmUnLFxuICAgICdTJzogJ1NlcmluZScsXG4gICAgJ0UnOiAnR2x1dGFtaWMgYWNpZCcsXG4gICAgJ1EnOiAnR2x1dGFtaW5lJyxcbiAgICAnRCc6ICdBc3BhcnRpYyBhY2lkJyxcbiAgICAnTic6ICdBc3BhcmFnaW5lJyxcbiAgICAnRic6ICdQaGVueWxhbGFuaW5lJyxcbiAgICAnQSc6ICdBbGFuaW5lJyxcbiAgICAnSyc6ICdMeXNpbmUnLFxuICAgICdSJzogJ0FyZ2luaW5lJyxcbiAgICAnSCc6ICdIaXN0aWRpbmUnLFxuICAgICdDJzogJ0N5c3RlaW5lJyxcbiAgICAnVic6ICdWYWxpbmUnLFxuICAgICdQJzogJ1Byb2xpbmUnLFxuICAgICdXJzogJ1RyeXB0b3BoYW4nLFxuICAgICdJJzogJ0lzb2xldWNpbmUnLFxuICAgICdNJzogJ01ldGhpb25pbmUnLFxuICAgICdUJzogJ1RocmVvbmluZScsXG59O1xuQW1pbm9hY2lkcy5BQVNtaWxlcyA9IHtcbiAgICAnRyc6ICdOQ0MoPU8pTycsXG4gICAgJ0wnOiAnTltDQEhdKENDKEMpQylDKD1PKU8nLFxuICAgICdZJzogJ05DKENDMT1DQz1DKE8pQz1DMSlDKD1PKU8nLFxuICAgICdTJzogJ05DKENPKUMoPU8pTycsXG4gICAgJ0UnOiAnTltDQEBIXShDQ0MoTyk9TylDKD1PKU8nLFxuICAgICdRJzogJ05bQ0BASF0oQ0NDKE4pPU8pQyg9TylPJyxcbiAgICAnRCc6ICdOW0NAQEhdKENDKE8pPU8pQyg9TylPJyxcbiAgICAnTic6ICdOW0NAQEhdKENDKE4pPU8pQyg9TylPJyxcbiAgICAnRic6ICdOQyhDQzE9Q0M9Q0M9QzEpQyg9TylPJyxcbiAgICAnQSc6ICdOW0NASF0oQylDKD1PKU8nLFxuICAgICdLJzogJ05DKENDQ0NOKUMoPU8pTycsXG4gICAgJ1InOiAnTltDQEhdKENDQ05DKD1OKUMpQyg9TylPJyxcbiAgICAnSCc6ICdOQyhDQzE9Q049Q1tOXTEpQyg9TylPJyxcbiAgICAnQyc6ICdOW0NAQEhdKENTKUMoPU8pTycsXG4gICAgJ1YnOiAnTkMoQyhDKUMpQyg9TylPJyxcbiAgICAnUCc6ICdOKENDQzEpQzFDKD1PKU8nLFxuICAgICdXJzogJ05bQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSlDKD1PKU8nLFxuICAgICdJJzogJ05bQ0BIXShbQ0BIXShDKUNDKUMoPU8pTycsXG4gICAgJ00nOiAnTkMoQ0NTQylDKD1PKU8nLFxuICAgICdUJzogJ05DKEMoTylDKUMoPU8pTycsXG59O1xuQW1pbm9hY2lkcy5BQVNtaWxlc1RydW5jYXRlZCA9IHtcbiAgICAnRyc6ICcqQyonLFxuICAgICdMJzogJ0NDKEMpQ1tDQEhdKCopKicsXG4gICAgJ1knOiAnQzE9Q0MoPUNDPUMxQ0MoKikqKU8nLFxuICAgICdTJzogJ09DQygqKUMqJyxcbiAgICAnRSc6ICcqW0NAQEhdKENDQyhPKT1PKSonLFxuICAgICdRJzogJypOW0NAQEhdKENDQyhOKT1PKSonLFxuICAgICdEJzogJypbQ0BASF0oQ0MoTyk9TykqJyxcbiAgICAnTic6ICcqW0NAQEhdKENDKE4pPU8pKicsXG4gICAgJ0YnOiAnQzE9Q0M9QyhDPUMxKUNDKCopKicsXG4gICAgJ0EnOiAnQ1tDQEhdKCopKicsXG4gICAgJ0snOiAnQyhDQ04pQ0MoKikqJyxcbiAgICAnUic6ICcqW0NASF0oQ0NDTkMoPU4pQykqJyxcbiAgICAnSCc6ICdDMT1DKE5DPU4xKUNDKCopKicsXG4gICAgJ0MnOiAnQyhbQ0BASF0oKikqKVMnLFxuICAgICdWJzogJ0NDKEMpQygqKSonLFxuICAgICdQJzogJ0MxQ0NOKCopQzEqJyxcbiAgICAnVyc6ICcqW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpKicsXG4gICAgJ0knOiAnQ0NbQ0BIXShDKVtDQEhdKCopKicsXG4gICAgJ00nOiAnQ1NDQ0MoKikqJyxcbiAgICAnVCc6ICdDQyhPKUMoKikqJyxcbn07XG4vKiogVE9ETzogRnVsbD9cbiAqL1xuQW1pbm9hY2lkcy5BQUZ1bGxOYW1lcyA9IHtcbiAgICAnQWxhJzogJ0EnLFxuICAgICdBcmcnOiAnUicsXG4gICAgJ0Fzbic6ICdOJyxcbiAgICAnQXNwJzogJ0QnLFxuICAgICdDeXMnOiAnQycsXG4gICAgJ0dsbic6ICdRJyxcbiAgICAnR2x1JzogJ0UnLFxuICAgICdHbHknOiAnRycsXG4gICAgJ0hpcyc6ICdIJyxcbiAgICAnSWxlJzogJ0knLFxuICAgICdMZXUnOiAnTCcsXG4gICAgJ0x5cyc6ICdLJyxcbiAgICAnTWV0JzogJ00nLFxuICAgICdQaGUnOiAnRicsXG4gICAgJ1Bybyc6ICdQJyxcbiAgICAnU2VyJzogJ1MnLFxuICAgICdUaHInOiAnVCcsXG4gICAgJ1RycCc6ICdXJyxcbiAgICAnVHlyJzogJ1knLFxuICAgICdWYWwnOiAnVicsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWVcxcGJtOWhZMmxrY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbUZ0YVc1dllXTnBaSE11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlMwRXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlR5eHJRa0ZCYlVJc1UwRkJVU3hqUVVGak8wbEJSemRETEUxQlFVMHNTMEZCU3l4SlFVRkpPMUZCUTNCQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlF6TkNMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hSUVVGUkxFTkJRVU03WjBKQlEyaERMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZETlVRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1UwRkJVeXhEUVVGRE8yZENRVU0xUWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXp0blFrRkRia0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU03WVVGRGVrSXNSVUZCUlN4TFFVRkxMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0VFFVTXZRanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJTVTBzVFVGQlRTeExRVUZMTEZWQlFWVTdVVUZETVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVlVGQlZTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUXpsQ0xFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJRenRuUWtGRGFrTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTNSQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRE8yZENRVU51UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJRenRuUWtGRGRrUXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNXVUZCV1N4RFFVRkRPMmRDUVVNdlFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZWtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGRkJRVkVzUTBGQlF6dGhRVU5xUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hyUWtGQmEwSXNRMEZCUXl4RFFVRkRPMU5CUXk5Q08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMGxCUTNwQ0xFTkJRVU03U1VGSlRTeE5RVUZOTEV0QlFVc3NUVUZCVFR0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEV0QlFVc3NTMEZCU3l4RFFVRkRMRVZCUVVVN1dVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMR3RDUVVGclFpeERRVUZETzJkQ1FVTnVReXg1UkVGQmVVUTdaMEpCUTNwRUxFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEZGQlFWRXNSVUZCUlN4VFFVRlRPMkZCUTNCQ0xFTkJRVU1zUTBGQlF6dFRRVU5LTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc1QwRkJUeXhWUVVGVk8wbEJjVWRrTEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1UwRkJhVUlzVFVGQlRUdFJRVU01UXl4UlFVRlJMRTFCUVUwc1JVRkJSVHRaUVVOb1FpeExRVUZMTEUxQlFVMDdaMEpCUTFRc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1dVRkRka01zUzBGQlN5eE5RVUZOTzJkQ1FVTlVMRTlCUVU4c2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTJwRE8yZENRVU5GTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2VVSkJRWGxDTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dFRRVU55UlR0SlFVTklMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCVXp0UlFVTnVReXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEyWXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSV1lzUzBGQlN5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRjRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NSMEZCUnp0blFrRkRZaXhQUVVGUExFVkJRVVVzUTBGQlF6dHBRa0ZEVUN4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSE8yZENRVU5zUWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEU5QlFVODdaMEpCUTJRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF6czdaMEpCUldRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF6dFRRVU5xUWp0UlFVVkVMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTm9SU3hEUVVGRE8wbEJSVTBzVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4VlFVRnJRaXhGUVVGRkxFVkJRVVVzVTBGQmFVSXNUVUZCVFRzN1VVRkRla1VzYzBSQlFYTkVPMUZCUTNSRUxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTndSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETDBRc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkRNMFlzV1VGQldTeEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRk0wWXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8xbEJRelZETEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5d3dRMEZCUlN4WFFVRlhMRVZCUVVjc1EwRkJRenRaUVVONlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF5eERRVUZETzJkQ1FVTnVReXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6RkVMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM2hFTzFGQlJVUXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVVc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlR0WlFVTXpSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVTdaMEpCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEUxQlFVRXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXd3UTBGQlJTeFhRVUZYTEVWQlFVY3NRMEZCUXp0blFrRkRla01zVDBGQlR5eExRVUZMTEVsQlFVa3NiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dHZRa0ZEYmtNc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU14UkN4RFFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFVkJRVVVzV1VGQldTeEZRVUZGTEZsQlFWa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVONFJEdFRRVU5HTzFGQlJVUXNTVUZCU1N4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRk8xbEJReTlETEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSVHRuUWtGRE5VTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTjRSQ3hQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yOUNRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoRU8xTkJRMFk3VVVGRlJDeEpRVUZKTEVOQlFVRXNUVUZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExEQkRRVUZGTEZkQlFWY3NSVUZCUlN4TFFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdFpRVU16UXl4SlFVRkpMRTlCUVU4c1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVU3WjBKQlF5OURMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdHZRa0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVONFJDeFBRVUZQTEV0QlFVc3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF5eERRVUZETzNkQ1FVTnVReXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03ZDBKQlF6RkVMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU40UkR0aFFVTkdPMU5CUTBZN1VVRkZSQ3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6bEVMRU5CUVVNN08wRkJjRXhsTEd0Q1FVRlBMRWRCUVZjc1dVRkJXU3hEUVVGRE8wRkJSUzlDTEcxRFFVRjNRaXhIUVVGWExEWkNRVUUyUWl4RFFVRkRPMEZCUlRGRkxIbENRVUZqTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03UVVGRk4wSXNaMEpCUVVzc1IwRkJjVUk3U1VGRGRFTXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVTBGQlV6dEpRVU5rTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFJRVUZSTzBsQlEySXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzVjBGQlZ6dEpRVU5vUWl4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFJRVUZSTzBsQlEySXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzVjBGQlZ6dERRVU5xUWl4RFFVRkRPMEZCUlZrc2JVSkJRVkVzUjBGQmNVSTdTVUZEZWtNc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNjMEpCUVhOQ08wbEJRek5DTEVkQlFVY3NSVUZCUlN3eVFrRkJNa0k3U1VGRGFFTXNSMEZCUnl4RlFVRkZMR05CUVdNN1NVRkRia0lzUjBGQlJ5eEZRVUZGTEhsQ1FVRjVRanRKUVVNNVFpeEhRVUZITEVWQlFVVXNlVUpCUVhsQ08wbEJRemxDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMSGRDUVVGM1FqdEpRVU0zUWl4SFFVRkhMRVZCUVVVc2QwSkJRWGRDTzBsQlF6ZENMRWRCUVVjc1JVRkJSU3hwUWtGQmFVSTdTVUZEZEVJc1IwRkJSeXhGUVVGRkxHbENRVUZwUWp0SlFVTjBRaXhIUVVGSExFVkJRVVVzTUVKQlFUQkNPMGxCUXk5Q0xFZEJRVWNzUlVGQlJTeDNRa0ZCZDBJN1NVRkROMElzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNhVUpCUVdsQ08wbEJRM1JDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMRzlEUVVGdlF6dEpRVU42UXl4SFFVRkhMRVZCUVVVc01FSkJRVEJDTzBsQlF5OUNMRWRCUVVjc1JVRkJSU3huUWtGQlowSTdTVUZEY2tJc1IwRkJSeXhGUVVGRkxHbENRVUZwUWp0RFFVTjJRaXhEUVVGRE8wRkJSVmtzTkVKQlFXbENMRWRCUVhGQ08wbEJRMnhFTEVkQlFVY3NSVUZCUlN4TFFVRkxPMGxCUTFZc1IwRkJSeXhGUVVGRkxHbENRVUZwUWp0SlFVTjBRaXhIUVVGSExFVkJRVVVzYzBKQlFYTkNPMGxCUXpOQ0xFZEJRVWNzUlVGQlJTeFZRVUZWTzBsQlEyWXNSMEZCUnl4RlFVRkZMRzlDUVVGdlFqdEpRVU42UWl4SFFVRkhMRVZCUVVVc2NVSkJRWEZDTzBsQlF6RkNMRWRCUVVjc1JVRkJSU3h0UWtGQmJVSTdTVUZEZUVJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hqUVVGak8wbEJRMjVDTEVkQlFVY3NSVUZCUlN4eFFrRkJjVUk3U1VGRE1VSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc1owSkJRV2RDTzBsQlEzSkNMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4aFFVRmhPMGxCUTJ4Q0xFZEJRVWNzUlVGQlJTd3JRa0ZCSzBJN1NVRkRjRU1zUjBGQlJ5eEZRVUZGTEhGQ1FVRnhRanRKUVVNeFFpeEhRVUZITEVWQlFVVXNWMEZCVnp0SlFVTm9RaXhIUVVGSExFVkJRVVVzV1VGQldUdERRVU5zUWl4RFFVRkRPMEZCUlVZN1IwRkRSenRCUVVOWExITkNRVUZYTEVkQlFYRkNPMGxCUXpWRExFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1EwRkRXQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nWjNKdmF5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaM0p2YXljN1hHNXBiWEJ2Y25RZ0tpQmhjeUIxYVNCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdmRXa25PMXh1YVcxd2IzSjBJQ29nWVhNZ1JFY2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMlJuSnp0Y2JseHVhVzF3YjNKMElIdFRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMU5sY1ZCaGJHVjBkR1VzSUZObGNWQmhiR1YwZEdWQ1lYTmxmU0JtY205dElDY3VMM05sY1Mxd1lXeGxkSFJsY3ljN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNZ1pYaDBaVzVrY3lCVFpYRlFZV3hsZEhSbFFtRnpaU0I3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUd4bGMyczZJRk5sY1ZCaGJHVjBkR1U3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUWdUR1Z6YXlncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXNaWE5ySUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11YkdWemF5QTlJSFJvYVhNdWJXRnJaVkJoYkdWMGRHVW9XMXh1SUNBZ0lDQWdJQ0JiV3lkSEp5d2dKMEVuTENBblV5Y3NJQ2RVSjEwc0lDZHZjbUZ1WjJVblhTeGNiaUFnSUNBZ0lDQWdXMXNuUXljc0lDZFdKeXdnSjBrbkxDQW5UQ2NzSUNkUUp5d2dKMFluTENBbldTY3NJQ2ROSnl3Z0oxY25YU3dnSjJGc2JGOW5jbVZsYmlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRPSnl3Z0oxRW5MQ0FuU0NkZExDQW5iV0ZuWlc1MFlTZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkRUp5d2dKMFVuWFN3Z0ozSmxaQ2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZExKeXdnSjFJblhTd2dKMkZzYkY5aWJIVmxKMTBzWEc0Z0lDQWdJQ0JkTENCbVlXeHpaU3dnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YkdWemF6dGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHZHliMnRIY205MWNITTZJRk5sY1ZCaGJHVjBkR1U3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUWdSM0p2YTBkeWIzVndjeWdwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCcFppQW9kR2hwY3k1bmNtOXJSM0p2ZFhCeklEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVozSnZhMGR5YjNWd2N5QTlJSFJvYVhNdWJXRnJaVkJoYkdWMGRHVW9XMXh1SUNBZ0lDQWdJQ0JiV3lkREp5d2dKMVVuWFN3Z0ozbGxiR3h2ZHlkZExGeHVJQ0FnSUNBZ0lDQmJXeWRISnl3Z0oxQW5YU3dnSjNKbFpDZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkQkp5d2dKMVluTENBblNTY3NJQ2RNSnl3Z0owMG5MQ0FuUmljc0lDZFpKeXdnSjFjblhTd2dKMkZzYkY5bmNtVmxiaWRkTEZ4dUlDQWdJQ0FnSUNCYld5ZFNKeXdnSjBnbkxDQW5TeWRkTENBbmJHbG5hSFJmWW14MVpTZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkRUp5d2dKMFVuWFN3Z0oyUmhjbXRmWW14MVpTZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkVEp5d2dKMVFuTENBblRpY3NJQ2RSSjEwc0lDZHZjbUZ1WjJVblhTeGNiaUFnSUNBZ0lGMHNJR1poYkhObExDQkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW5jbTlyUjNKdmRYQnpPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdjbUZ6VFc5c09pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElGSmhjMDF2YkNncE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NXlZWE5OYjJ3Z1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1eVlYTk5iMndnUFNCdVpYY2dRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpLSHRjYmlBZ0lDQWdJQ0FnTHk4Z2FIUjBjRG92TDJGalkyVnpMbVZ1Y3kxc2VXOXVMbVp5TDJKcGIzUnBZeTl5WVhOMGIzQXZhR1ZzY0M5amIyeHZkWEl1YUhSdFhHNGdJQ0FnSUNBZ0lDZEVKem9nSnlORk5qQkJNRUVuTENBdkx5QmhjM0FzSUdGemNHRnlkR2xqSUdGamFXUXNJR0Z6Y0Z4dUlDQWdJQ0FnSUNBblJTYzZJQ2NqUlRZd1FUQkJKeXdnTHk4Z1oyeDFMQ0JuYkhWMFlXMXBZeUJoWTJsa1hHNGdJQ0FnSUNBZ0lDZERKem9nSnlORk5rVTJNREFuTENBdkx5QmplWE1zSUdONWMzUmxhVzVsWEc0Z0lDQWdJQ0FnSUNkTkp6b2dKeU5GTmtVMk1EQW5MQ0F2THlCdFpYUXNJRzFsZEdocGIyNXBibVZjYmlBZ0lDQWdJQ0FnSjBzbk9pQW5JekUwTlVGR1JpY3NJQzh2SUd4NWN5d2diSGx6YVc1bFhHNGdJQ0FnSUNBZ0lDZFNKem9nSnlNeE5EVkJSa1luTENBdkx5QmhjbWNzSUdGeVoybHVhVzVsWEc0Z0lDQWdJQ0FnSUNkVEp6b2dKeU5HUVRrMk1EQW5MQ0F2THlCelpYSXNJSE5sY21sdVpWeHVJQ0FnSUNBZ0lDQW5WQ2M2SUNjalJrRTVOakF3Snl3Z0x5OGdkR2h5TENCMGFISmxiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owWW5PaUFuSXpNeU16SkJRU2NzSUM4dklIQm9aU3dnY0dobGJubHNZV3hoYm1sdVpWeHVJQ0FnSUNBZ0lDQW5XU2M2SUNjak16SXpNa0ZCSnl3Z0x5OGdkSGx5TENCMGVYSnZjMmx1WlZ4dUlDQWdJQ0FnSUNBblRpYzZJQ2NqTURCRVEwUkRKeXdnTHk4Z1lYTnVMQ0JoYzNCaGNtRm5hVzVsWEc0Z0lDQWdJQ0FnSUNkUkp6b2dKeU13TUVSRFJFTW5MQ0F2THlCbmJHNHNJR2RzZFhSaGJXbHVaVnh1SUNBZ0lDQWdJQ0FuUnljNklDY2pSVUpGUWtWQ0p5d2dMeThnWjJ4NUxDQm5iSGxqYVc1bFhHNGdJQ0FnSUNBZ0lDZE1Kem9nSnlNd1JqZ3lNRVluTENBdkx5QnNaWFVzSUd4bGRXTnBibVZjYmlBZ0lDQWdJQ0FnSjFZbk9pQW5JekJHT0RJd1JpY3NJQzh2SUhaaGJDd2dkbUZzYVc1bFhHNGdJQ0FnSUNBZ0lDZEpKem9nSnlNd1JqZ3lNRVluTENBdkx5QnBiR1VzSUdsemIyeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0owRW5PaUFuSTBNNFF6aERPQ2NzSUM4dklHRnNZU3dnWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuVnljNklDY2pRalExUVVJMEp5d2dMeThnZEhKd0xDQjBjbmx3ZEc5d2FHRnVYRzRnSUNBZ0lDQWdJQ2RJSnpvZ0p5TTRNamd5UkRJbkxDQXZMeUJvYVhNc0lHaHBjM1JwWkdsdVpWeHVJQ0FnSUNBZ0lDQW5VQ2M2SUNjalJFTTVOamd5Snl3Z0x5OGdjSEp2TENCd2NtOXNhVzVsWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBbkkwSkZRVEEyUlNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWNtRnpUVzlzTzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJCYldsdWIyRmphV1J6SUh0Y2JpQWdjM1JoZEdsaklISmxZV1J2Ym14NUlGTmxiVlI1Y0dVNklITjBjbWx1WnlBOUlDZEJiV2x1YjJGamFXUnpKenRjYmx4dUlDQnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ1UyVnRWSGx3WlUxMWJIUnBjR3hsUVd4cFoyNXRaVzUwT2lCemRISnBibWNnUFNBblFXMXBibTloWTJsa2MwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCemRHRjBhV01nZFc1a1pXWnBibVZrUTI5c2IzSWdQU0FuY21kaUtERXdNQ3d4TURBc01UQXdLU2M3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCT1lXMWxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUnljNklDZEhiSGxqYVc1bEp5eGNiaUFnSUNBblRDYzZJQ2RNWlhWamFXNWxKeXhjYmlBZ0lDQW5XU2M2SUNkVWVYSnZjMmx1WlNjc1hHNGdJQ0FnSjFNbk9pQW5VMlZ5YVc1bEp5eGNiaUFnSUNBblJTYzZJQ2RIYkhWMFlXMXBZeUJoWTJsa0p5eGNiaUFnSUNBblVTYzZJQ2RIYkhWMFlXMXBibVVuTEZ4dUlDQWdJQ2RFSnpvZ0owRnpjR0Z5ZEdsaklHRmphV1FuTEZ4dUlDQWdJQ2RPSnpvZ0owRnpjR0Z5WVdkcGJtVW5MRnh1SUNBZ0lDZEdKem9nSjFCb1pXNTViR0ZzWVc1cGJtVW5MRnh1SUNBZ0lDZEJKem9nSjBGc1lXNXBibVVuTEZ4dUlDQWdJQ2RMSnpvZ0oweDVjMmx1WlNjc1hHNGdJQ0FnSjFJbk9pQW5RWEpuYVc1cGJtVW5MRnh1SUNBZ0lDZElKem9nSjBocGMzUnBaR2x1WlNjc1hHNGdJQ0FnSjBNbk9pQW5RM2x6ZEdWcGJtVW5MRnh1SUNBZ0lDZFdKem9nSjFaaGJHbHVaU2NzWEc0Z0lDQWdKMUFuT2lBblVISnZiR2x1WlNjc1hHNGdJQ0FnSjFjbk9pQW5WSEo1Y0hSdmNHaGhiaWNzWEc0Z0lDQWdKMGtuT2lBblNYTnZiR1YxWTJsdVpTY3NYRzRnSUNBZ0owMG5PaUFuVFdWMGFHbHZibWx1WlNjc1hHNGdJQ0FnSjFRbk9pQW5WR2h5Wlc5dWFXNWxKeXhjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRUZCVTIxcGJHVnpPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RISnpvZ0owNURReWc5VHlsUEp5eGNiaUFnSUNBblRDYzZJQ2RPVzBOQVNGMG9RME1vUXlsREtVTW9QVThwVHljc1hHNGdJQ0FnSjFrbk9pQW5Ua01vUTBNeFBVTkRQVU1vVHlsRFBVTXhLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxTW5PaUFuVGtNb1EwOHBReWc5VHlsUEp5eGNiaUFnSUNBblJTYzZJQ2RPVzBOQVFFaGRLRU5EUXloUEtUMVBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxRW5PaUFuVGx0RFFFQklYU2hEUTBNb1RpazlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZEVKem9nSjA1YlEwQkFTRjBvUTBNb1R5azlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZE9Kem9nSjA1YlEwQkFTRjBvUTBNb1RpazlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZEdKem9nSjA1REtFTkRNVDFEUXoxRFF6MURNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZEJKem9nSjA1YlEwQklYU2hES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMHNuT2lBblRrTW9RME5EUTA0cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVWljNklDZE9XME5BU0Ywb1EwTkRUa01vUFU0cFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkSUp6b2dKMDVES0VORE1UMURUajFEVzA1ZE1TbERLRDFQS1U4bkxGeHVJQ0FnSUNkREp6b2dKMDViUTBCQVNGMG9RMU1wUXlnOVR5bFBKeXhjYmlBZ0lDQW5WaWM2SUNkT1F5aERLRU1wUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RRSnpvZ0owNG9RME5ETVNsRE1VTW9QVThwVHljc1hHNGdJQ0FnSjFjbk9pQW5UbHREUUVCSVhTaERZekZqTW1OalkyTmpNbTRvVzBoZEtXTXhLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owa25PaUFuVGx0RFFFaGRLRnREUUVoZEtFTXBRME1wUXlnOVR5bFBKeXhjYmlBZ0lDQW5UU2M2SUNkT1F5aERRMU5ES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMVFuT2lBblRrTW9ReWhQS1VNcFF5ZzlUeWxQSnl4Y2JpQWdmVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlUyMXBiR1Z6VkhKMWJtTmhkR1ZrT2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkSEp6b2dKeXBES2ljc1hHNGdJQ0FnSjB3bk9pQW5RME1vUXlsRFcwTkFTRjBvS2lrcUp5eGNiaUFnSUNBbldTYzZJQ2RETVQxRFF5ZzlRME05UXpGRFF5Z3FLU29wVHljc1hHNGdJQ0FnSjFNbk9pQW5UME5ES0NvcFF5b25MRnh1SUNBZ0lDZEZKem9nSnlwYlEwQkFTRjBvUTBOREtFOHBQVThwS2ljc1hHNGdJQ0FnSjFFbk9pQW5LazViUTBCQVNGMG9RME5ES0U0cFBVOHBLaWNzWEc0Z0lDQWdKMFFuT2lBbktsdERRRUJJWFNoRFF5aFBLVDFQS1NvbkxGeHVJQ0FnSUNkT0p6b2dKeXBiUTBCQVNGMG9RME1vVGlrOVR5a3FKeXhjYmlBZ0lDQW5SaWM2SUNkRE1UMURRejFES0VNOVF6RXBRME1vS2lrcUp5eGNiaUFnSUNBblFTYzZJQ2REVzBOQVNGMG9LaWtxSnl4Y2JpQWdJQ0FuU3ljNklDZERLRU5EVGlsRFF5Z3FLU29uTEZ4dUlDQWdJQ2RTSnpvZ0p5cGJRMEJJWFNoRFEwTk9ReWc5VGlsREtTb25MRnh1SUNBZ0lDZElKem9nSjBNeFBVTW9Ua005VGpFcFEwTW9LaWtxSnl4Y2JpQWdJQ0FuUXljNklDZERLRnREUUVCSVhTZ3FLU29wVXljc1hHNGdJQ0FnSjFZbk9pQW5RME1vUXlsREtDb3BLaWNzWEc0Z0lDQWdKMUFuT2lBblF6RkRRMDRvS2lsRE1Tb25MRnh1SUNBZ0lDZFhKem9nSnlwYlEwQkFTRjBvUTJNeFl6SmpZMk5qWXpKdUtGdElYU2xqTVNrcUp5eGNiaUFnSUNBblNTYzZJQ2REUTF0RFFFaGRLRU1wVzBOQVNGMG9LaWtxSnl4Y2JpQWdJQ0FuVFNjNklDZERVME5EUXlncUtTb25MRnh1SUNBZ0lDZFVKem9nSjBOREtFOHBReWdxS1NvbkxGeHVJQ0I5TzF4dVhHNGdJQzhxS2lCVVQwUlBPaUJHZFd4c1AxeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCQlFVWjFiR3hPWVcxbGN6b2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVTQTlJSHRjYmlBZ0lDQW5RV3hoSnpvZ0owRW5MRnh1SUNBZ0lDZEJjbWNuT2lBblVpY3NYRzRnSUNBZ0owRnpiaWM2SUNkT0p5eGNiaUFnSUNBblFYTndKem9nSjBRbkxGeHVJQ0FnSUNkRGVYTW5PaUFuUXljc1hHNGdJQ0FnSjBkc2JpYzZJQ2RSSnl4Y2JpQWdJQ0FuUjJ4MUp6b2dKMFVuTEZ4dUlDQWdJQ2RIYkhrbk9pQW5SeWNzWEc0Z0lDQWdKMGhwY3ljNklDZElKeXhjYmlBZ0lDQW5TV3hsSnpvZ0owa25MRnh1SUNBZ0lDZE1aWFVuT2lBblRDY3NYRzRnSUNBZ0oweDVjeWM2SUNkTEp5eGNiaUFnSUNBblRXVjBKem9nSjAwbkxGeHVJQ0FnSUNkUWFHVW5PaUFuUmljc1hHNGdJQ0FnSjFCeWJ5YzZJQ2RRSnl4Y2JpQWdJQ0FuVTJWeUp6b2dKMU1uTEZ4dUlDQWdJQ2RVYUhJbk9pQW5WQ2NzWEc0Z0lDQWdKMVJ5Y0NjNklDZFhKeXhjYmlBZ0lDQW5WSGx5SnpvZ0oxa25MRnh1SUNBZ0lDZFdZV3duT2lBblZpY3NYRzRnSUgwN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJRWVd4bGRIUmxLSE5qYUdWdFpUb2djM1J5YVc1bklEMGdKMmR5YjJzbktUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdjM2RwZEdOb0lDaHpZMmhsYldVcElIdGNiaUFnSUNCallYTmxJQ2RuY205ckp6cGNiaUFnSUNBZ0lISmxkSFZ5YmlCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNdVIzSnZhMGR5YjNWd2N6dGNiaUFnSUNCallYTmxJQ2RzWlhOckp6cGNiaUFnSUNBZ0lISmxkSFZ5YmlCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNdVRHVnphenRjYmlBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCRGFHVnRVR0ZzWlhSMFpUb2djMk5vWlcxbElGeGNZQ1I3YzJOb1pXMWxmVnhjWUNCa2IyVnpJRzV2ZENCbGVHbHpkR0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdScGRtbGtaV1FnWVcxcGJtOGdZV05wWkNCM2FYUm9JR2wwY3lCamIyNTBaVzUwSUdsdUlIUm9aU0JpY21GamEyVjBMQ0JwWmlCMGFHVWdZMjl1ZEdWdWRDQnBjeUJ1ZFcxaVpYSXNJSFJvWlc0Z2FYUnpJRzl0YVhSMFpXUmNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR01nY21GM0lHRnRhVzV2WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMXR6ZEhKcGJtY3NJSE4wY21sdVoxMTlJRzkxZEdWeUlHRnVaQ0JwYm01bGNpQmpiMjUwWlc1MFhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRFbHVibVZ5VDNWMFpYSW9Zem9nYzNSeWFXNW5LVG9nVzNOMGNtbHVaeXdnYzNSeWFXNW5YU0I3WEc0Z0lDQWdiR1YwSUdselNXNXVaWElnUFNBd08xeHVJQ0FnSUd4bGRDQnBibTVsY2lBOUlDY25PMXh1SUNBZ0lHeGxkQ0J2ZFhSbGNpQTlJQ2NuTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCamFHRnlJRzltSUdNcElIdGNiaUFnSUNBZ0lHbG1JQ2hqYUdGeUlEMDlJQ2NvSnlsY2JpQWdJQ0FnSUNBZ2FYTkpibTVsY2lzck8xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb1kyaGhjaUE5UFNBbktTY3BYRzRnSUNBZ0lDQWdJR2x6U1c1dVpYSXRMVHRjYmlBZ0lDQWdJR1ZzYzJVZ2FXWWdLR2x6U1c1dVpYSXBYRzRnSUNBZ0lDQWdJR2x1Ym1WeUlDczlJR05vWVhJN1hHNGdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJRzkxZEdWeUlDczlJR05vWVhJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJQ0ZwYzA1aFRpaHdZWEp6WlVsdWRDaHBibTVsY2lrcElEOGdXMjkxZEdWeUxDQW5KMTBnT2lCYmIzVjBaWElzSUdsdWJtVnlYVHRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwUTI5c2IzSkJRVkJwZG05MEtHMXZibTl0WlhJNklITjBjbWx1WnlBOUlDY25MQ0J6WTJobGJXVTZJQ2RuY205ckp5QTlJQ2RuY205ckp5azZJRnR6ZEhKcGJtY3NJSE4wY21sdVp5d2djM1J5YVc1bkxDQnVkVzFpWlhKZElIdGNiaUFnSUNBdkwyTnZibk4wSUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVZ1BTQkJRVkJoYkdWMGRHVnpMa2R5YjJ0SGNtOTFjSE1vS1R0Y2JpQWdJQ0JqYjI1emRDQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxJRDBnZEdocGN5NW5aWFJRWVd4bGRIUmxLSE5qYUdWdFpTazdYRzRnSUNBZ2JHVjBJRnR2ZFhSbGNrMXZibTl0WlhJc0lHbHVibVZ5VFc5dWIyMWxjbDBnUFNCMGFHbHpMbWRsZEVsdWJtVnlUM1YwWlhJb2JXOXViMjFsY2lrN1hHNGdJQ0FnYjNWMFpYSk5iMjV2YldWeUlEMGdLRzkxZEdWeVRXOXViMjFsY2k1c1pXNW5kR2dnUGlBMklEOGdZQ1I3YjNWMFpYSk5iMjV2YldWeUxuTnNhV05sS0RBc0lETXBmUzR1TG1BZ09pQnZkWFJsY2sxdmJtOXRaWElwTzF4dUlDQWdJR2x1Ym1WeVRXOXViMjFsY2lBOUlDaHBibTVsY2sxdmJtOXRaWEl1YkdWdVozUm9JRDRnTmlBL0lHQWtlMmx1Ym1WeVRXOXViMjFsY2k1emJHbGpaU2d3TENBektYMHVMaTVnSURvZ2FXNXVaWEpOYjI1dmJXVnlLVHRjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeElIeDhJRzF2Ym05dFpYSmJNVjBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmhiV2x1YnlBOUlHMXZibTl0WlhKYk1GMC9MblJ2VlhCd1pYSkRZWE5sS0NraE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUdGdGFXNXZJR2x1SUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVZ1AxeHVJQ0FnSUNBZ0lDQmJZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaUzVuWlhRb1lXMXBibThwTENCaGJXbHVieXdnYVc1dVpYSk5iMjV2YldWeUxDQXhYU0E2WEc0Z0lDQWdJQ0FnSUZ0MGFHbHpMblZ1WkdWbWFXNWxaRU52Ykc5eUxDQnZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNpd2dNVjA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0cxdmJtOXRaWEpiTUYwZ1BUMGdKMlFuSUNZbUlHMXZibTl0WlhKYk1WMGhJR2x1SUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVcElIdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbXhsYm1kMGFDQTlQU0F5SUh4OElHMXZibTl0WlhKYk1sMGdQVDBnSnlnbktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHRnRhVzV2SUQwZ2JXOXViMjFsY2xzeFhUOHVkRzlWY0hCbGNrTmhjMlVvS1NFN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F5WFNBNlhHNGdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNpNXpkV0p6ZEhKcGJtY29NQ3dnTXlrZ2FXNGdkR2hwY3k1QlFVWjFiR3hPWVcxbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWEl1YkdWdVozUm9JRDA5SURNZ2ZId2diVzl1YjIxbGNsc3pYU0E5UFNBbktDY3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQjBhR2x6TGtGQlJuVnNiRTVoYldWelcyMXZibTl0WlhJdWMzVmljM1J5YVc1bktEQXNJRE1wWFR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdGFXNXZJR2x1SUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVZ1AxeHVJQ0FnSUNBZ0lDQWdJRnRqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sTG1kbGRDaGhiV2x1Ynlrc0lHRnRhVzV2TENCcGJtNWxjazF2Ym05dFpYSXNJRE5kSURwY2JpQWdJQ0FnSUNBZ0lDQmJkR2hwY3k1MWJtUmxabWx1WldSRGIyeHZjaXdnYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWElzSUROZE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeVd6QmRQeTUwYjB4dmQyVnlRMkZ6WlNncElEMDlJRzF2Ym05dFpYSmJNRjBwSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxuTjFZbk4wY21sdVp5Z3hMQ0F6S1NCcGJpQjBhR2x6TGtGQlJuVnNiRTVoYldWektTQjdYRzRnSUNBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBMElIeDhJRzF2Ym05dFpYSmJORjBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWVcxcGJtOGdQU0IwYUdsekxrRkJSblZzYkU1aGJXVnpXMjF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREVzSURNcFhUdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZVzFwYm04Z2FXNGdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0EvWEc0Z0lDQWdJQ0FnSUNBZ0lDQmJZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaUzVuWlhRb1lXMXBibThwTENCaGJXbHVieXdnYVc1dVpYSk5iMjV2YldWeUxDQTBYU0E2WEc0Z0lDQWdJQ0FnSUNBZ0lDQmJkR2hwY3k1MWJtUmxabWx1WldSRGIyeHZjaXdnYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWElzSURSZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUZ0MGFHbHpMblZ1WkdWbWFXNWxaRU52Ykc5eUxDQnZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNpd2dNRjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCkge1xuICAgICAgICBpZiAodGhpcy5jaHJvbWF0b2dyYW0gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5jaHJvbWF0b2dyYW0gPSBuZXcgTnVjbGVvdGlkZXNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAgICAgICAgICdDJzogJ2JsdWUnLFxuICAgICAgICAgICAgICAgICdHJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAnVCc6ICdyZWQnLCAnVSc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnZ3JheScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaHJvbWF0b2dyYW07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE51Y2xlb3RpZGVzIHtcbn1cbk51Y2xlb3RpZGVzLlNlbVR5cGUgPSAnTnVjbGVvdGlkZXMnO1xuTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ051Y2xlb3RpZGVzTXVsdGlwbGVBbGlnbm1lbnQnO1xuTnVjbGVvdGlkZXMuTmFtZXMgPSB7XG4gICAgJ0EnOiAnQWRlbmluZScsXG4gICAgJ0MnOiAnQ3l0b3NpbmUnLFxuICAgICdHJzogJ0d1YW5pbmUnLFxuICAgICdUJzogJ1RoeW1pbmUnLFxuICAgICdVJzogJ1VyYWNpbCcsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYm5WamJHVnZkR2xrWlhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp1ZFdOc1pXOTBhV1JsY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkxRU3hQUVVGUExFVkJRV0VzWTBGQll5eEZRVUZETEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGRk1VUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdOQlFXTTdTVUZIT1VNc1RVRkJUU3hMUVVGTExGbEJRVms3VVVGRE5VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hMUVVGTExFdEJRVXNzUTBGQlF5eEZRVUZGTzFsQlEyaERMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJRenRuUWtGRE1VTXNSMEZCUnl4RlFVRkZMRTlCUVU4N1owSkJRMW9zUjBGQlJ5eEZRVUZGTEUxQlFVMDdaMEpCUTFnc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVVzUzBGQlN6dG5Ra0ZEZEVJc1VVRkJVU3hGUVVGRkxFMUJRVTA3WVVGRGFrSXNRMEZCUXl4RFFVRkRPMU5CUTBvN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdTVUZETTBJc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeFBRVUZQTEZkQlFWYzdPMEZCUTA0c2JVSkJRVThzUjBGQlZ5eGhRVUZoTEVOQlFVTTdRVUZGYUVNc2IwTkJRWGRDTEVkQlFWY3NPRUpCUVRoQ0xFTkJRVU03UVVGRmNFVXNhVUpCUVVzc1IwRkJjVUk3U1VGRGRFTXNSMEZCUnl4RlFVRkZMRk5CUVZNN1NVRkRaQ3hIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNVVUZCVVR0RFFVTmtMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxTjBjbWx1WjBScFkzUnBiMjVoY25sOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaU3dnVTJWeFVHRnNaWFIwWlVKaGMyVjlJR1p5YjIwZ0p5NHZjMlZ4TFhCaGJHVjBkR1Z6Snp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhNZ1pYaDBaVzVrY3lCVFpYRlFZV3hsZEhSbFFtRnpaU0I3WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdOb2NtOXRZWFJ2WjNKaGJUb2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQkRhSEp2YldGMGIyZHlZVzBvS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0SUQwZ2JtVjNJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1vZTF4dUlDQWdJQ0FnSUNBblFTYzZJQ2RuY21WbGJpY3NYRzRnSUNBZ0lDQWdJQ2RESnpvZ0oySnNkV1VuTEZ4dUlDQWdJQ0FnSUNBblJ5YzZJQ2RpYkdGamF5Y3NJQzh2SUc5eVlXNW5aU0EvWEc0Z0lDQWdJQ0FnSUNkVUp6b2dKM0psWkNjc0lDZFZKem9nSjNKbFpDY3NYRzRnSUNBZ0lDQWdJQ2R2ZEdobGNuTW5PaUFuWjNKaGVTY3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMmh5YjIxaGRHOW5jbUZ0TzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJPZFdOc1pXOTBhV1JsY3lCN1hHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbE9pQnpkSEpwYm1jZ1BTQW5UblZqYkdWdmRHbGtaWE1uTzF4dVhHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbFRYVnNkR2x3YkdWQmJHbG5ibTFsYm5RNklITjBjbWx1WnlBOUlDZE9kV05zWlc5MGFXUmxjMDExYkhScGNHeGxRV3hwWjI1dFpXNTBKenRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUU1aGJXVnpPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RCSnpvZ0owRmtaVzVwYm1VbkxGeHVJQ0FnSUNkREp6b2dKME41ZEc5emFXNWxKeXhjYmlBZ0lDQW5SeWM2SUNkSGRXRnVhVzVsSnl4Y2JpQWdJQ0FuVkNjNklDZFVhSGx0YVc1bEp5eGNiaUFnSUNBblZTYzZJQ2RWY21GamFXd25MRnh1SUNCOU8xeHVmVnh1SWwxOSIsImV4cG9ydCBjbGFzcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgY29uc3RydWN0b3IocGFsZXR0ZSkge1xuICAgICAgICB0aGlzLl9wYWxldHRlID0gcGFsZXR0ZTtcbiAgICB9XG4gICAgc3RhdGljIG1ha2VQYWxldHRlKGR0LCBzaW1wbGlmaWVkID0gZmFsc2UsIFBhbGV0dGVUeXBlID0gU2VxUGFsZXR0ZUJhc2UpIHtcbiAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHt9O1xuICAgICAgICBkdC5mb3JFYWNoKChjcCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2JqTGlzdCA9IGNwWzBdO1xuICAgICAgICAgICAgY29uc3QgY29sb3VyID0gY3BbMV07XG4gICAgICAgICAgICBvYmpMaXN0LmZvckVhY2goKG9iaiwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFsZXR0ZVtvYmpdID0gdGhpcy5jb2xvdXJQYWxldHRlW2NvbG91cl1bc2ltcGxpZmllZCA/IDAgOiBpbmRdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IFBhbGV0dGVUeXBlKHBhbGV0dGUpO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFsZXR0ZVttXTtcbiAgICB9XG59XG4vKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9yc1xuICovXG5TZXFQYWxldHRlQmFzZS5jb2xvdXJQYWxldHRlID0ge1xuICAgICdvcmFuZ2UnOiBbJ3JnYigyNTUsMTg3LDEyMCknLCAncmdiKDI0NSwxNjcsMTAwKScsICdyZ2IoMjM1LDEzNyw3MCknLCAncmdiKDIwNSwgMTExLCA3MSknXSxcbiAgICAnYWxsX2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KScsICdyZ2IoMjMsMTAzLDU3KScsICdyZ2IoMzAsMTEwLDk2KScsICdyZ2IoNjAsMTMxLDk1KScsXG4gICAgICAgICdyZ2IoMjQsMTEwLDc5KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnYWxsX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDEyMiwgMTAyLCAxODkpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDE0MSwgMTI0LCAyMTcpJyxcbiAgICAgICAgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ21hZ2VudGEnOiBbJ3JnYigxNjIsMTA2LDE5MiknLCAncmdiKDE5NywxNjUsMjI0KScsICdyZ2IoMjA4LDExMywyMTgpJ10sXG4gICAgJ3JlZCc6IFsncmdiKDIxNCwzOSw0MCknLCAncmdiKDI1NSwxNTIsMTUwKSddLFxuICAgICdzdF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMzEsMTE5LDE4MCknXSxcbiAgICAnZGFya19ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbGlnaHRfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDEwOCwgMjE4LCAyMjkpJywgJ3JnYigyMywxOTAsMjI3KSddLFxuICAgICdsaWxhY19ibHVlJzogWydyZ2IoMTI0LDEwMiwyMTEpJywgJ3JnYigxNDksMTM0LDIxNyknLCAncmdiKDk3LCA4MSwgMTUwKSddLFxuICAgICdkYXJrX2dyZWVuJzogWydyZ2IoMjMsMTAzLDU3KScsICdyZ2IoMzAsMTEwLDk2KScsICdyZ2IoNjAsMTMxLDk1KScsICdyZ2IoMjQsMTEwLDc5KSddLFxuICAgICdncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAnbGlnaHRfZ3JlZW4nOiBbJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdzdF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMzksIDE3NCwgOTYpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ3BpbmsnOiBbJ3JnYigyNDcsMTgyLDIxMCknXSxcbiAgICAnYnJvd24nOiBbJ3JnYigxNDAsODYsNzUpJywgJ3JnYigxMDIsIDYyLCA1NCknXSxcbiAgICAnZ3JheSc6IFsncmdiKDEyNywxMjcsMTI3KScsICdyZ2IoMTk5LDE5OSwxOTkpJywgJ3JnYigxOTYsMTU2LDE0OCknLCAncmdiKDIyMiwgMjIyLCAxODApJ10sXG4gICAgJ3llbGxvdyc6IFsncmdiKDE4OCwxODksMzQpJ10sXG4gICAgJ3doaXRlJzogWydyZ2IoMjMwLDIzMCwyMzApJ10sXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWeExYQmhiR1YwZEdWekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYzJWeExYQmhiR1YwZEdWekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRV2xDUVN4TlFVRk5MRTlCUVU4c1kwRkJZenRKUVRCRGVrSXNXVUZCV1N4UFFVRm5RenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVNeFFpeERRVUZETzBsQmJFSlRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQmQwSXNSVUZEYmtRc1ZVRkJWU3hIUVVGSExFdEJRVXNzUlVGQlJTeGpRVUZ4UXl4alFVRmpPMUZCUlhaRkxFMUJRVTBzVDBGQlR5eEhRVUU0UWl4RlFVRkZMRU5CUVVNN1VVRkRPVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRk8xbEJRMmhDTEUxQlFVMHNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tJc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSVHRuUWtGRE0wSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnhGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTB3c1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFBRVUZQTEVsQlFVa3NWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRMnhETEVOQlFVTTdTVUZSVFN4SFFVRkhMRU5CUVVNc1EwRkJVenRSUVVOc1FpeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE1VSXNRMEZCUXpzN1FVRXZRMFE3UjBGRFJ6dEJRVU5YTERSQ1FVRmhMRWRCUVdkRE8wbEJRM3BFTEZGQlFWRXNSVUZCUlN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFpeERRVUZETzBsQlF6RkdMRmRCUVZjc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFqdFJRVU53Unl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU51Uml4VlFVRlZMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3VVVGREwwY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGRFSXNVMEZCVXl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRka1VzUzBGQlN5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkROME1zVTBGQlV5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZEY2tVc1YwRkJWeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTTdTVUZEY2tRc1dVRkJXU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRPVVlzV1VGQldTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRkRVlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkROME1zWVVGQllTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETDBVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRlRVlzVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03U1VGRE5VSXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGREwwTXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETVVZc1VVRkJVU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1NVRkROMElzVDBGQlR5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03UTBGRE9VSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUM4dklGUm9aWEpsSUdGeVpTQjBiMjhnYlhWamFDQndjbTlpYkdWdElIZHBkR2dnYVc1a1pYaGxjaUJ3Y205d1pYSjBlU0JwYmlCMGVYQmxjMk55YVhCMExseHVJQ0F2THlBdktpcGNiaUFnTHk4Z0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNpQmphR0Z5WVdOMFpYSmNiaUFnTHk4Z0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMnh2Y2x4dUlDQXZMeUFnS2k5Y2JpQWdMeThnVzIwNklITjBjbWx1WjEwNklITjBjbWx1Wnp0Y2JpQWdMeW9xSUUxdmJtOXRaWElnWTI5c2IzSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2x4dUlDQWdLaTljYmlBZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaenRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZObGNWQmhiR1YwZEdWQ1lYTmxJR2x0Y0d4bGJXVnVkSE1nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQzhxS2lCUVlXeGxkSFJsSUhkcGRHZ2djMmhoWkdWeklHOW1JSEJ5YVcxaGNua2dZMjlzYjNKelhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdOdmJHOTFjbEJoYkdWMGRHVTZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1blcxMGdmU0E5SUh0Y2JpQWdJQ0FuYjNKaGJtZGxKem9nV3lkeVoySW9NalUxTERFNE55d3hNakFwSnl3Z0ozSm5ZaWd5TkRVc01UWTNMREV3TUNrbkxDQW5jbWRpS0RJek5Td3hNemNzTnpBcEp5d2dKM0puWWlneU1EVXNJREV4TVN3Z056RXBKMTBzWEc0Z0lDQWdKMkZzYkY5bmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuTENBbmNtZGlLREl6TERFd015dzFOeWtuTENBbmNtZGlLRE13TERFeE1DdzVOaWtuTENBbmNtZGlLRFl3TERFek1TdzVOU2tuTEZ4dUlDQWdJQ0FnSjNKbllpZ3lOQ3d4TVRBc056a3BKeXdnSjNKbllpZ3hOVElzTWpJekxERXpPQ2tuTENBbmNtZGlLREU0TWl3Z01qSXpMQ0F4TXpncEp5d2dKM0puWWlneE5USXNJREU1TXl3Z01UTTRLU2RkTEZ4dUlDQWdJQ2RoYkd4ZllteDFaU2M2SUZzbmNtZGlLRE14TERFeE9Td3hPREFwSnl3Z0ozSm5ZaWd5TXl3eE9UQXNNakEzS1Njc0lDZHlaMklvTVRJeUxDQXhNRElzSURFNE9Ta25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NVFF4TENBeE1qUXNJREl4TnlrbkxGeHVJQ0FnSUNBZ0ozSm5ZaWd6TVN3Z01USXdMQ0F4TlRBcEoxMHNYRzRnSUNBZ0oyMWhaMlZ1ZEdFbk9pQmJKM0puWWlneE5qSXNNVEEyTERFNU1pa25MQ0FuY21kaUtERTVOeXd4TmpVc01qSTBLU2NzSUNkeVoySW9NakE0TERFeE15d3lNVGdwSjEwc1hHNGdJQ0FnSjNKbFpDYzZJRnNuY21kaUtESXhOQ3d6T1N3ME1Da25MQ0FuY21kaUtESTFOU3d4TlRJc01UVXdLU2RkTEZ4dUlDQWdJQ2R6ZEY5aWJIVmxKem9nV3lkeVoySW9Nak1zTVRrd0xESXdOeWtuTENBbmNtZGlLREUxT0N3eU1UZ3NNakk1S1Njc0lDZHlaMklvTXpFc01URTVMREU0TUNrblhTeGNiaUFnSUNBblpHRnlhMTlpYkhWbEp6b2dXeWR5WjJJb016RXNNVEU1TERFNE1Da25MQ0FuY21kaUtETXhMQ0F4TWpBc0lERTFNQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZZbXgxWlNjNklGc25jbWRpS0RJekxERTVNQ3d5TURjcEp5d2dKM0puWWlneE5UZ3NNakU0TERJeU9Ta25MQ0FuY21kaUtERXdPQ3dnTWpFNExDQXlNamtwSnl3Z0ozSm5ZaWd5TXl3eE9UQXNNakkzS1NkZExGeHVJQ0FnSUNkc2FXeGhZMTlpYkhWbEp6b2dXeWR5WjJJb01USTBMREV3TWl3eU1URXBKeXdnSjNKbllpZ3hORGtzTVRNMExESXhOeWtuTENBbmNtZGlLRGszTENBNE1Td2dNVFV3S1NkZExGeHVJQ0FnSUNka1lYSnJYMmR5WldWdUp6b2dXeWR5WjJJb01qTXNNVEF6TERVM0tTY3NJQ2R5WjJJb016QXNNVEV3TERrMktTY3NJQ2R5WjJJb05qQXNNVE14TERrMUtTY3NJQ2R5WjJJb01qUXNNVEV3TERjNUtTZGRMRnh1SUNBZ0lDZG5jbVZsYmljNklGc25jbWRpS0RRMExERTJNQ3cwTkNrbkxDQW5jbWRpS0RjMExERTJNQ3czTkNrblhTeGNiaUFnSUNBbmJHbG5hSFJmWjNKbFpXNG5PaUJiSjNKbllpZ3hOVElzTWpJekxERXpPQ2tuTENBbmNtZGlLREU0TWl3Z01qSXpMQ0F4TXpncEp5d2dKM0puWWlneE5USXNJREU1TXl3Z01UTTRLU2RkTEZ4dUlDQWdJQ2R6ZEY5bmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLREUxTWl3eU1qTXNNVE00S1Njc0lDZHlaMklvTXprc0lERTNOQ3dnT1RZcEp5d2dKM0puWWlnM05Dd3hOakFzTnpRcEoxMHNYRzRnSUNBZ0ozQnBibXNuT2lCYkozSm5ZaWd5TkRjc01UZ3lMREl4TUNrblhTeGNiaUFnSUNBblluSnZkMjRuT2lCYkozSm5ZaWd4TkRBc09EWXNOelVwSnl3Z0ozSm5ZaWd4TURJc0lEWXlMQ0ExTkNrblhTeGNiaUFnSUNBblozSmhlU2M2SUZzbmNtZGlLREV5Tnl3eE1qY3NNVEkzS1Njc0lDZHlaMklvTVRrNUxERTVPU3d4T1RrcEp5d2dKM0puWWlneE9UWXNNVFUyTERFME9Da25MQ0FuY21kaUtESXlNaXdnTWpJeUxDQXhPREFwSjEwc1hHNGdJQ0FnSjNsbGJHeHZkeWM2SUZzbmNtZGlLREU0T0N3eE9Ea3NNelFwSjEwc1hHNGdJQ0FnSjNkb2FYUmxKem9nV3lkeVoySW9Nak13TERJek1Dd3lNekFwSjEwc1hHNGdJSDA3WEc1Y2JpQWdjSEp2ZEdWamRHVmtJSE4wWVhScFl5QnRZV3RsVUdGc1pYUjBaU2hrZERvZ1czTjBjbWx1WjF0ZExDQnpkSEpwYm1kZFcxMHNYRzRnSUNBZ2MybHRjR3hwWm1sbFpDQTlJR1poYkhObExDQlFZV3hsZEhSbFZIbHdaVG9nZEhsd1pXOW1JRk5sY1ZCaGJHVjBkR1ZDWVhObElEMGdVMlZ4VUdGc1pYUjBaVUpoYzJWY2JpQWdLU0I3WEc0Z0lDQWdZMjl1YzNRZ2NHRnNaWFIwWlRvZ2V5QmJhMlY1T2lCemRISnBibWRkT2lCemRISnBibWNnZlNBOUlIdDlPMXh1SUNBZ0lHUjBMbVp2Y2tWaFkyZ29LR053S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdlltcE1hWE4wSUQwZ1kzQmJNRjA3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMnh2ZFhJZ1BTQmpjRnN4WFR0Y2JpQWdJQ0FnSUc5aWFreHBjM1F1Wm05eVJXRmphQ2dvYjJKcUxDQnBibVFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdjR0ZzWlhSMFpWdHZZbXBkSUQwZ2RHaHBjeTVqYjJ4dmRYSlFZV3hsZEhSbFcyTnZiRzkxY2wxYmMybHRjR3hwWm1sbFpDQS9JREFnT2lCcGJtUmRPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJRWVd4bGRIUmxWSGx3WlNod1lXeGxkSFJsS1R0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gzQmhiR1YwZEdVNklIc2dXMjA2SUhOMGNtbHVaMTA2SUhOMGNtbHVaeUI5TzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0hCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlLU0I3WEc0Z0lDQWdkR2hwY3k1ZmNHRnNaWFIwWlNBOUlIQmhiR1YwZEdVN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNCaGJHVjBkR1ZiYlYwN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuY2xhc3MgU2lkZUNoYWluU2NhbGVzIHtcbiAgICBzdGF0aWMgZ2V0QXZhaWxhYmxlU2NhbGVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5zY2FsZXMpLm1hcCgoW2ssIF9dKSA9PiBrKTtcbiAgICB9XG4gICAgc3RhdGljIGdldFNjYWxlKG5hbWUpIHtcbiAgICAgICAgYXNzZXJ0KCEodGhpcy5zY2FsZXNbbmFtZV0gPT09IHVuZGVmaW5lZCksIGBTY2FsZSAnJHtuYW1lfScgd2FzIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVzW25hbWVdO1xuICAgIH1cbn1cblNpZGVDaGFpblNjYWxlcy5zY2FsZXMgPSB7XG4gICAgLy8gV2ltbGV5LVdoaXRlIGludGVyZmFjaWFsIGh5ZHJvcGhvYmljaXR5IHNjYWxlXG4gICAgJ1dpbWxleVdoaXRlJzoge1xuICAgICAgICAnLSc6IDAsXG4gICAgICAgICdBJzogMC4xNyxcbiAgICAgICAgJ0MnOiAtMC4yNCxcbiAgICAgICAgJ0QnOiAtMC4wNyxcbiAgICAgICAgJ0UnOiAtMC4wMSxcbiAgICAgICAgJ0YnOiAtMS4xMyxcbiAgICAgICAgJ0cnOiAwLjAxLFxuICAgICAgICAnSCc6IDAuMTcsXG4gICAgICAgICdJJzogLTAuMzEsXG4gICAgICAgICdLJzogMC45OSxcbiAgICAgICAgJ0wnOiAtMC41NixcbiAgICAgICAgJ00nOiAtMC4yMyxcbiAgICAgICAgJ04nOiAwLjQyLFxuICAgICAgICAnUCc6IDAuNDUsXG4gICAgICAgICdRJzogMC41OCxcbiAgICAgICAgJ1InOiAwLjgxLFxuICAgICAgICAnUyc6IDAuMTMsXG4gICAgICAgICdUJzogMC4xNCxcbiAgICAgICAgJ1YnOiAwLjA3LFxuICAgICAgICAnVyc6IC0xLjg1LFxuICAgICAgICAnWSc6IC0wLjk0LFxuICAgIH0sXG4gICAgJ2NhdGVnb3JpYWwnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAxLFxuICAgICAgICAnQyc6IDIsXG4gICAgICAgICdEJzogMyxcbiAgICAgICAgJ0UnOiA0LFxuICAgICAgICAnRic6IDUsXG4gICAgICAgICdHJzogNixcbiAgICAgICAgJ0gnOiA3LFxuICAgICAgICAnSSc6IDgsXG4gICAgICAgICdLJzogOSxcbiAgICAgICAgJ0wnOiAxMCxcbiAgICAgICAgJ00nOiAxMSxcbiAgICAgICAgJ04nOiAxMixcbiAgICAgICAgJ1AnOiAxMyxcbiAgICAgICAgJ1EnOiAxNCxcbiAgICAgICAgJ1InOiAxNSxcbiAgICAgICAgJ1MnOiAxNixcbiAgICAgICAgJ1QnOiAxNyxcbiAgICAgICAgJ1YnOiAxOCxcbiAgICAgICAgJ1cnOiAxOSxcbiAgICAgICAgJ1knOiAyMCxcbiAgICB9LFxufTtcbi8qKlxuICogQ2xhc3MgdG8gY2F0ZWdvcmlhbCBlbmNvZGUvZGVjb2RlIGFsaWduZWQgYW1pbm8gYWNpZCByZXNpZHVlcyBzZXF1ZW5jZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICovXG5leHBvcnQgY2xhc3MgQWxpZ25lZFNlcXVlbmNlRW5jb2RlciB7XG4gICAgY29uc3RydWN0b3Ioc2NhbGUgPSAnY2F0ZWdvcmlhbCcpIHtcbiAgICAgICAgdGhpcy5hYTJudW0gPSBTaWRlQ2hhaW5TY2FsZXMuZ2V0U2NhbGUoc2NhbGUpO1xuICAgICAgICB0aGlzLm51bTJhYSA9IHt9O1xuICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLmFhMm51bSkuZm9yRWFjaCgoW2ssIHZdKSA9PiAodGhpcy5udW0yYWFbdl0gPSBrKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogVHJ1bmNhdGUgTkgyIGFuZCAtQ09PSCB0ZXJtaW5hbHMgb2YgdGhlIGdpdmVuIHNlcXVlbmNlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHByb3ZpZGVkLlxuICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUcnVuY2F0ZWQgc2VxdWVuY2UuXG4gICAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICAgICAgICovXG4gICAgc3RhdGljIF90cnVuY2F0ZVNlcXVlbmNlKHNlcSkge1xuICAgICAgICBsZXQgc3RhcnQgPSAwO1xuICAgICAgICBsZXQgZW5kID0gc2VxLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGVybWluYSA9IFsnTkgyJywgJ0NPT0gnXTtcbiAgICAgICAgaWYgKHNlcS5zdGFydHNXaXRoKHRlcm1pbmFbMF0pKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gdGVybWluYVswXS5sZW5ndGg7IC8vIEN1dCBvbmx5ICdOSDInIHdpdGhvdXQgZm9sbG93aW5nICctJy5cbiAgICAgICAgICAgIGFzc2VydChzZXFbbF0gPT0gJy0nLCBgV3Jvbmcgc2VxdWVuY2UgZm9ybWF0OiAke3Rlcm1pbmFbMF19IHdpdGhvdXQgZm9sbG93aW5nICctJyBpbiAnJHtzZXF9Jy5gKTtcbiAgICAgICAgICAgIHN0YXJ0ID0gbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VxLmVuZHNXaXRoKHRlcm1pbmFbMV0pKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gdGVybWluYVsxXS5sZW5ndGggKyAxOyAvLyBDdXQgYm90aCAnQ09PSCcgYW5kIHByZWNlbmRpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtlbmQgLSBsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVsxXX0gd2l0aG91dCAnLScgcHJlY2VuZGluZyBpbiAnJHtzZXF9Jy5gKTtcbiAgICAgICAgICAgIGVuZCAtPSBsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXEuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIEN1dHMgYXV4aWxpYXJ5IGRlZmlzZXMgYmVmb3JlIGEgcmVzaWR1ZS5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxIFRoZSBzZXF1ZW5jZSB0byBwcm9jZXNzLlxuICAgICAgICogQHJldHVybiB7c3RyaW5nfSBQcm9jZXNzZWQgc2VxdWVuY2UuXG4gICAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICAgICAgICovXG4gICAgc3RhdGljIF9kcm9wRGVmaXNlcyhzZXEpIHtcbiAgICAgICAgcmV0dXJuIHNlcS5yZXBsYWNlKC8oLSkoW14tXSspL2csICckMicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIFBlcmZvcm1zIHRydW5jYXRpb24gYW5kIGN1dHRpbmcgYXV4aWxpYXJ5IGRlZmlzZXMuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcXVlbmNlIFRoZSBzZXF1ZW5jZSB3b3JrIHVuZGVyIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFJlc3VsdCBvZiBjbGVhbmluZy5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgY2xlYW4oc2VxdWVuY2UpIHtcbiAgICAgICAgcmV0dXJuIEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuX2Ryb3BEZWZpc2VzKEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuX3RydW5jYXRlU2VxdWVuY2Uoc2VxdWVuY2UpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBDYXRlZ29yaWFsIGVuY29kZSBvZiB0aGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcXVlbmNlIFRoZSBzZXF1ZW5jZS5cbiAgICAgICAqIEByZXR1cm4ge251bWJlcltdfSBFbmNvZGVkIHZlY3Rvci5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBlbmNvZGUoc2VxdWVuY2UpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gc2VxdWVuY2UubGVuZ3RoO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBuZXcgQXJyYXkobkl0ZW1zKS5maWxsKDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyID0gc2VxdWVuY2VbaV07XG4gICAgICAgICAgICBhc3NlcnQoY2hhciBpbiB0aGlzLmFhMm51bSwgYFVua25vd24gY2hhciAnJHtjaGFyfScgZm91bmQgaW4gc2VxdWVuY2UgJyR7c2VxdWVuY2V9J2ApO1xuICAgICAgICAgICAgdmFsdWVzW2ldID0gdGhpcy5lbmNvZGVMZXR0dGVyKGNoYXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuICAgIGVuY29kZUxldHR0ZXIobGV0dGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFhMm51bVtsZXR0ZXJdO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIERlY29kZSB0aGUgZW5jb2RlZCB2ZWN0b3IgaW50byB0aGUgc2VxdWVuY2UgYmFjay5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge251bWJlcltdfSB2YWx1ZSBUaGUgdmVjdG9yIGVuY29kZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IERlY29kZWQgc2VxdWVuY2UuXG4gICAgICAgKiBAbWVtYmVyb2YgQWxpZ25lZFNlcXVlbmNlRW5jb2RlclxuICAgICAgICovXG4gICAgZGVjb2RlKHZhbHVlKSB7XG4gICAgICAgIGxldCBzID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZGUgPSB2YWx1ZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjb2RlIGluIHRoaXMubnVtMmFhLCBgVW5rbm93biBjb2RlICcke2NvZGV9JyBmb3VuZCBpbiB2ZWN0b3IgJyR7dmFsdWV9J2ApO1xuICAgICAgICAgICAgcyArPSB0aGlzLm51bTJhYVtjb2RlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRaVzVqYjJSbGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5ObGNYVmxibU5sTFdWdVkyOWtaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4RlFVRkRMRTFCUVUwc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUzNaRkxFMUJRVTBzWlVGQlpUdEpRVzFFYmtJc1RVRkJUU3hEUVVGRExHdENRVUZyUWp0UlFVTjJRaXhQUVVGUExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRSQ3hEUVVGRE8wbEJSVVFzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRlpPMUZCUXpGQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eFRRVUZUTEVOQlFVTXNSVUZCUlN4VlFVRlZMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0UlFVTTNSU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNMElzUTBGQlF6czdRVUY2UkUwc2MwSkJRVTBzUjBGQk5rSTdTVUZEZUVNc1owUkJRV2RFTzBsQlEyaEVMR0ZCUVdFc1JVRkJSVHRSUVVOaUxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRU5CUVVNc1NVRkJTVHRSUVVOV0xFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVazdVVUZEVml4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1NVRkJTVHRSUVVOVUxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVazdVVUZEVml4SFFVRkhMRVZCUVVVc1NVRkJTVHRSUVVOVUxFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVazdVVUZEVml4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1NVRkJTVHRSUVVOVUxFZEJRVWNzUlVGQlJTeEpRVUZKTzFGQlExUXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdExRVU5ZTzBsQlEwUXNXVUZCV1N4RlFVRkZPMUZCUTFvc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8wdEJRMUk3UTBGRFJpeERRVUZETzBGQldVbzdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRTlCUVU4c2MwSkJRWE5DTzBsQlNXcERMRmxCUVZrc1VVRkJaMElzV1VGQldUdFJRVU4wUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExHVkJRV1VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRPVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRha0lzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoRkxFTkJRVU03U1VGRlJEczdPenM3T3p0VFFVOUxPMGxCUTB3c1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWRCUVZjN1VVRkRiRU1zU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJRc1NVRkJTU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnlRaXhOUVVGTkxFOUJRVThzUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVWb1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZET1VJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExIZERRVUYzUXp0WlFVTnlSU3hOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1JVRkJSU3d3UWtGQk1FSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXc0UWtGQk9FSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVOcVJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTFnN1VVRkRSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGRE5VSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh6UTBGQmMwTTdXVUZEY2tVc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRkxEQkNRVUV3UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExDdENRVUVyUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM1JITEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRWanRSUVVORUxFOUJRVThzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGJrTXNRMEZCUXp0SlFVVkVPenM3T3pzN08xTkJUMHM3U1VGRFRDeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVZjN1VVRkROMElzVDBGQlR5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU14UXl4RFFVRkRPMGxCUlVRN096czdPenM3VTBGUFN6dEpRVU5NTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJaMEk3VVVGRE0wSXNUMEZCVHl4elFrRkJjMElzUTBGQlF5eFpRVUZaTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUnl4RFFVRkRPMGxCUlVRN096czdPenRUUVUxTE8wbEJRMFVzVFVGQlRTeERRVUZETEZGQlFXZENPMUZCUXpWQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRMMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhwRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETDBJc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUlhwQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hwUWtGQmFVSXNTVUZCU1N4M1FrRkJkMElzVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVjBSaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU4wUXp0UlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGVFN4aFFVRmhMRU5CUVVNc1RVRkJZenRSUVVOcVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRE4wSXNRMEZCUXp0SlFVVkVPenM3T3pzN1UwRk5TenRKUVVORkxFMUJRVTBzUTBGQlF5eExRVUZsTzFGQlF6TkNMRWxCUVVrc1EwRkJReXhIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVZ1UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU55UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGZEVJc1RVRkJUU3hEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMR2xDUVVGcFFpeEpRVUZKTEhOQ1FVRnpRaXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlJXcEdMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTNoQ08xRkJRMFFzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEV0N4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UyRnpjMlZ5ZEgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVYRzUwZVhCbElGTnBaR1ZEYUdGcGJsTmpZV3hsSUQwZ2UxdHVZVzFsT2lCemRISnBibWRkT2lCdWRXMWlaWEo5TzF4dWRIbHdaU0JUYVdSbFEyaGhhVzVUWTJGc1pVTnZiR3hsWTNScGIyNGdQU0I3VzI1aGJXVTZJSE4wY21sdVoxMDZJRk5wWkdWRGFHRnBibE5qWVd4bGZUdGNibHh1WTJ4aGMzTWdVMmxrWlVOb1lXbHVVMk5oYkdWeklIdGNiaUFnYzNSaGRHbGpJSE5qWVd4bGN6b2dVMmxrWlVOb1lXbHVVMk5oYkdWRGIyeHNaV04wYVc5dUlEMGdlMXh1SUNBZ0lDOHZJRmRwYld4bGVTMVhhR2wwWlNCcGJuUmxjbVpoWTJsaGJDQm9lV1J5YjNCb2IySnBZMmwwZVNCelkyRnNaVnh1SUNBZ0lDZFhhVzFzWlhsWGFHbDBaU2M2SUh0Y2JpQWdJQ0FnSUNjdEp6b2dNQ3hjYmlBZ0lDQWdJQ2RCSnpvZ01DNHhOeXhjYmlBZ0lDQWdJQ2RESnpvZ0xUQXVNalFzWEc0Z0lDQWdJQ0FuUkNjNklDMHdMakEzTENBdkx5QkJjM0F0T2lBeExqSXpYRzRnSUNBZ0lDQW5SU2M2SUMwd0xqQXhMQ0F2THlCSGJIVXRPaUF5TGpBeVhHNGdJQ0FnSUNBblJpYzZJQzB4TGpFekxDQXZMMXh1SUNBZ0lDQWdKMGNuT2lBd0xqQXhMRnh1SUNBZ0lDQWdKMGduT2lBd0xqRTNMQ0F2THlCSWFYTXJPaUF3TGprMlhHNGdJQ0FnSUNBblNTYzZJQzB3TGpNeExGeHVJQ0FnSUNBZ0owc25PaUF3TGprNUxDQXZMeUJNZVhNclhHNGdJQ0FnSUNBblRDYzZJQzB3TGpVMkxGeHVJQ0FnSUNBZ0owMG5PaUF0TUM0eU15eGNiaUFnSUNBZ0lDZE9Kem9nTUM0ME1peGNiaUFnSUNBZ0lDZFFKem9nTUM0ME5TeGNiaUFnSUNBZ0lDZFJKem9nTUM0MU9DeGNiaUFnSUNBZ0lDZFNKem9nTUM0NE1Td2dMeThnUVhKbksxeHVJQ0FnSUNBZ0oxTW5PaUF3TGpFekxGeHVJQ0FnSUNBZ0oxUW5PaUF3TGpFMExGeHVJQ0FnSUNBZ0oxWW5PaUF3TGpBM0xGeHVJQ0FnSUNBZ0oxY25PaUF0TVM0NE5TeGNiaUFnSUNBZ0lDZFpKem9nTFRBdU9UUXNYRzRnSUNBZ2ZTeGNiaUFnSUNBblkyRjBaV2R2Y21saGJDYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTVN4Y2JpQWdJQ0FnSUNkREp6b2dNaXhjYmlBZ0lDQWdJQ2RFSnpvZ015eGNiaUFnSUNBZ0lDZEZKem9nTkN4Y2JpQWdJQ0FnSUNkR0p6b2dOU3hjYmlBZ0lDQWdJQ2RISnpvZ05peGNiaUFnSUNBZ0lDZElKem9nTnl4Y2JpQWdJQ0FnSUNkSkp6b2dPQ3hjYmlBZ0lDQWdJQ2RMSnpvZ09TeGNiaUFnSUNBZ0lDZE1Kem9nTVRBc1hHNGdJQ0FnSUNBblRTYzZJREV4TEZ4dUlDQWdJQ0FnSjA0bk9pQXhNaXhjYmlBZ0lDQWdJQ2RRSnpvZ01UTXNYRzRnSUNBZ0lDQW5VU2M2SURFMExGeHVJQ0FnSUNBZ0oxSW5PaUF4TlN4Y2JpQWdJQ0FnSUNkVEp6b2dNVFlzWEc0Z0lDQWdJQ0FuVkNjNklERTNMRnh1SUNBZ0lDQWdKMVluT2lBeE9DeGNiaUFnSUNBZ0lDZFhKem9nTVRrc1hHNGdJQ0FnSUNBbldTYzZJREl3TEZ4dUlDQWdJSDBzWEc0Z0lIMDdYRzVjYmlBZ2MzUmhkR2xqSUdkbGRFRjJZV2xzWVdKc1pWTmpZV3hsY3lncE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVsYm5SeWFXVnpLSFJvYVhNdWMyTmhiR1Z6S1M1dFlYQW9LRnRyTENCZlhTa2dQVDRnYXlrN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1oyVjBVMk5oYkdVb2JtRnRaVG9nYzNSeWFXNW5LVG9nVTJsa1pVTm9ZV2x1VTJOaGJHVWdlMXh1SUNBZ0lHRnpjMlZ5ZENnaEtIUm9hWE11YzJOaGJHVnpXMjVoYldWZElEMDlQU0IxYm1SbFptbHVaV1FwTENCZ1UyTmhiR1VnSnlSN2JtRnRaWDBuSUhkaGN5QnViM1FnWm05MWJtUXVZQ2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YzJOaGJHVnpXMjVoYldWZE8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dRMnhoYzNNZ2RHOGdZMkYwWldkdmNtbGhiQ0JsYm1OdlpHVXZaR1ZqYjJSbElHRnNhV2R1WldRZ1lXMXBibThnWVdOcFpDQnlaWE5wWkhWbGN5QnpaWEYxWlc1alpTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2x4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQmhZVEp1ZFcwNklGTnBaR1ZEYUdGcGJsTmpZV3hsTzF4dUlDQndjbTkwWldOMFpXUWdiblZ0TW1GaE9pQjdXMk52WkdVNklHNTFiV0psY2wwNklITjBjbWx1WjMwN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2MyTmhiR1U2SUhOMGNtbHVaeUE5SUNkallYUmxaMjl5YVdGc0p5a2dlMXh1SUNBZ0lIUm9hWE11WVdFeWJuVnRJRDBnVTJsa1pVTm9ZV2x1VTJOaGJHVnpMbWRsZEZOallXeGxLSE5qWVd4bEtUdGNiaUFnSUNCMGFHbHpMbTUxYlRKaFlTQTlJSHQ5TzF4dUlDQWdJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11WVdFeWJuVnRLUzVtYjNKRllXTm9LQ2hiYXl3Z2RsMHBJRDArSUNoMGFHbHpMbTUxYlRKaFlWdDJYU0E5SUdzcEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdJQ0FxSUZSeWRXNWpZWFJsSUU1SU1pQmhibVFnTFVOUFQwZ2dkR1Z5YldsdVlXeHpJRzltSUhSb1pTQm5hWFpsYmlCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2x4dUlDQWdJQ0FxSUVCemRHRjBhV05jYmlBZ0lDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjMlZ4SUZSb1pTQnpaWEYxWlc1alpTQndjbTkyYVdSbFpDNWNiaUFnSUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlGUnlkVzVqWVhSbFpDQnpaWEYxWlc1alpTNWNiaUFnSUNBZ0tpQkFiV1Z0WW1WeWIyWWdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2x4dUlDQWdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1gzUnlkVzVqWVhSbFUyVnhkV1Z1WTJVb2MyVnhPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHeGxkQ0J6ZEdGeWRDQTlJREE3WEc0Z0lDQWdiR1YwSUdWdVpDQTlJSE5sY1M1c1pXNW5kR2c3WEc0Z0lDQWdZMjl1YzNRZ2RHVnliV2x1WVNBOUlGc25Ua2d5Snl3Z0owTlBUMGduWFR0Y2JseHVJQ0FnSUdsbUlDaHpaWEV1YzNSaGNuUnpWMmwwYUNoMFpYSnRhVzVoV3pCZEtTa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JDQTlJSFJsY20xcGJtRmJNRjB1YkdWdVozUm9PeUF2THlCRGRYUWdiMjVzZVNBblRrZ3lKeUIzYVhSb2IzVjBJR1p2Ykd4dmQybHVaeUFuTFNjdVhHNGdJQ0FnSUNCaGMzTmxjblFvYzJWeFcyeGRJRDA5SUNjdEp5d2dZRmR5YjI1bklITmxjWFZsYm1ObElHWnZjbTFoZERvZ0pIdDBaWEp0YVc1aFd6QmRmU0IzYVhSb2IzVjBJR1p2Ykd4dmQybHVaeUFuTFNjZ2FXNGdKeVI3YzJWeGZTY3VZQ2s3WEc0Z0lDQWdJQ0J6ZEdGeWRDQTlJR3c3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2h6WlhFdVpXNWtjMWRwZEdnb2RHVnliV2x1WVZzeFhTa3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHd2dQU0IwWlhKdGFXNWhXekZkTG14bGJtZDBhQ3N4T3lBdkx5QkRkWFFnWW05MGFDQW5RMDlQU0NjZ1lXNWtJSEJ5WldObGJtUnBibWNnSnkwbkxseHVJQ0FnSUNBZ1lYTnpaWEowS0hObGNWdGxibVF0YkYwZ1BUMGdKeTBuTENCZ1YzSnZibWNnYzJWeGRXVnVZMlVnWm05eWJXRjBPaUFrZTNSbGNtMXBibUZiTVYxOUlIZHBkR2h2ZFhRZ0p5MG5JSEJ5WldObGJtUnBibWNnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQmxibVFnTFQwZ2JEdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSE5sY1M1emRXSnpkSEpwYm1jb2MzUmhjblFzSUdWdVpDazdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCRGRYUnpJR0YxZUdsc2FXRnllU0JrWldacGMyVnpJR0psWm05eVpTQmhJSEpsYzJsa2RXVXVYRzRnSUNBZ0lDcGNiaUFnSUNBZ0tpQkFjM1JoZEdsalhHNGdJQ0FnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhObGNTQlVhR1VnYzJWeGRXVnVZMlVnZEc4Z2NISnZZMlZ6Y3k1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZCeWIyTmxjM05sWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDJSeWIzQkVaV1pwYzJWektITmxjVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z2MyVnhMbkpsY0d4aFkyVW9MeWd0S1NoYlhpMWRLeWt2Wnl3Z0p5UXlKeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQlFaWEptYjNKdGN5QjBjblZ1WTJGMGFXOXVJR0Z1WkNCamRYUjBhVzVuSUdGMWVHbHNhV0Z5ZVNCa1pXWnBjMlZ6TGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhOMFlYUnBZMXh1SUNBZ0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEYxWlc1alpTQlVhR1VnYzJWeGRXVnVZMlVnZDI5eWF5QjFibVJsY2lCd2NtOWpaWE56TGx4dUlDQWdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnVW1WemRXeDBJRzltSUdOc1pXRnVhVzVuTGx4dUlDQWdJQ0FxSUVCdFpXMWlaWEp2WmlCQmJHbG5ibVZrVTJWeGRXVnVZMlZGYm1OdlpHVnlYRzRnSUNBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJqYkdWaGJpaHpaWEYxWlc1alpUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpNWZaSEp2Y0VSbFptbHpaWE1vUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpNWZkSEoxYm1OaGRHVlRaWEYxWlc1alpTaHpaWEYxWlc1alpTa3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FnSUNvZ1EyRjBaV2R2Y21saGJDQmxibU52WkdVZ2IyWWdkR2hsSUhObGNYVmxibU5sSUhCeWIzWnBaR1ZrTGx4dUlDQWdJQ0FxWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1hWbGJtTmxJRlJvWlNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1JXNWpiMlJsWkNCMlpXTjBiM0l1WEc0Z0lDQWdJQ29nUUcxbGJXSmxjbTltSUVGc2FXZHVaV1JUWlhGMVpXNWpaVVZ1WTI5a1pYSmNiaUFnSUNBZ0tpOWNiaUFnY0hWaWJHbGpJR1Z1WTI5a1pTaHpaWEYxWlc1alpUb2djM1J5YVc1bktUb2diblZ0WW1WeVcxMGdlMXh1SUNBZ0lHTnZibk4wSUc1SmRHVnRjeUE5SUhObGNYVmxibU5sTG14bGJtZDBhRHRjYmlBZ0lDQmpiMjV6ZENCMllXeDFaWE1nUFNCdVpYY2dRWEp5WVhrb2JrbDBaVzF6S1M1bWFXeHNLREFwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaGhjaUE5SUhObGNYVmxibU5sVzJsZE8xeHVYRzRnSUNBZ0lDQmhjM05sY25Rb1kyaGhjaUJwYmlCMGFHbHpMbUZoTW01MWJTd2dZRlZ1YTI1dmQyNGdZMmhoY2lBbkpIdGphR0Z5ZlNjZ1ptOTFibVFnYVc0Z2MyVnhkV1Z1WTJVZ0p5UjdjMlZ4ZFdWdVkyVjlKMkFwTzF4dVhHNGdJQ0FnSUNCMllXeDFaWE5iYVYwZ1BTQjBhR2x6TG1WdVkyOWtaVXhsZEhSMFpYSW9ZMmhoY2lrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjJZV3gxWlhNN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1pXNWpiMlJsVEdWMGRIUmxjaWhzWlhSMFpYSTZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZV0V5Ym5WdFcyeGxkSFJsY2wwN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJFWldOdlpHVWdkR2hsSUdWdVkyOWtaV1FnZG1WamRHOXlJR2x1ZEc4Z2RHaGxJSE5sY1hWbGJtTmxJR0poWTJzdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbHRkZlNCMllXeDFaU0JVYUdVZ2RtVmpkRzl5SUdWdVkyOWtaV1F1WEc0Z0lDQWdJQ29nUUhKbGRIVnliaUI3YzNSeWFXNW5mU0JFWldOdlpHVmtJSE5sY1hWbGJtTmxMbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSEIxWW14cFl5QmtaV052WkdVb2RtRnNkV1U2SUc1MWJXSmxjbHRkS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JzWlhRZ2N6b2djM1J5YVc1bklEMGdKeWM3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhaaGJIVmxMbXhsYm1kMGFEc2dLeXRwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JqYjJSbElEMGdkbUZzZFdWYmFWMDdYRzVjYmlBZ0lDQWdJR0Z6YzJWeWRDaGpiMlJsSUdsdUlIUm9hWE11Ym5WdE1tRmhMQ0JnVlc1cmJtOTNiaUJqYjJSbElDY2tlMk52WkdWOUp5Qm1iM1Z1WkNCcGJpQjJaV04wYjNJZ0p5UjdkbUZzZFdWOUoyQXBPMXh1WEc0Z0lDQWdJQ0J6SUNzOUlIUm9hWE11Ym5WdE1tRmhXMk52WkdWZE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdjenRjYmlBZ2ZWeHVmVnh1SWwxOSIsImV4cG9ydCBjbGFzcyBTdHJpbmdVdGlscyB7XG4gICAgc3RhdGljIGhhc2hDb2RlKHMpIHtcbiAgICAgICAgbGV0IGhhc2ggPSAwO1xuICAgICAgICBpZiAocy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaHIgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBjaHI7XG4gICAgICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbn1cbmltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlIHtcbn1cbmV4cG9ydCBjbGFzcyBHcmF5QWxsUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gJyM2NjY2NjYnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sb3JQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIHN0YXRpYyBidWlsZFBhbGV0dGUoKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKFNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IFN0cmluZ1V0aWxzLmhhc2hDb2RlKG0pO1xuICAgICAgICBjb25zdCBwSSA9IGhhc2ggJSBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUubGVuZ3RoO1xuICAgICAgICByZXR1cm4gVW5rbm93bkNvbG9yUGFsZXR0ZS5wYWxldHRlW3BJXTtcbiAgICB9XG59XG5Vbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUgPSBVbmtub3duQ29sb3JQYWxldHRlLmJ1aWxkUGFsZXR0ZSgpO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IEdyYXkoKSB7XG4gICAgICAgIGlmICh0aGlzLmdyYXkgPT09IHZvaWQgMClcbiAgICAgICAgICAgIHRoaXMuZ3JheSA9IG5ldyBHcmF5QWxsUGFsZXR0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5ncmF5O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IENvbG9yKCkge1xuICAgICAgICBpZiAodGhpcy5jb2xvciA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5jb2xvciA9IG5ldyBVbmtub3duQ29sb3JQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXNXJibTkzYmk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblZ1YTI1dmQyNHVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCU1VFc1RVRkJUU3hQUVVGUExGZEJRVmM3U1VGRFppeE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVZNN1VVRkRPVUlzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRPMWxCUTJoQ0xFOUJRVThzU1VGQlNTeERRVUZETzFGQlEyUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGVrTXNUVUZCVFN4SFFVRkhMRWRCUVZjc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTndReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdXVUZEYkVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETERKQ1FVRXlRanRUUVVOMlF6dFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenREUVVOR08wRkJSVVFzVDBGQlR5eEZRVUZoTEdOQlFXTXNSVUZCUXl4TlFVRk5MR2RDUVVGblFpeERRVUZETzBGQlJURkVMRTFCUVUwc1QwRkJaMElzYVVKQlFXbENPME5CUlhSRE8wRkJSVVFzVFVGQlRTeFBRVUZQTEdOQlFXVXNVMEZCVVN4cFFrRkJhVUk3U1VGRE5VTXNSMEZCUnl4RFFVRkRMRU5CUVZNN1VVRkRiRUlzVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenREUVVOR08wRkJSMFFzVFVGQlRTeFBRVUZQTEcxQ1FVRnZRaXhUUVVGUkxHbENRVUZwUWp0SlFVZG9SQ3hOUVVGTkxFTkJRVU1zV1VGQldUdFJRVU42UWl4TlFVRk5MRWRCUVVjc1IwRkJTU3hGUVVGbExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTndSaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZGVFN4SFFVRkhMRU5CUVVNc1EwRkJVenRSUVVOc1FpeE5RVUZOTEVsQlFVa3NSMEZCVnl4WFFVRlhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZERMRTFCUVUwc1JVRkJSU3hIUVVGSExFbEJRVWtzUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlEzSkVMRTlCUVU4c2JVSkJRVzFDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wbEJRM3BETEVOQlFVTTdPMEZCV0dFc01rSkJRVThzUjBGQllTeHRRa0ZCYlVJc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF6dEJRV04yUlN4TlFVRk5MRTlCUVU4c2EwSkJRVzFDTEZOQlFWRXNZMEZCWXp0SlFVYzNReXhOUVVGTkxFdEJRVXNzU1VGQlNUdFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzUzBGQlN5eERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeGpRVUZqTEVWQlFVVXNRMEZCUXp0UlFVTnVReXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVsTkxFMUJRVTBzUzBGQlN5eExRVUZMTzFGQlEzSkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUzBGQlN5eExRVUZMTEVOQlFVTTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEcxQ1FVRnRRaXhGUVVGRkxFTkJRVU03VVVGRGVrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJUZEhKcGJtZFZkR2xzY3lCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2FHRnphRU52WkdVb2N6b2djM1J5YVc1bktUb2diblZ0WW1WeUlIdGNiaUFnSUNCc1pYUWdhR0Z6YURvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnSUNCcFppQW9jeTVzWlc1bmRHZ2dQVDA5SURBcFhHNGdJQ0FnSUNCeVpYUjFjbTRnYUdGemFEdGNiaUFnSUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2N5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZMmh5T2lCdWRXMWlaWElnUFNCekxtTm9ZWEpEYjJSbFFYUW9hU2s3WEc0Z0lDQWdJQ0JvWVhOb0lEMGdLQ2hvWVhOb0lEdzhJRFVwSUMwZ2FHRnphQ2tnS3lCamFISTdYRzRnSUNBZ0lDQm9ZWE5vSUh3OUlEQTdJQzh2SUVOdmJuWmxjblFnZEc4Z016SmlhWFFnYVc1MFpXZGxjbHh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYUdGemFEdGNiaUFnZlZ4dWZWeHVYRzVwYlhCdmNuUWdlMU5sY1ZCaGJHVjBkR1VzSUZObGNWQmhiR1YwZEdWQ1lYTmxmU0JtY205dElDY3VMM05sY1Mxd1lXeGxkSFJsY3ljN1hHNWNibVY0Y0c5eWRDQmhZbk4wY21GamRDQmpiR0Z6Y3lCVmJtdHViM2R1VTJWeFVHRnNaWFIwWlNCcGJYQnNaVzFsYm5SeklGTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nWVdKemRISmhZM1FnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRWR5WVhsQmJHeFFZV3hsZEhSbElHVjRkR1Z1WkhNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJQ2NqTmpZMk5qWTJKenRjYmlBZ2ZWeHVmVnh1WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJWYm10dWIzZHVRMjlzYjNKUVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhCaGJHVjBkR1U2SUhOMGNtbHVaMXRkSUQwZ1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNWlkV2xzWkZCaGJHVjBkR1VvS1R0Y2JseHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QmlkV2xzWkZCaGJHVjBkR1VvS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUdOdmJuTjBJSEpsY3lBOUlDaGJYU0JoY3lCemRISnBibWRiWFNrdVkyOXVZMkYwS0M0dUxrOWlhbVZqZEM1MllXeDFaWE1vVTJWeFVHRnNaWFIwWlVKaGMyVXVZMjlzYjNWeVVHRnNaWFIwWlNrcE8xeHVJQ0FnSUhKbGRIVnliaUJ5WlhNN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdZMjl1YzNRZ2FHRnphRG9nYm5WdFltVnlJRDBnVTNSeWFXNW5WWFJwYkhNdWFHRnphRU52WkdVb2JTazdYRzRnSUNBZ1kyOXVjM1FnY0VrZ1BTQm9ZWE5vSUNVZ1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbExteGxibWQwYUR0Y2JpQWdJQ0J5WlhSMWNtNGdWVzVyYm05M2JrTnZiRzl5VUdGc1pYUjBaUzV3WVd4bGRIUmxXM0JKWFR0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1Z6SUdWNGRHVnVaSE1nVTJWeFVHRnNaWFIwWlVKaGMyVWdlMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJuY21GNU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFZHlZWGtvS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVozSmhlU0E5UFQwZ2RtOXBaQ0F3S1Z4dUlDQWdJQ0FnZEdocGN5NW5jbUY1SUQwZ2JtVjNJRWR5WVhsQmJHeFFZV3hsZEhSbEtDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaM0poZVR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdOdmJHOXlPaUJUWlhGUVlXeGxkSFJsTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBJRU52Ykc5eUtDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ykc5eUlEMDlQU0IyYjJsa0lEQXBYRzRnSUNBZ0lDQjBhR2x6TG1OdmJHOXlJRDBnYm1WM0lGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVW9LVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjJ4dmNqdGNiaUFnZlZ4dWZWeHVJbDE5IiwiLy8gRGF0YSBzdHJ1Y3R1cmVzIGZvciBWLURvbWFpbiByZWdpb25zIG9mIGFudGlib2RpZXNcbmV4cG9ydCB2YXIgVmRSZWdpb25UeXBlO1xuKGZ1bmN0aW9uIChWZFJlZ2lvblR5cGUpIHtcbiAgICBWZFJlZ2lvblR5cGVbXCJVbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiRlJcIl0gPSBcImZyYW1ld29ya1wiO1xuICAgIFZkUmVnaW9uVHlwZVtcIkNEUlwiXSA9IFwiY2RyXCI7XG59KShWZFJlZ2lvblR5cGUgfHwgKFZkUmVnaW9uVHlwZSA9IHt9KSk7XG4vKiogRGVzY3JpYmVzIFYtRE9NQUlOIChJRyBhbmQgVFIpIHJlZ2lvbiAob2YgbXVsdGlwbGUgYWxpZ25tZW50KVxuICogaHR0cHM6Ly93d3cuaW1ndC5vcmcvSU1HVFNjaWVudGlmaWNDaGFydC9OdW1iZXJpbmcvSU1HVElHVkxzdXBlcmZhbWlseS5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBWZFJlZ2lvbiB7XG4gICAgLyoqXG4gICAgICogc3RhcnQgYW5kIHBvc2l0aW9uIGFyZSBzdHJpbmdzIGJlY2F1c2UgdGhleSBjb3JyZXNwb25kIHRvIHBvc2l0aW9uIG5hbWVzIGFzIGNvbHVtbiBuYW1lcyBpbiBBTkFSQ0kgb3V0cHV0XG4gICAgICogQHBhcmFtIHtWZFJlZ2lvblR5cGV9IHR5cGUgIFR5cGUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBOYW1lIG9mIHRoZSByZWdpb25cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhaW5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JkZXJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zaXRpb25TdGFydE5hbWUgIFJlZ2lvbiBzdGFydCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvbkVuZE5hbWUgIFJlZ2lvbiBlbmQgcG9zaXRpb24gKGluY2x1c2l2ZSlcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCBjaGFpbiwgb3JkZXIsIHBvc2l0aW9uU3RhcnROYW1lLCBwb3NpdGlvbkVuZE5hbWUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jaGFpbiA9IGNoYWluO1xuICAgICAgICB0aGlzLm9yZGVyID0gb3JkZXI7XG4gICAgICAgIHRoaXMucG9zaXRpb25TdGFydE5hbWUgPSBwb3NpdGlvblN0YXJ0TmFtZTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkVuZE5hbWUgPSBwb3NpdGlvbkVuZE5hbWU7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1RdGNtVm5hVzl1Y3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblprTFhKbFoybHZibk11ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNjVVJCUVhGRU8wRkJSWEpFTEUxQlFVMHNRMEZCVGl4SlFVRlpMRmxCU1ZnN1FVRktSQ3hYUVVGWkxGbEJRVms3U1VGRGRFSXNiVU5CUVcxQ0xFTkJRVUU3U1VGRGJrSXNaME5CUVdkQ0xFTkJRVUU3U1VGRGFFSXNNa0pCUVZjc1EwRkJRVHRCUVVOaUxFTkJRVU1zUlVGS1Z5eFpRVUZaTEV0QlFWb3NXVUZCV1N4UlFVbDJRanRCUVVWRU96dEhRVVZITzBGQlEwZ3NUVUZCVFN4UFFVRlBMRkZCUVZFN1NVRlJia0k3T3pzN096czdPMDlCVVVjN1NVRkRTQ3haUVVGWkxFbEJRV3RDTEVWQlFVVXNTVUZCV1N4RlFVRkZMRXRCUVdFc1JVRkJSU3hMUVVGaExFVkJRM2hGTEdsQ1FVRjVRaXhGUVVGRkxHVkJRWFZDTzFGQlEyeEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF6dFJRVU16UXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExHVkJRV1VzUTBGQlF6dEpRVU42UXl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZMeUJFWVhSaElITjBjblZqZEhWeVpYTWdabTl5SUZZdFJHOXRZV2x1SUhKbFoybHZibk1nYjJZZ1lXNTBhV0p2WkdsbGMxeHVYRzVsZUhCdmNuUWdaVzUxYlNCV1pGSmxaMmx2YmxSNWNHVWdlMXh1SUNCVmJtdHViM2R1SUQwZ0ozVnVhMjV2ZDI0bkxGeHVJQ0JHVWlBOUlDZG1jbUZ0WlhkdmNtc25MRnh1SUNCRFJGSWdQU0FuWTJSeUp5eGNibjFjYmx4dUx5b3FJRVJsYzJOeWFXSmxjeUJXTFVSUFRVRkpUaUFvU1VjZ1lXNWtJRlJTS1NCeVpXZHBiMjRnS0c5bUlHMTFiSFJwY0d4bElHRnNhV2R1YldWdWRDbGNiaUFxSUdoMGRIQnpPaTh2ZDNkM0xtbHRaM1F1YjNKbkwwbE5SMVJUWTJsbGJuUnBabWxqUTJoaGNuUXZUblZ0WW1WeWFXNW5MMGxOUjFSSlIxWk1jM1Z3WlhKbVlXMXBiSGt1YUhSdGJGeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVJTWldkcGIyNGdlMXh1SUNCMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVN1hHNGdJRzVoYldVNklITjBjbWx1Wnp0Y2JpQWdZMmhoYVc0NklITjBjbWx1Wnp0Y2JpQWdiM0prWlhJNklHNTFiV0psY2p0Y2JpQWdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVTZJSE4wY21sdVp6dGNiaUFnY0c5emFYUnBiMjVGYm1ST1lXMWxPaUJ6ZEhKcGJtYzdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlITjBZWEowSUdGdVpDQndiM05wZEdsdmJpQmhjbVVnYzNSeWFXNW5jeUJpWldOaGRYTmxJSFJvWlhrZ1kyOXljbVZ6Y0c5dVpDQjBieUJ3YjNOcGRHbHZiaUJ1WVcxbGN5QmhjeUJqYjJ4MWJXNGdibUZ0WlhNZ2FXNGdRVTVCVWtOSklHOTFkSEIxZEZ4dUlDQWdLaUJBY0dGeVlXMGdlMVprVW1WbmFXOXVWSGx3WlgwZ2RIbHdaU0FnVkhsd1pTQnZaaUIwYUdVZ2NtVm5hVzl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnVZVzFsSUNCT1lXMWxJRzltSUhSb1pTQnlaV2RwYjI1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJR05vWVdsdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J2Y21SbGNseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVUZEdGeWRFNWhiV1VnSUZKbFoybHZiaUJ6ZEdGeWRDQndiM05wZEdsdmJpQW9hVzVqYkhWemFYWmxLVnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2NHOXphWFJwYjI1RmJtUk9ZVzFsSUNCU1pXZHBiMjRnWlc1a0lIQnZjMmwwYVc5dUlDaHBibU5zZFhOcGRtVXBYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loMGVYQmxPaUJXWkZKbFoybHZibFI1Y0dVc0lHNWhiV1U2SUhOMGNtbHVaeXdnWTJoaGFXNDZJSE4wY21sdVp5d2diM0prWlhJNklHNTFiV0psY2l4Y2JpQWdJQ0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVG9nYzNSeWFXNW5MQ0J3YjNOcGRHbHZia1Z1WkU1aGJXVTZJSE4wY21sdVp5a2dlMXh1SUNBZ0lIUm9hWE11ZEhsd1pTQTlJSFI1Y0dVN1hHNGdJQ0FnZEdocGN5NXVZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TG1Ob1lXbHVJRDBnWTJoaGFXNDdYRzRnSUNBZ2RHaHBjeTV2Y21SbGNpQTlJRzl5WkdWeU8xeHVJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdQU0J3YjNOcGRHbHZibE4wWVhKMFRtRnRaVHRjYmlBZ0lDQjBhR2x6TG5CdmMybDBhVzl1Ulc1a1RtRnRaU0E5SUhCdmMybDBhVzl1Ulc1a1RtRnRaVHRjYmlBZ2ZWeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXMgfSBmcm9tICcuLi9udWNsZW90aWRlcyc7XG5pbXBvcnQgeyBVbmtub3duU2VxUGFsZXR0ZSwgVW5rbm93blNlcVBhbGV0dGVzIH0gZnJvbSAnLi4vdW5rbm93bic7XG5IVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGUuZ2V0Q3Vyc29yUG9zaXRpb24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gbmV3IERHLlBvaW50KGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQsIGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCk7XG59O1xuREcuUmVjdC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgIHJldHVybiB0aGlzLmxlZnQgPD0geCAmJiB4IDw9IHRoaXMucmlnaHQgJiYgdGhpcy50b3AgPD0geSAmJiB5IDw9IHRoaXMuYm90dG9tO1xufTtcbmV4cG9ydCBjbGFzcyBQb3NpdGlvbk1vbm9tZXJJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jb3VudCA9IDA7XG4gICAgICAgIHRoaXMuYm91bmRzID0gbmV3IERHLlJlY3QoMCwgMCwgMCwgMCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uSW5mbyB7XG4gICAgLyoqIGZyZXEgPSB7fSwgcm93Q291bnQgPSAwXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiBwb3NpdGlvbiAoJzExMUEnLCAnMTExLjEnLCBldGMpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobmFtZSkge1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmZyZXEgPSB7fTtcbiAgICAgICAgdGhpcy5yb3dDb3VudCA9IDA7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFdlYkxvZ28gZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmlld2VySWQgPSAtMTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgICAgICAvLyBwcml2YXRlIHJlYWRvbmx5IGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZSA9IENvbG9yU2NoZW1lc1tOdWNsZW90aWRlc1dlYkxvZ28ucmVzaWR1ZXNTZXRdO1xuICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgdGhpcy5heGlzSGVpZ2h0ID0gMTI7XG4gICAgICAgIHRoaXMuc2VxQ29sID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSBtYXhMZW5ndGg6IG51bWJlciA9IDEwMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gMDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLnZpZXdTdWJzID0gW107XG4gICAgICAgIHRoaXMudmlld2VySWQgPSBXZWJMb2dvLnZpZXdlckNvdW50O1xuICAgICAgICBXZWJMb2dvLnZpZXdlckNvdW50ICs9IDE7XG4gICAgICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggPSB0aGlzLmZsb2F0KCdwb3NpdGlvbldpZHRoJywgMTYgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogNCwgbWF4OiA2NCwgcG9zdGZpeDogJ3B4J30qLyk7XG4gICAgICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWluSGVpZ2h0JywgNTAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogMjUwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLmZsb2F0KCdtYXhIZWlnaHQnLCAxMDAgLyosXG4gICAgICAgICAge2VkaXRvcjogJ3NsaWRlcicsIG1pbjogMjUsIG1heDogNTAwLCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMgPSB0aGlzLmJvb2woJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcycsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnN0cmluZygnc2VxdWVuY2VDb2x1bW5OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnc3RhcnRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnZW5kUG9zaXRpb25OYW1lJywgbnVsbCk7XG4gICAgICAgIHRoaXMuZml4V2lkdGggPSB0aGlzLmJvb2woJ2ZpeFdpZHRoJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy5zdHJpbmcoJ3ZlcnRpY2FsQWxpZ25tZW50JywgJ21pZGRsZScsIHsgY2hvaWNlczogWyd0b3AnLCAnbWlkZGxlJywgJ2JvdHRvbSddIH0pO1xuICAgICAgICB0aGlzLmhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygnaG9yaXpvbnRhbEFsaWdubWVudCcsICdjZW50ZXInLCB7IGNob2ljZXM6IFsnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnXSB9KTtcbiAgICAgICAgdGhpcy5maXRBcmVhID0gdGhpcy5ib29sKCdmaXRBcmVhJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2hyaW5rRW1wdHlUYWlsID0gdGhpcy5ib29sKCdzaHJpbmtFbXB0eVRhaWwnLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqIEZvciBzdGFydFBvc2l0aW9uIGVxdWFscyB0byBlbmRQb3NpdGlvbiBMZW5ndGggaXMgMSAqL1xuICAgIGdldCBMZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignV2ViTG9nbyBzZWNvbmQgaW5pdGlhbGl6YXRpb24hJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmhlbHBVcmwgPSAnL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvd2ViLWxvZ28ubWQnO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0ID0gdWkuZGl2KCdObyBtZXNzYWdlJyk7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gdWkuY2FudmFzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVpLmRpdihbdGhpcy5tc2dIb3N0LCB0aGlzLmNhbnZhc10pO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIgPSB1aS5yYW5nZVNsaWRlcigwLCAyMCwgMiwgNSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTJweCc7XG4gICAgICAgICAgICBjb25zdCBnZXRNb25vbWVyID0gKHApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqUG9zID0gTWF0aC5mbG9vcihwLnggLyB0aGlzLl9wb3NpdGlvbldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAgICAgICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gdGhpcy5zdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5jYW52YXMsICdtb3VzZW92ZXInKS5zdWJzY3JpYmUoKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudCh0aGlzLmNhbnZhcywgJ21vdXNlbW92ZScpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICAgICAgICAgICAgICB1aS50b29sdGlwLnNob3dSb3dHcm91cCh0aGlzLmRhdGFGcmFtZSwgKGlSb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcU0gPSBzZXEgPyBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzZXEpW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGFyZ3MueCArIDE2LCBhcmdzLnkgKyAxNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB1aS50b29sdGlwLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLnB1c2gocnhqcy5mcm9tRXZlbnQodGhpcy5jYW52YXMsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIHRoaXMuc2VxQ29sICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmluaXQoKGlSb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcU0gPSBzZXEgPyBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzZXEpW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXFNID09PSBtb25vbWVyICYmIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXQoaVJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaCh1aS5vblNpemVDaGFuZ2VkKHRoaXMucm9vdCkuc3Vic2NyaWJlKHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQuYmluZCh0aGlzKSkpO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZCh0aGlzLmhvc3QpO1xuICAgICAgICAgICAgLy8gdGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuc2xpZGVyLnJvb3QpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByb290T25TaXplQ2hhbmdlZChhcmdzKSB7XG4gICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUm9vdFNpemVDaGFuZ2VkKCkgYCArXG4gICAgICAgIC8vICAgYHJvb3Qud2lkdGg9JHt0aGlzLnJvb3QuY2xpZW50V2lkdGh9LCByb290LmhlaWdodD0ke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9LCBgICtcbiAgICAgICAgLy8gICBgY2FudmFzLndpZHRoPSR7dGhpcy5jYW52YXMud2lkdGh9LCBjYW52YXMuaGVpZ2h0PSR7dGhpcy5jYW52YXMuaGVpZ2h0fSAuYCk7XG4gICAgfVxuICAgIC8qKiBBc3NpZ25zIHtAbGluayBzZXFDb2x9IGFuZCB7QGxpbmsgY3B9IGJhc2VkIG9uIHtAbGluayBzZXF1ZW5jZUNvbHVtbk5hbWV9IGFuZCBjYWxscyB7QGxpbmsgcmVuZGVyfSgpLlxuICAgICAqL1xuICAgIHVwZGF0ZVNlcUNvbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNlcUNvbCA9IHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID8gdGhpcy5kYXRhRnJhbWUuY29sKHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lKSA6IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5zZXFDb2wgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5waWNrVXBTZXFDb2wodGhpcy5kYXRhRnJhbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lID0gdGhpcy5zZXFDb2wgPyB0aGlzLnNlcUNvbC5uYW1lIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jcCA9IFdlYkxvZ28ucGlja1VwUGFsZXR0ZSh0aGlzLnNlcUNvbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgICAgICAgICAgdGhpcy5jcCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gICAgdXBkYXRlUG9zaXRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VxQ29sKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgY2F0ZWdvcmllcztcbiAgICAgICAgaWYgKHRoaXMuc2hyaW5rRW1wdHlUYWlsKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICAgICAgY2F0ZWdvcmllcyA9IEFycmF5LmZyb20obmV3IFNldChBcnJheS5mcm9tKEFycmF5KGluZGljZXMubGVuZ3RoKS5rZXlzKCkpLm1hcCgoaSkgPT4gdGhpcy5zZXFDb2wuZ2V0KGluZGljZXNbaV0pKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2F0ZWdvcmllcyA9IHRoaXMuc2VxQ29sLmNhdGVnb3JpZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGggPiAwID8gTWF0aC5tYXgoLi4uY2F0ZWdvcmllcy5tYXAoKHMpID0+IHMgIT09IG51bGwgPyBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YShzKS5sZW5ndGggOiAwKSkgOiAwO1xuICAgICAgICAvLyBHZXQgcG9zaXRpb24gbmFtZXMgZnJvbSBkYXRhIGNvbHVtbiB0YWcgJ3Bvc2l0aW9uTmFtZXMnXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTmFtZXNUeHQgPSB0aGlzLnNlcUNvbC5nZXRUYWcoJ3Bvc2l0aW9uTmFtZXMnKTtcbiAgICAgICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gcG9zaXRpb25OYW1lc1R4dCA/IHBvc2l0aW9uTmFtZXNUeHQuc3BsaXQoJywgJykubWFwKChuKSA9PiBuLnRyaW0oKSkgOlxuICAgICAgICAgICAgWy4uLkFycmF5KG1heExlbmd0aCkua2V5cygpXS5tYXAoKGpQb3MpID0+IGAke2pQb3MgKyAxfWApO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAodGhpcy5zdGFydFBvc2l0aW9uTmFtZSAmJiB0aGlzLnBvc2l0aW9uTmFtZXMgJiZcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmNsdWRlcyh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5zdGFydFBvc2l0aW9uTmFtZSkgOiAwO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gKHRoaXMuZW5kUG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuZW5kUG9zaXRpb25OYW1lKSkgP1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5lbmRQb3NpdGlvbk5hbWUpIDogKG1heExlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUHJvcGVydHlDaGFuZ2VkKCAke3Byb3BlcnR5Lm5hbWV9ID0gJycgfSlgKTtcbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpO1xuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzZXF1ZW5jZUNvbHVtbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGFydFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuZFBvc2l0aW9uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aW9uV2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGg7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW5IZWlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWF4SGVpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpeFdpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsQWxpZ25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWxBbGlnbm1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml0QXJlYSc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzaHJpbmtFbXB0eVRhaWwnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25UYWJsZUF0dGFjaGVkKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIG9uVGFibGVBdHRhY2hlZDogeyBnZXQ6ICgpID0+IHN1cGVyLm9uVGFibGVBdHRhY2hlZCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gdGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCc7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCBkYXRhRnJhbWUgPSAke2RhdGFGcmFtZVR4dH0gKSBzdGFydGApO1xuICAgICAgICAgICAgX3N1cGVyLm9uVGFibGVBdHRhY2hlZC5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzLnB1c2godGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9ucygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHlpZWxkIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCgpIGVuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGV0YWNoKCkge1xuICAgICAgICBjb25zdCBfc3VwZXIgPSBPYmplY3QuY3JlYXRlKG51bGwsIHtcbiAgICAgICAgICAgIGRldGFjaDogeyBnZXQ6ICgpID0+IHN1cGVyLmRldGFjaCB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YUZyYW1lVHh0ID0gYCR7dGhpcy5kYXRhRnJhbWUgPyAnZGF0YScgOiAnbnVsbCd9YDtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgICAgICAgICBfc3VwZXIuZGV0YWNoLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnZpZXdTdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfbnVsbFNlcXVlbmNlKGZpbGxlclJlc2lkdWUgPSAnWCcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh0aGlzLkxlbmd0aCkuZmlsbChmaWxsZXJSZXNpZHVlKS5qb2luKCcnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBfY2FsY3VsYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ldyBBcnJheSh0aGlzLkxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zTmFtZSA9IHRoaXMucG9zaXRpb25OYW1lc1t0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdID0gbmV3IFBvc2l0aW9uSW5mbyhwb3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyMDIyLTA1LTA1IGFza2Fsa2luIGluc3RydWN0ZWQgdG8gc2hvdyBXZWJMb2dvIGJhc2VkIG9uIGZpbHRlciAobm90IHNlbGVjdGlvbilcbiAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgLy8gY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi50cnVlQ291bnQgPiAwID8gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpIDpcbiAgICAgICAgLy8gICB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIHRoaXMucm93c01hc2tlZCA9IGluZGljZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGxldCBzID0gKHRoaXMuc2VxQ29sLmdldChpKSk7XG4gICAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgICAgICBzID0gdGhpcy5fbnVsbFNlcXVlbmNlKCk7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnJvd3NOdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2VxTSA9IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcG1JbmZvID0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcTtcbiAgICAgICAgICAgICAgICBjb25zdCBtID0gc2VxTVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSB8fCAnLSc7XG4gICAgICAgICAgICAgICAgaWYgKCEobSBpbiBwbUluZm8pKVxuICAgICAgICAgICAgICAgICAgICBwbUluZm9bbV0gPSBuZXcgUG9zaXRpb25Nb25vbWVySW5mbygpO1xuICAgICAgICAgICAgICAgIHBtSW5mb1ttXS5jb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vI3JlZ2lvbiBQb2xpc2ggZnJlcSBjb3VudHNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAvLyBkZWxldGUgdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVsnLSddO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIGluIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgKz0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcVttXS5jb3VudDtcbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5jYW52YXMuaGVpZ2h0IC0gdGhpcy5heGlzSGVpZ2h0O1xuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Ll9jYWxjdWxhdGUoKSBtYXhIZWlnaHQ9JHttYXhIZWlnaHR9LmApO1xuICAgICAgICAvLyNyZWdpb24gQ2FsY3VsYXRlIHNjcmVlblxuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZyZXEgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgY29uc3Qgcm93Q291bnQgPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudDtcbiAgICAgICAgICAgIGxldCB5ID0gdGhpcy5heGlzSGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGZyZXEpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYVswXSAhPT0gJy0nICYmIGJbMF0gIT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbMV0uY291bnQgLSBhWzFdLmNvdW50O1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJyAmJiBiWzBdID09PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIGVsc2UgLyogKGJbMF0gPT09ICctJykgKi9cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsxO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBtOiBzdHJpbmcgPSBlbnRyeVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBoID0gbWF4SGVpZ2h0ICogcG1JbmZvLmNvdW50IC8gcm93Q291bnQ7XG4gICAgICAgICAgICAgICAgcG1JbmZvLmJvdW5kcyA9IG5ldyBERy5SZWN0KGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoLCB5LCB0aGlzLl9wb3NpdGlvbldpZHRoLCBoKTtcbiAgICAgICAgICAgICAgICB5ICs9IGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfVxuICAgIC8vIHJlZmxlY3QgY2hhbmdlcyBtYWRlIHRvIGZpbHRlci9zZWxlY3Rpb25cbiAgICByZW5kZXIocmVjYWxjID0gdHJ1ZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0aGlzLm1zZ0hvc3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCAmJiAhdGhpcy5jcCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5pbm5lclRleHQgPSBgVW5rbm93biBwYWxldHRlIChjb2x1bW4gc2VtVHlwZTogJyR7dGhpcy5zZXFDb2wuc2VtVHlwZX0nKS5gO1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUgfHwgIXRoaXMuY3ApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoIWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChyZWNhbGMpXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGUoKTtcbiAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgdGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7XG4gICAgICAgIGcudGV4dEJhc2VsaW5lID0gdGhpcy50ZXh0QmFzZWxpbmU7XG4gICAgICAgIC8vIFByZXZlbnRzIGRpdmlzaW9uIGJ5IHplcm8gb24gTGVuZ3RoID0gMFxuICAgICAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uID09PSAtMSB8fCB0aGlzLmVuZFBvc2l0aW9uID09PSAtMSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8jcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ2JsYWNrJztcbiAgICAgICAgZy50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgZy5mb250ID0gJzEwcHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICBjb25zdCBwb3NOYW1lTWF4V2lkdGggPSBNYXRoLm1heCguLi50aGlzLnBvc2l0aW9ucy5tYXAoKHBvcykgPT4gZy5tZWFzdXJlVGV4dChwb3MubmFtZSkud2lkdGgpKTtcbiAgICAgICAgY29uc3QgaFNjYWxlID0gcG9zTmFtZU1heFdpZHRoIDwgKHRoaXMuX3Bvc2l0aW9uV2lkdGggLSAyKSA/IDEgOiAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpIC8gcG9zTmFtZU1heFdpZHRoO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oaFNjYWxlLCAwLCAwLCAxLCBqUG9zICogdGhpcy5fcG9zaXRpb25XaWR0aCArIHRoaXMuX3Bvc2l0aW9uV2lkdGggLyAyLCAwKTtcbiAgICAgICAgICAgIGcuZmlsbFRleHQocG9zLm5hbWUsIDAsIDApO1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvbiBQbG90IHBvc2l0aW9uTmFtZXNcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttb25vbWVyLCBwbUluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIgIT09ICctJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gcG1JbmZvLmJvdW5kcztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9udFN0eWxlID0gJzE2cHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICAgICAgICAgICAgICAvLyBIYWNrcyB0byBzY2FsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyB0byB0YXJnZXQgcmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckFzY2VudCA9IDAuMjU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckhlaWdodCA9IDEyLjI7XG4gICAgICAgICAgICAgICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdsaWdodGdyYXknO1xuICAgICAgICAgICAgICAgICAgICBnLmxpbmVXaWR0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGcucmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gKF9hID0gdGhpcy5jcC5nZXQobW9ub21lcikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuY3AuZ2V0KCdvdGhlcicpO1xuICAgICAgICAgICAgICAgICAgICBnLnRleHRBbGlnbiA9ICdsZWZ0JztcbiAgICAgICAgICAgICAgICAgICAgZy5mb250ID0gZm9udFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICAvL2cuZmlsbFJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtVG0gPSBnLm1lYXN1cmVUZXh0KG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiAobU0uYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQgIT0gMClcbiAgICAgICAgICAgICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKGBtOiAke219LCBtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDogJHttTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudH1gKTtcbiAgICAgICAgICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oYi53aWR0aCAvIG1UbS53aWR0aCwgMCwgMCwgYi5oZWlnaHQgLyB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQsIGIubGVmdCwgYi50b3ApO1xuICAgICAgICAgICAgICAgICAgICBnLmZpbGxUZXh0KG1vbm9tZXIsIDAsIC11cHBlcmNhc2VMZXR0ZXJBc2NlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYWxjU2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5ob3N0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLkxlbmd0aCAqIHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgdGhpcy5yb290LmNsaWVudEhlaWdodCkpO1xuICAgICAgICBpZiAodGhpcy5maXRBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCB4U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgeVNjYWxlID0gdGhpcy5yb290LmNsaWVudFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IE1hdGgubWF4KDEsIE1hdGgubWluKHhTY2FsZSwgeVNjYWxlKSk7XG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uV2lkdGggPSB0aGlzLnBvc2l0aW9uV2lkdGggKiBzY2FsZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgLy8gY29uc3QgY2FudmFzSGVpZ2h0OiBudW1iZXIgPSB3aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCA/IGhlaWdodCAtIDggOiBoZWlnaHQ7XG4gICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgICAgIGNvbnN0IGNhbnZhc0hlaWdodCA9IHRoaXMuaG9zdC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2NhbnZhc0hlaWdodH1weGApO1xuICAgICAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgICAgICBpZiAodGhpcy5maXhXaWR0aCkge1xuICAgICAgICAgICAgLy8gZnVsbCB3aWR0aCBmb3IgY2FudmFzIGhvc3QgYW5kIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgLyo9IHRoaXMuaG9zdC5zdHlsZS5oZWlnaHQqLyA9IGAke2hlaWdodH1weGA7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGFsbG93IHNjcm9sbCBjYW52YXMgaW4gcm9vdFxuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gdGhpcy5ob3N0LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLm92ZXJmbG93WCA9ICdhdXRvIWltcG9ydGFudCc7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ3RleHQtYWxpZ24nLCB0aGlzLmhvcml6b250YWxBbGlnbm1lbnQpO1xuICAgICAgICAgICAgLy8gdmVydGljYWwgYWxpZ25tZW50XG4gICAgICAgICAgICBsZXQgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IC0gaGVpZ2h0KSAvIDIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICBob3N0VG9wTWFyZ2luID0gTWF0aC5tYXgoMCwgdGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYCR7aG9zdFRvcE1hcmdpbn1weGAsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvb3QuY2xpZW50SGVpZ2h0IDwgaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnaGlkZGVuJywgJ2ltcG9ydGFudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoXG4gICAgICAgIC8vICAgYHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSAke3RoaXMucm9vdC5zdHlsZS5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMucm9vdC5jbGllbnRIZWlnaHQgPSAke3RoaXMucm9vdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuaG9zdC5zdHlsZS5oZWlnaHQgPSAke3RoaXMuaG9zdC5zdHlsZS5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuaG9zdC5jbGllbnRIZWlnaHQgPSAke3RoaXMuaG9zdC5jbGllbnRIZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgJ1xcbicgK1xuICAgICAgICAvLyAgIGB0aGlzLmNhbnZhcy5oZWlnaHQgICAgICAgPSAke3RoaXMuY2FudmFzLmhlaWdodH1cXG5gICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmNhbnZhcy5zdHlsZS5oZWlnaHR9YCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICAgICAqIEByZXR1cm4ge1NlcVBhbGV0dGV9IFBhbGV0dGUgY29ycmVzcG9uZGluZyB0byB0aGUgYWxwaGFiZXQgb2YgdGhlIHNlcXVlbmNlcyBpbiB0aGUgY29sdW1uXG4gICAgICovXG4gICAgc3RhdGljIHBpY2tVcFBhbGV0dGUoc2VxQ29sLCBtaW5MZW5ndGggPSA1KSB7XG4gICAgICAgIGxldCByZXMgPSBudWxsO1xuICAgICAgICBzd2l0Y2ggKHNlcUNvbC5zZW1UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgcmVzID0gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhdHMgPSBXZWJMb2dvLmdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgICAgIFtuZXcgU2V0KE9iamVjdC5rZXlzKE51Y2xlb3RpZGVzLk5hbWVzKSksIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtXSxcbiAgICAgICAgICAgIFtuZXcgU2V0KE9iamVjdC5rZXlzKEFtaW5vYWNpZHMuTmFtZXMpKSwgQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHNdLFxuICAgICAgICBdO1xuICAgICAgICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgICAgICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzXG4gICAgICAgICAgICAubWFwKChjKSA9PiBXZWJMb2dvLmdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzBdKSk7XG4gICAgICAgIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gICAgICAgIGlmIChtYXhDb3MgPiAwLjY1KVxuICAgICAgICAgICAgcmVzID0gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzFdO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXMgPSBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIC8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbkxlbmd0aFxuICAgICAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICAgICAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgc3BsaXR0ZXIpIHtcbiAgICAgICAgY29uc3QgZnJlcSA9IHt9O1xuICAgICAgICBsZXQgc2FtZUxlbmd0aCA9IHRydWU7XG4gICAgICAgIGxldCBmaXJzdExlbmd0aCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBtU2VxID0gc3BsaXR0ZXIoc2VxKTtcbiAgICAgICAgICAgIGlmIChmaXJzdExlbmd0aCA9PSBudWxsKVxuICAgICAgICAgICAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgICAgICAgICBlbHNlIGlmIChtU2VxLmxlbmd0aCAhPT0gZmlyc3RMZW5ndGgpXG4gICAgICAgICAgICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEobSBpbiBmcmVxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICAgICAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGZyZXE6IGZyZXEsIHNhbWVMZW5ndGg6IHNhbWVMZW5ndGggfTtcbiAgICB9XG4gICAgc3RhdGljIGdldEFscGhhYmV0U2ltaWxhcml0eShmcmVxLCBhbHBoYWJldCwgZ2FwU3ltYm9sID0gJy0nKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5uZXcgU2V0KE9iamVjdC5rZXlzKGZyZXEpKSwgLi4uYWxwaGFiZXRdKTtcbiAgICAgICAga2V5cy5kZWxldGUoZ2FwU3ltYm9sKTtcbiAgICAgICAgY29uc3QgZnJlcUEgPSBbXTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRBID0gW107XG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBrZXlzKSB7XG4gICAgICAgICAgICBmcmVxQS5wdXNoKG0gaW4gZnJlcSA/IGZyZXFbbV0gOiAwKTtcbiAgICAgICAgICAgIGFscGhhYmV0QS5wdXNoKGFscGhhYmV0LmhhcyhtKSA/IDEgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICAvKiBUaGVyZSB3ZXJlIGEgZmV3IGlkZWFzOiBjaGktc3F1YXJlZCwgcGVhcnNvbiBjb3JyZWxhdGlvbiAodmFyaWFuY2U/KSwgc2NhbGFyIHByb2R1Y3QgKi9cbiAgICAgICAgY29uc3QgZnJlcVYgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICAgICAgY29uc3QgYWxwaGFiZXRWID0gbmV3IFZlY3RvcihhbHBoYWJldEEpO1xuICAgICAgICBjb25zdCBjb3MgPSB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG4gICAgICAgIHJldHVybiBjb3M7XG4gICAgfVxuICAgIC8qKiBGaXJzdCB0cnkgdG8gZmluZCBjb2x1bW4gd2l0aCBzZW1UeXBlICdhbGlnbmVkU2VxdWVuY2UnLlxuICAgICAqIE5leHQgbG9vayBmb3IgY29sdW1uIHdpdGggZGF0YSBhbHBoYWJldCBjb3JyZXNwb25kaW5nIHRvIGFueSBvZiB0aGUga25vd24gcGFsZXR0ZXMuXG4gICAgICogQHBhcmFtIHtERy5EYXRhRnJhbWV9IGRhdGFGcmFtZVxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gVGhlIGNvbHVtbiB3ZSB3ZXJlIGxvb2tpbmcgZm9yIG9yIG51bGxcbiAgICAgKi9cbiAgICBwaWNrVXBTZXFDb2woZGF0YUZyYW1lKSB7XG4gICAgICAgIGxldCByZXMgPSBkYXRhRnJhbWUuY29sdW1ucy5ieVNlbVR5cGUoJ2FsaWduZWRTZXF1ZW5jZScpO1xuICAgICAgICBpZiAocmVzID09IG51bGwpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sIG9mIGRhdGFGcmFtZS5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3AgPSBXZWJMb2dvLnBpY2tVcFBhbGV0dGUoY29sLCA1KTtcbiAgICAgICAgICAgICAgICBpZiAoY3AgIT09IG51bGwgJiYgIShjcCBpbnN0YW5jZW9mIFVua25vd25TZXFQYWxldHRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMgPSBjb2w7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICAgICAqIEBwYXJhbSB7YW55fSBzZXEgb2JqZWN0IHdpdGggc2VxdWVuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaXR0ZXJBc0Zhc3RhKHNlcSkge1xuICAgICAgICBjb25zdCByZXMgPSB3dShzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChXZWJMb2dvLm1vbm9tZXJSZSkpXG4gICAgICAgICAgICAubWFwKChtYSkgPT4ge1xuICAgICAgICAgICAgbGV0IG1SZXM7XG4gICAgICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKG0gaW4gV2ViTG9nby5hYVN5bm9ueW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIG1SZXMgPSBXZWJMb2dvLmFhU3lub255bXNbbV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYExvbmcgbW9ub21lciAnJHttfScgaGFzIG5vdCBhIHNob3J0IHN5bm9ueW0uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbVJlcyA9IG07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbVJlcztcbiAgICAgICAgfSkudG9BcnJheSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICAgICAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcikge1xuICAgICAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlcS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnMgKi9cbiAgICBzdGF0aWMgZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcikge1xuICAgICAgICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKSB7XG4gICAgICAgICAgICByZXR1cm4gV2ViTG9nby5zcGxpdHRlckFzRmFzdGE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSkge1xuICAgICAgICAgICAgcmV0dXJuIFdlYkxvZ28uZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAgICAgLy8gVE9ETzogU3BsaXR0ZXIgZm9yIEhFTE1cbiAgICB9XG59XG5XZWJMb2dvLnJlc2lkdWVzU2V0ID0gJ251Y2xlb3RpZGVzJztcbldlYkxvZ28udmlld2VyQ291bnQgPSAtMTtcbldlYkxvZ28ubW9ub21lclJlID0gL1xcWyhcXHcrKVxcXXwoXFx3KXwoLSkvZztcbi8qKiBPbmx5IHNvbWUgb2YgdGhlIHN5bm9ueW1zLiBUaGVzZSB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIGNsdXN0ZXJlZCBvbGlnb3BlcHRpZGUgZGF0YXNldC4gKi9cbldlYkxvZ28uYWFTeW5vbnltcyA9IHtcbiAgICAnW01lTmxlXSc6ICdMJyxcbiAgICAnW01lQV0nOiAnQScsXG4gICAgJ1tNZUddJzogJ0cnLFxuICAgICdbTWVGXSc6ICdGJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkMlZpTFd4dloyOHVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKM1pXSXRiRzluYnk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN1FVRkRRU3hQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJRM1JETEU5QlFVOHNTMEZCU3l4RlFVRkZMRTFCUVUwc2FVSkJRV2xDTEVOQlFVTTdRVUZGZEVNc1QwRkJUeXhGUVVGRkxFMUJRVTBzU1VGQlNTeERRVUZETzBGQlEzQkNMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzVFVGQlRTeERRVUZETzBGQlJUZENMRTlCUVU4c1JVRkJReXhOUVVGTkxFVkJRVU1zVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVOMlJTeFBRVUZQTEVWQlFVTXNXVUZCV1N4RlFVRkZMR2RDUVVGblFpeEZRVUZETEUxQlFVMHNhVVJCUVdsRUxFTkJRVU03UVVGREwwWXNUMEZCVHl4RlFVRkRMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSXNSVUZCUXl4TlFVRk5MR1ZCUVdVc1EwRkJRenRCUVVNM1JDeFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkZMRzFDUVVGdFFpeEZRVUZETEUxQlFVMHNaMEpCUVdkQ0xFTkJRVU03UVVGRGFFVXNUMEZCVHl4RlFVRkRMR2xDUVVGcFFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRExFMUJRVTBzV1VGQldTeERRVUZETzBGQmIwSnFSU3hwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NWVUZCVXl4TFFVRnBRanRKUVVONFJTeE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVWQlFVVXNRMEZCUXp0SlFVTXhReXhQUVVGUExFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZETTBVc1EwRkJReXhEUVVGRE8wRkJSVVlzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1VVRkJVU3hIUVVGSExGVkJRVk1zUTBGQlV5eEZRVUZGTEVOQlFWTTdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTm9SaXhEUVVGRExFTkJRVU03UVVGRlJpeE5RVUZOTEU5QlFVOHNiVUpCUVcxQ08wbEJVemxDTzFGQlEwVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFppeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UXl4RFFVRkRPME5CUTBZN1FVRkZSQ3hOUVVGTkxFOUJRVThzV1VGQldUdEpRVXQyUWpzN1QwRkZSenRKUVVOSUxGbEJRVmtzU1VGQldUdFJRVU4wUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc1QwRkJUeXhQUVVGUkxGTkJRVkVzUlVGQlJTeERRVUZETEZGQlFWRTdTVUZ4UkhSRE8xRkJRMFVzUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZzUkVZc1lVRkJVU3hIUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzUkNMR2RDUVVGWExFZEJRVmtzUzBGQlN5eERRVUZETzFGQlJYSkRMRFJHUVVFMFJqdFJRVU5zUml4UFFVRkZMRWRCUVhOQ0xFbEJRVWtzUTBGQlF6dFJRVkV2UWl4bFFVRlZMRWRCUVZjc1JVRkJSU3hEUVVGRE8xRkJSWGhDTEZkQlFVMHNSMEZCTmtJc1NVRkJTU3hEUVVGRE8xRkJRMmhFTEcxRFFVRnRRenRSUVVNelFpeGpRVUZUTEVkQlFXMUNMRVZCUVVVc1EwRkJRenRSUVVVdlFpeGxRVUZWTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCUTNaQ0xHRkJRVkVzUjBGQlZ5eERRVUZETEVOQlFVTTdVVUZwUW5KQ0xHdENRVUZoTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUlRkQ0xHdENRVUZoTEVkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZNMElzWjBKQlFWY3NSMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVU5NlFpeGhRVUZSTEVkQlFXMUNMRVZCUVVVc1EwRkJRenRSUVV0d1F5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU03VVVGRGNFTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmVrSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRk1VSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1pVRkJaU3hGUVVGRkxFVkJRVVVzUTBGQlFUczRSRUZEYmtJc1EwRkJReXhEUVVGRE8xRkJRM2hFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkJPMmRGUVVOaExFTkJRVU1zUTBGQlF6dFJRVU14UkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRWRCUVVjc1EwRkJRVHRuUlVGRFdTeERRVUZETEVOQlFVTTdVVUZGTVVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGRrVXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2IwSkJRVzlDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZiRVVzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEYUVVc1NVRkJTU3hEUVVGRExHVkJRV1VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUlRWRUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGTjBNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1VVRkJVU3hGUVVOb1JTeEZRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGRExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxGRkJRVkVzUlVGRGNFVXNSVUZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNMVJDeERRVUZETzBsQmNFTkVMREJFUVVFd1JEdEpRVU14UkN4SlFVRlpMRTFCUVUwN1VVRkRhRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOb1J5eERRVUZETzBsQmJVTmhMRWxCUVVrN08xbEJRMmhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhuUTBGQlowTXNRMEZCUXl4RFFVRkRPMmRDUVVOb1JDeFBRVUZQTzJGQlExSTdXVUZGUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU40UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExIRkRRVUZ4UXl4RFFVRkRPMWxCUlhKRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU53UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUlhCRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRekZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZGYWtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWb1JDdzJRMEZCTmtNN1dVRkROME1zZVVOQlFYbERPMWxCUTNwRExEQkRRVUV3UXp0WlFVVXhReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFWY3NSVUZCZFVRc1JVRkJSVHRuUWtGRGRFWXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRmRFTXNTVUZCU1N4UlFVRlJMRXRCUVVzc1MwRkJTeXhEUVVGRE8yOUNRVU55UWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzVFVGQlRTeFBRVUZQTEVkQlFYVkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXp0eFFrRkRNMFFzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1NVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV6dHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSVFZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJDeERRVUZETEVOQlFVTTdXVUZIUml4eFIwRkJjVWM3V1VGRGNrY3NUMEZCVHp0WlFVVlFMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTzI5Q1FVTmtMRTlCUVU4N1owSkJSVlFzVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCWlN4RFFVRkRPMmRDUVVNM1FpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSWGhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZPM2RDUVVNdlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0M1FrRkRia01zVFVGQlRTeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGJFWXNUMEZCVHl4SlFVRkpMRXRCUVVzc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHZRa0ZETjBRc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdhVUpCUXpsQ08zRkNRVUZOTzI5Q1FVTk1MRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdhVUpCUTI1Q08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRE8yOUNRVU12UWl4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeDFSRUZCZFVRN1owSkJRM1pFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVTdkMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzNkQ1FVTnVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPM2RDUVVOc1JpeFBRVUZQTEVsQlFVa3NTMEZCU3l4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU0zUkN4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRFNqdFpRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZTaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGTjBZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRelZDTERKRFFVRXlRenRaUVVVelF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVOQlFVTTdTMEZCUVR0SlFVVlBMR2xDUVVGcFFpeERRVUZETEVsQlFWTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhwUkVGQmFVUTdVVUZEYWtRc2NVWkJRWEZHTzFGQlEzSkdMR2xHUVVGcFJqdEpRVU51Uml4RFFVRkRPMGxCUlVRN1QwRkRSenRKUVVOTExGbEJRVms3VVVGRGJFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRek5HTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzWkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlEyaEVMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzJGQlEycEZPMWxCUTBRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTm1MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1lVRkRhRUk3VTBGRFJqdFJRVU5FTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVOHNaVUZCWlR0UlFVTnlRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMDdXVUZEWkN4UFFVRlBPMUZCUlZRc1NVRkJTU3hWUVVFNFFpeERRVUZETzFGQlEyNURMRWxCUVVrc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJUdFpRVU40UWl4TlFVRk5MRTlCUVU4c1IwRkJaU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETzFsQlEzWkZMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVTTNRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJReTlHTzJGQlFVMDdXVUZEVEN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEY2tNN1VVRkRSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRMnhGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RkxEQkVRVUV3UkR0UlFVTXhSQ3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxHdEVRVUZyUkR0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BHTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRk5VUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllUdFpRVU5vUlN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVR0WlFVTTFSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkVMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRka1VzUTBGQlF6dEpRVVZsTEdsQ1FVRnBRaXhEUVVGRExGRkJRWEZDTzFGQlEzSkVMSGRGUVVGM1JUdFJRVU40UlN4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkZiRU1zVVVGQlVTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFdEJRVXNzZFVKQlFYVkNPMmRDUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh2UWtGQmIwSTdaMEpCUTNaQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0blFrRkRjRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NiVUpCUVcxQ08yZENRVU4wUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03WjBKQlEzQkNMRTFCUVUwN1dVRkRVaXhMUVVGTExHbENRVUZwUWp0blFrRkRjRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4bFFVRmxPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU03WjBKQlEzcERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEZkQlFWYzdaMEpCUTJRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NWMEZCVnp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4VlFVRlZPMmRDUVVOaUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NjVUpCUVhGQ08yZENRVU40UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eFRRVUZUTzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEdsQ1FVRnBRanRuUWtGRGNFSXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xTkJRMUE3U1VGRFNDeERRVUZETzBsQlJYRkNMR1ZCUVdVN096czdPMWxCUTI1RExFMUJRVTBzV1VGQldTeEhRVUZYTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUXpsRUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEd0RFFVRnJReXhaUVVGWkxGVkJRVlVzUTBGQlF5eERRVUZETzFsQlEzSkhMRTlCUVUwc1pVRkJaU3haUVVGSE8xbEJSWGhDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRaUVVWd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlF6ZENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMjVHTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkROMFFzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRPMjlDUVVOMlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRURHRaUVVWRUxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUTJ4Q0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlhGQ0xFMUJRVTA3T3pzN08xbEJRekZDTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFpRVU16UkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hyUTBGQmEwTXNXVUZCV1N4VlFVRlZMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eFBRVUZOTEUxQlFVMHNXVUZCUnp0WlFVVm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hKUVVGSkxFTkJRVU1zU1VGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNoQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUlhSQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNwQ0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlZNc1lVRkJZU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEhRVUZITzFGQlEzcERMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWp0WlFVTTFRaXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSVGRFTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTFvc1EwRkJRenRKUVVWVExGVkJRVlU3VVVGRGJFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRPMWxCUXk5RUxFOUJRVTg3VVVGRlZDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkZhRUlzU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVTdXVUZETjBNc1RVRkJUU3hQUVVGUExFZEJRVmNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRGJFUTdVVUZGUkN4cFJrRkJhVVk3VVVGRGFrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF6dFJRVU16UkN3eVIwRkJNa2M3VVVGRE0wY3NaMFJCUVdkRU8xRkJSV2hFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZzUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRU5CUVVNc1IwRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUZERMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3WjBKQlEwNHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVVzUTBGQlF6dG5Ra0ZEZWtJc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzJGQlEycENPMWxCUlVRc1RVRkJUU3hKUVVGSkxFZEJRV0VzVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1JDeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRE4wTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1owSkJRM3BETEUxQlFVMHNRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF6dHZRa0ZEYUVJc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NiVUpCUVcxQ0xFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMkZCUTI1Q08xTkJRMFk3VVVGRlJDdzBRa0ZCTkVJN1VVRkROVUlzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zZVVOQlFYbERPMWxCUlhwRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5zUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTVHRuUWtGRGRrTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8xTkJRM1pGTzFGQlEwUXNXVUZCV1R0UlFVVmFMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRGRrUXNiVVpCUVcxR08xRkJSVzVHTERCQ1FVRXdRanRSUVVNeFFpeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRaUVVNM1F5eE5RVUZOTEVsQlFVa3NSMEZCZVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkROMFVzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZGTDBNc1NVRkJTU3hEUVVGRExFZEJRVmNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVVm9ReXhOUVVGTkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSE8yOUNRVU01UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF6dHhRa0ZETlVJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVReXhQUVVGUExFTkJRVU1zUTBGQlF6dHhRa0ZEVGl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITzI5Q1FVTnVRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzNGQ1FVTlFMRzlDUVVGdlFqdHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1MwRkJTeXhOUVVGTkxFdEJRVXNzU1VGQlNTeFBRVUZQTEVWQlFVVTdaMEpCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUYzUWl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6ZERMRGhDUVVFNFFqdG5Ra0ZET1VJc1RVRkJUU3hEUVVGRExFZEJRVmNzVTBGQlV5eEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRE8yZENRVVYwUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtZc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5TTzFOQlEwWTdVVUZEUkN4WlFVRlpPMGxCUTJRc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTXpReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdPMUZCUTJ4Q0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlR0WlFVTm9RaXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU16UWl4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExGTkJRVk1zUjBGQlJ5eHhRMEZCY1VNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0blFrRkRlRVlzU1VGQlNTeERRVUZETEU5QlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU5zUXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNUMEZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzJGQlEzUkRPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRE4wUXNUMEZCVHp0UlFVVlVMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RFFVRkRPMWxCUVVVc1QwRkJUenRSUVVWbUxFbEJRVWtzVFVGQlRUdFpRVU5TTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJRenRSUVVWd1FpeERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1VVRkRia0lzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVRc1EwRkJReXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUlc1RExEQkRRVUV3UXp0UlFVTXhReXhKUVVGSkxFbEJRVWtzUTBGQlF5eGhRVUZoTEV0QlFVc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzUzBGQlN5eERRVUZETEVOQlFVTTdXVUZEZEVRc1QwRkJUenRSUVVWVUxEUkNRVUUwUWp0UlFVTTFRaXhEUVVGRExFTkJRVU1zWTBGQll5eEZRVUZGTEVOQlFVTTdVVUZEYmtJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFBRVUZQTEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEZGtJc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eDFRMEZCZFVNc1EwRkJRenRSUVVOcVJDeE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRhRWNzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzWlVGQlpTeERRVUZETzFGQlJUZEhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1IwRkJSeXhIUVVGcFFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJReTlETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenRaUVVOdVFpeERRVUZETEVOQlFVTXNXVUZCV1N4RFFVTmFMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZEWml4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU16UkN4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZDTzFGQlEwUXNLMEpCUVN0Q08xRkJSUzlDTEV0QlFVc3NTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRemRETEV0QlFVc3NUVUZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM3BGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRWRCUVVjc1JVRkJSVHR2UWtGRGJrSXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dHZRa0ZGZUVJc1RVRkJUU3hUUVVGVExFZEJRVWNzZFVOQlFYVkRMRU5CUVVNN2IwSkJRekZFTERCRVFVRXdSRHR2UWtGRE1VUXNUVUZCVFN4eFFrRkJjVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTTdiMEpCUTI1RExFMUJRVTBzY1VKQlFYRkNMRWRCUVVjc1NVRkJTU3hEUVVGRE8yOUNRVVZ1UXl4RFFVRkRMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU03YjBKQlEyNUNMRU5CUVVNc1EwRkJReXhYUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETzI5Q1FVTTFRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRhRUlzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUTNwRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NUVUZCUVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNiVU5CUVVrc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2IwSkJRek5FTEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRE8yOUNRVU55UWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF6dHZRa0ZEYmtJc0swTkJRU3RETzI5Q1FVTXZReXhOUVVGTkxFZEJRVWNzUjBGQlowSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHZRa0ZGYUVRc2RVTkJRWFZETzI5Q1FVTjJReXg1UmtGQmVVWTdiMEpCUlhwR0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eHhRa0ZCY1VJc1JVRkRNMFFzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEycENMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdhVUpCUTJoRU8yRkJRMFk3VTBGRFJqdEpRVU5JTEVOQlFVTTdTVUZGVHl4UlFVRlJPMUZCUTJRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTVHRaUVVNMVFpeFBRVUZQTzFGQlJWUXNTVUZCU1N4TFFVRkxMRWRCUVZjc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTNKRUxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWGhHTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOb1FpeE5RVUZOTEUxQlFVMHNSMEZCVnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZEZGtRc1RVRkJUU3hOUVVGTkxFZEJRVmNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRM0pFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY0VRc1MwRkJTeXhIUVVGSExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZEVJc1RVRkJUU3hIUVVGSExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdXVUZEZUVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRXRCUVVzc1EwRkJRenRUUVVOc1JEdFJRVVZFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVWMlF5eHZSa0ZCYjBZN1VVRkRjRVlzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeFpRVUZaTEVkQlFWY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRGNFUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzV1VGQldTeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJUZEVMRFpDUVVFMlFqdFJRVU0zUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3V1VGRGFrSXNjME5CUVhORE8xbEJRM1JETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eExRVUZMTEVsQlFVa3NRMEZCUXp0WlFVTTNSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc05FSkJRVFJDTEVkQlFVY3NSMEZCUnl4TlFVRk5MRWxCUVVrc1EwRkJRenRaUVVOd1JTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVlVGQlZTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRUUVVOb1JUdGhRVUZOTzFsQlEwd3NPRUpCUVRoQ08xbEJRemxDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzWkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNSMEZCUnl4blFrRkJaMElzUTBGQlF6dFpRVU0zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJSVGxETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVOQlFVTTdXVUZGY0VVc2NVSkJRWEZDTzFsQlEzSkNMRWxCUVVrc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU4wUWl4UlFVRlJMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0blFrRkRhRU1zUzBGQlN5eExRVUZMTzI5Q1FVTlNMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU03YjBKQlEyeENMRTFCUVUwN1owSkJRMUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU51UlN4TlFVRk5PMmRDUVVOU0xFdEJRVXNzVVVGQlVUdHZRa0ZEV0N4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTTdiMEpCUXpkRUxFMUJRVTA3WVVGRFVEdFpRVU5FTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNSMEZCUnl4aFFVRmhMRWxCUVVrc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dFpRVVUzUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEUxQlFVMHNSVUZCUlR0blFrRkRia01zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEY2tVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dGhRVU5xUkR0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zV1VGQldTeEZRVUZGTEZGQlFWRXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRoUVVOc1JUdFRRVU5HTzFGQlJVUXNhVUpCUVdsQ08xRkJRMnBDTERaRVFVRTJSRHRSUVVNM1JDdzJSRUZCTmtRN1VVRkROMFFzTmtSQlFUWkVPMUZCUXpkRUxEWkVRVUUyUkR0UlFVTTNSQ3hYUVVGWE8xRkJRMWdzTWtSQlFUSkVPMUZCUXpORUxDdEVRVUVyUkR0SlFVTnFSU3hEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCYVVJc1JVRkJSU3haUVVGdlFpeERRVUZETzFGQlEyeEZMRWxCUVVrc1IwRkJSeXhIUVVGelFpeEpRVUZKTEVOQlFVTTdVVUZEYkVNc1VVRkJVU3hOUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEzaENMRXRCUVVzc1ZVRkJWU3hEUVVGRExIZENRVUYzUWp0blFrRkRkRU1zUjBGQlJ5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRExGVkJRVlVzUTBGQlF6dG5Ra0ZEY0VNc1RVRkJUVHRaUVVOU0xFdEJRVXNzVjBGQlZ5eERRVUZETEhkQ1FVRjNRanRuUWtGRGRrTXNSMEZCUnl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0blFrRkRka01zVFVGQlRUdFRRVU5RTzFGQlEwUXNUVUZCVFN4TFFVRkxMRWRCUVdkQ0xFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdVVUZGZUVZc1RVRkJUU3hyUWtGQmEwSXNSMEZCWjBNN1dVRkRkRVFzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeERRVUZETEZsQlFWa3NRMEZCUXp0WlFVTXpSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFOQlEzaEZMRU5CUVVNN1VVRkRSaXhuUkVGQlowUTdVVUZEYUVRc1RVRkJUU3h4UWtGQmNVSXNSMEZCWVN4clFrRkJhMEk3WVVGRGRrUXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWs3V1VGRFppeEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSVzVGTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZGYWtNc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU0N4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRV2xDTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVGelFqdFJRVU14UlN4TlFVRk5MRWxCUVVrc1IwRkJORUlzUlVGQlJTeERRVUZETzFGQlEzcERMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU4wUWl4SlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmRrSXNTMEZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTzFsQlEyNURMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVXpRaXhKUVVGSkxGZEJRVmNzU1VGQlNTeEpRVUZKTzJkQ1FVTnlRaXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0cFFrRkRka0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4TFFVRkxMRmRCUVZjN1owSkJRMnhETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkZja0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRk5CUVZNc1JVRkJSVHRuUWtGRE0wSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3YjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdkMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVOa08yRkJRMFk3VTBGRFJqdFJRVU5FTEU5QlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFZRVUZWTEVWQlFVTXNRMEZCUXp0SlFVTTVReXhEUVVGRE8wbEJSVTBzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFbEJRV3RDTEVWQlFVVXNVVUZCY1VJc1JVRkJSU3haUVVGdlFpeEhRVUZITzFGQlEzQkhMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGZGtJc1RVRkJUU3hMUVVGTExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF6TkNMRTFCUVUwc1UwRkJVeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU12UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdFpRVU53UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzcERPMUZCUTBRc01FWkJRVEJHTzFGQlF6RkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFbEJRVWtzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzVTBGQlV5eEhRVUZYTEVsQlFVa3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEUxQlFVMHNSMEZCUnl4SFFVRlhMR2RDUVVGblFpeERRVUZETEV0QlFVc3NSVUZCUlN4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42Unl4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMHNzV1VGQldTeERRVUZETEZOQlFYVkNPMUZCUXpGRExFbEJRVWtzUjBGQlJ5eEhRVUZ4UWl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8xRkJRek5GTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSVHRaUVVObUxFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NVMEZCVXl4RFFVRkRMRTlCUVU4c1JVRkJSVHRuUWtGRGJrTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZuUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4SlFVRkpMRVZCUVVVc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNXVUZCV1N4cFFrRkJhVUlzUTBGQlF5eEZRVUZGTzI5Q1FVTnlSQ3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETzI5Q1FVTldMRTFCUVUwN2FVSkJRMUE3WVVGRFJqdFRRVU5HTzFGQlEwUXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJTVVE3T3p0UFFVZEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZSTzFGQlEzQkRMRTFCUVUwc1IwRkJSeXhIUVVGaExFVkJRVVVzUTBGQmJVSXNSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1lVRkRia1lzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCYjBJc1JVRkJSU3hGUVVGRk8xbEJRelZDTEVsQlFVa3NTVUZCV1N4RFFVRkRPMWxCUTJwQ0xFMUJRVTBzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8yZENRVU5vUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlZTeEZRVUZGTzI5Q1FVTXpRaXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRE9VSTdjVUpCUVUwN2IwSkJRMHdzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0dlFrRkRWaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN2FVSkJReTlFTzJGQlEwWTdhVUpCUVUwN1owSkJRMHdzU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTldPMWxCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03VVVGRFpDeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRSUVVWbUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFRRVUZwUWp0UlFVTjBSQ3hQUVVGUExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdXVUZEY2tJc1QwRkJUeXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFTkJRVU1zUTBGQlF6dEpRVU5LTEVOQlFVTTdTVUZGUkN4NVJFRkJlVVE3U1VGRGJFUXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhMUVVGaExFVkJRVVVzVTBGQmFVSTdVVUZEZUVRc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xbEJRek5ETEU5QlFVOHNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJRenRUUVVOb1F6dGhRVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlR0WlFVTjBSQ3hQUVVGUExFOUJRVThzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dFRRVU53UkRzN1dVRkRReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEc5Q1FVRnZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXcEVMREJDUVVFd1FqdEpRVU0xUWl4RFFVRkRPenRCUVdweVFtRXNiVUpCUVZjc1IwRkJSeXhoUVVGaExFTkJRVU03UVVGRE0wSXNiVUpCUVZjc1IwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRV2x2UW5wQ0xHbENRVUZUTEVkQlFVY3NjVUpCUVhGQ0xFTkJRVU03UVVGcFJHcEVMRGhHUVVFNFJqdEJRVU12UlN4clFrRkJWU3hIUVVFclFqdEpRVU4wUkN4VFFVRlRMRVZCUVVVc1IwRkJSenRKUVVOa0xFOUJRVThzUlVGQlJTeEhRVUZITzBsQlExb3NUMEZCVHl4RlFVRkZMRWRCUVVjN1NVRkRXaXhQUVVGUExFVkJRVVVzUjBGQlJ6dERRVU5pTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdkM1VnWm5KdmJTQW5kM1VuTzF4dWFXMXdiM0owSUNvZ1lYTWdjbmhxY3lCbWNtOXRJQ2R5ZUdwekp6dGNibHh1YVcxd2IzSjBJSHRXWldOMGIzSjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3ZG1WamRHOXlUR1Z1WjNSb0xDQjJaV04wYjNKRWIzUlFjbTlrZFdOMGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMEZ0YVc1dllXTnBaSE1zSUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsYzMwZ1puSnZiU0FuTGk0dllXMXBibTloWTJsa2N5YzdYRzVwYlhCdmNuUWdlMDUxWTJ4bGIzUnBaR1Z6TENCT2RXTnNaVzkwYVdSbGMxQmhiR1YwZEdWemZTQm1jbTl0SUNjdUxpOXVkV05zWlc5MGFXUmxjeWM3WEc1cGJYQnZjblFnZTFWdWEyNXZkMjVUWlhGUVlXeGxkSFJsTENCVmJtdHViM2R1VTJWeFVHRnNaWFIwWlhOOUlHWnliMjBnSnk0dUwzVnVhMjV2ZDI0bk8xeHVhVzF3YjNKMElIdFRaWEZRWVd4bGRIUmxmU0JtY205dElDY3VMaTl6WlhFdGNHRnNaWFIwWlhNbk8xeHVhVzF3YjNKMElIdFRkV0p6WTNKcGNIUnBiMjU5SUdaeWIyMGdKM0o0YW5Nbk8xeHVYRzVrWldOc1lYSmxJRzF2WkhWc1pTQW5aR0YwWVdkeWIyc3RZWEJwTDNOeVl5OW5jbWxrSnlCN1hHNGdJR2x1ZEdWeVptRmpaU0JTWldOMElIdGNiaUFnSUNCamIyNTBZV2x1Y3loNE9pQnVkVzFpWlhJc0lIazZJRzUxYldKbGNpazZJR0p2YjJ4bFlXNDdYRzRnSUgxY2JuMWNibHh1WkdWamJHRnlaU0JuYkc5aVlXd2dlMXh1SUNCcGJuUmxjbVpoWTJVZ1NGUk5URU5oYm5aaGMwVnNaVzFsYm5RZ2UxeHVJQ0FnSUdkbGRFTjFjbk52Y2xCdmMybDBhVzl1S0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1RvZ1JFY3VVRzlwYm5RN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElIUjVjR1VnVFc5dWIyMWxja1p5WlhGeklEMGdleUJiYlRvZ2MzUnlhVzVuWFRvZ2JuVnRZbVZ5SUgwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUWlhGRGIyeFRkR0YwY3lBOUlIc2dabkpsY1RvZ1RXOXViMjFsY2taeVpYRnpMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgxY2JtVjRjRzl5ZENCMGVYQmxJRk53YkdsMGRHVnlSblZ1WXlBOUlDaHpaWEU2SUhOMGNtbHVaeWtnUFQ0Z2MzUnlhVzVuVzEwN1hHNWNia2hVVFV4RFlXNTJZWE5GYkdWdFpXNTBMbkJ5YjNSdmRIbHdaUzVuWlhSRGRYSnpiM0pRYjNOcGRHbHZiaUE5SUdaMWJtTjBhVzl1S0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1RvZ1JFY3VVRzlwYm5RZ2UxeHVJQ0JqYjI1emRDQnlaV04wSUQwZ2RHaHBjeTVuWlhSQ2IzVnVaR2x1WjBOc2FXVnVkRkpsWTNRb0tUdGNiaUFnY21WMGRYSnVJRzVsZHlCRVJ5NVFiMmx1ZENobGRtVnVkQzVqYkdsbGJuUllJQzBnY21WamRDNXNaV1owTENCbGRtVnVkQzVqYkdsbGJuUlpJQzBnY21WamRDNTBiM0FwTzF4dWZUdGNibHh1UkVjdVVtVmpkQzV3Y205MGIzUjVjR1V1WTI5dWRHRnBibk1nUFNCbWRXNWpkR2x2YmloNE9pQnVkVzFpWlhJc0lIazZJRzUxYldKbGNpazZJR0p2YjJ4bFlXNGdlMXh1SUNCeVpYUjFjbTRnZEdocGN5NXNaV1owSUR3OUlIZ2dKaVlnZUNBOFBTQjBhR2x6TG5KcFoyaDBJQ1ltSUhSb2FYTXVkRzl3SUR3OUlIa2dKaVlnZVNBOFBTQjBhR2x6TG1KdmRIUnZiVHRjYm4wN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adklIdGNiaUFnTHlvcUlGTmxjWFZsYm1ObGN5QmpiM1Z1ZENCM2FYUm9JRzF2Ym05dFpYSWdhVzRnY0c5emFYUnBiMjVjYmlBZ0lDb3ZYRzRnSUdOdmRXNTBPaUJ1ZFcxaVpYSTdYRzVjYmlBZ0x5b3FJRkpsYldWdFltVnlJSE5qY21WbGJpQmpiMjl5WkhNZ2NtVmpkRnh1SUNBZ0tpOWNiaUFnWW05MWJtUnpPaUJFUnk1U1pXTjBPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTF4dUlDQWdJSFJvYVhNdVkyOTFiblFnUFNBd08xeHVJQ0FnSUhSb2FYTXVZbTkxYm1SeklEMGdibVYzSUVSSExsSmxZM1FvTUN3Z01Dd2dNQ3dnTUNrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZCdmMybDBhVzl1U1c1bWJ5QjdYRzRnSUhCMVlteHBZeUJ5WldGa2IyNXNlU0J1WVcxbE9pQnpkSEpwYm1jN1hHNGdJR1p5WlhFNklIc2dXMjA2SUhOMGNtbHVaMTA2SUZCdmMybDBhVzl1VFc5dWIyMWxja2x1Wm04Z2ZUdGNiaUFnY205M1EyOTFiblE2SUc1MWJXSmxjanRjYmx4dUlDQXZLaW9nWm5KbGNTQTlJSHQ5TENCeWIzZERiM1Z1ZENBOUlEQmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUc1aGJXVWdUbUZ0WlNCdlppQndiM05wZEdsdmJpQW9KekV4TVVFbkxDQW5NVEV4TGpFbkxDQmxkR01wWEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNSdmNpaHVZVzFsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0IwYUdsekxtNWhiV1VnUFNCdVlXMWxPMXh1SUNBZ0lIUm9hWE11Wm5KbGNTQTlJSHQ5TzF4dUlDQWdJSFJvYVhNdWNtOTNRMjkxYm5RZ1BTQXdPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlhaV0pNYjJkdklHVjRkR1Z1WkhNZ1JFY3VTbk5XYVdWM1pYSWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsYzJsa2RXVnpVMlYwSUQwZ0oyNTFZMnhsYjNScFpHVnpKenRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nZG1sbGQyVnlRMjkxYm5RNklHNTFiV0psY2lBOUlDMHhPMXh1WEc0Z0lIQnlhWFpoZEdVZ2RtbGxkMlZ5U1dRNklHNTFiV0psY2lBOUlDMHhPMXh1SUNCd2NtbDJZWFJsSUdsdWFYUnBZV3hwZW1Wa09pQmliMjlzWldGdUlEMGdabUZzYzJVN1hHNWNiaUFnTHk4Z2NISnBkbUYwWlNCeVpXRmtiMjVzZVNCamIyeHZjbE5qYUdWdFpUb2dRMjlzYjNKVFkyaGxiV1VnUFNCRGIyeHZjbE5qYUdWdFpYTmJUblZqYkdWdmRHbGtaWE5YWldKTWIyZHZMbkpsYzJsa2RXVnpVMlYwWFR0Y2JpQWdjSEp2ZEdWamRHVmtJR053T2lCVFpYRlFZV3hsZEhSbElId2diblZzYkNBOUlHNTFiR3c3WEc1Y2JpQWdjSEpwZG1GMFpTQm9iM04wUHpvZ1NGUk5URVJwZGtWc1pXMWxiblE3WEc0Z0lIQnlhWFpoZEdVZ2JYTm5TRzl6ZEQ4NklFaFVUVXhGYkdWdFpXNTBPMXh1SUNCd2NtbDJZWFJsSUdOaGJuWmhjejg2SUVoVVRVeERZVzUyWVhORmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElITnNhV1JsY2o4NklFUkhMbEpoYm1kbFUyeHBaR1Z5TzF4dUlDQndjbWwyWVhSbElIUmxlSFJDWVhObGJHbHVaVG9nUTJGdWRtRnpWR1Y0ZEVKaGMyVnNhVzVsTzF4dVhHNGdJSEJ5YVhaaGRHVWdZWGhwYzBobGFXZG9kRG9nYm5WdFltVnlJRDBnTVRJN1hHNWNiaUFnY0hKcGRtRjBaU0J6WlhGRGIydzZJRVJITGtOdmJIVnRianh6ZEhKcGJtYytJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQzh2SUhCeWFYWmhkR1VnYldGNFRHVnVaM1JvT2lCdWRXMWlaWElnUFNBeE1EQTdYRzRnSUhCeWFYWmhkR1VnY0c5emFYUnBiMjV6T2lCUWIzTnBkR2x2YmtsdVptOWJYU0E5SUZ0ZE8xeHVYRzRnSUhCeWFYWmhkR1VnY205M2MwMWhjMnRsWkRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnY0hKcGRtRjBaU0J5YjNkelRuVnNiRG9nYm5WdFltVnlJRDBnTUR0Y2JseHVJQ0F2THlCV2FXVjNaWEluY3lCd2NtOXdaWEowYVdWeklDaHNhV3RsYkhrZ2RHaGxlU0J6YUc5MWJHUWdZbVVnY0hWaWJHbGpJSE52SUhSb1lYUWdkR2hsZVNCallXNGdZbVVnYzJWMElHOTFkSE5wWkdVcFhHNGdJSEJ5YVhaaGRHVWdYM0J2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklIQnZjMmwwYVc5dVYybGtkR2c2SUc1MWJXSmxjanRjYmlBZ2NIVmliR2xqSUcxcGJraGxhV2RvZERvZ2JuVnRZbVZ5TzF4dUlDQndkV0pzYVdNZ2JXRjRTR1ZwWjJoME9pQnVkVzFpWlhJN1hHNGdJSEIxWW14cFl5QmpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE02SUdKdmIyeGxZVzQ3WEc0Z0lIQjFZbXhwWXlCelpYRjFaVzVqWlVOdmJIVnRiazVoYldVNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCemRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdWdVpGQnZjMmwwYVc5dVRtRnRaVG9nYzNSeWFXNW5JSHdnYm5Wc2JEdGNiaUFnY0hWaWJHbGpJR1pwZUZkcFpIUm9PaUJpYjI5c1pXRnVPMXh1SUNCd2RXSnNhV01nZG1WeWRHbGpZV3hCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUI4SUc1MWJHdzdYRzRnSUhCMVlteHBZeUJvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwT2lCemRISnBibWNnZkNCdWRXeHNPMXh1SUNCd2RXSnNhV01nWm1sMFFYSmxZVG9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhOb2NtbHVhMFZ0Y0hSNVZHRnBiRG9nWW05dmJHVmhianRjYmx4dUlDQndjbWwyWVhSbElIQnZjMmwwYVc5dVRtRnRaWE02SUhOMGNtbHVaMXRkSUQwZ1cxMDdYRzVjYmlBZ2NISnBkbUYwWlNCemRHRnlkRkJ2YzJsMGFXOXVPaUJ1ZFcxaVpYSWdQU0F0TVR0Y2JseHVJQ0J3Y21sMllYUmxJR1Z1WkZCdmMybDBhVzl1T2lCdWRXMWlaWElnUFNBdE1UdGNibHh1SUNBdktpb2dSbTl5SUhOMFlYSjBVRzl6YVhScGIyNGdaWEYxWVd4eklIUnZJR1Z1WkZCdmMybDBhVzl1SUV4bGJtZDBhQ0JwY3lBeElDb3ZYRzRnSUhCeWFYWmhkR1VnWjJWMElFeGxibWQwYUNncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnUEQwZ2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBL0lIUm9hWE11Wlc1a1VHOXphWFJwYjI0Z0xTQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUF4SURvZ01EdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdkbWxsZDFOMVluTTZJRk4xWW5OamNtbHdkR2x2Ymx0ZElEMGdXMTA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnYzNWd1pYSW9LVHRjYmx4dUlDQWdJSFJvYVhNdWRtbGxkMlZ5U1dRZ1BTQlhaV0pNYjJkdkxuWnBaWGRsY2tOdmRXNTBPMXh1SUNBZ0lGZGxZa3h2WjI4dWRtbGxkMlZ5UTI5MWJuUWdLejBnTVR0Y2JseHVJQ0FnSUhSb2FYTXVkR1Y0ZEVKaGMyVnNhVzVsSUQwZ0ozUnZjQ2M3WEc1Y2JpQWdJQ0IwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb0lEMGdkR2hwY3k1bWJHOWhkQ2duY0c5emFYUnBiMjVYYVdSMGFDY3NJREUyTHlvc1hHNGdJQ0FnSUNCN1pXUnBkRzl5T2lBbmMyeHBaR1Z5Snl3Z2JXbHVPaUEwTENCdFlYZzZJRFkwTENCd2IzTjBabWw0T2lBbmNIZ25mU292S1R0Y2JpQWdJQ0IwYUdsekxtMXBia2hsYVdkb2RDQTlJSFJvYVhNdVpteHZZWFFvSjIxcGJraGxhV2RvZENjc0lEVXdMeW9zWEc0Z0lDQWdJQ0I3WldScGRHOXlPaUFuYzJ4cFpHVnlKeXdnYldsdU9pQXlOU3dnYldGNE9pQXlOVEFzSUhCdmMzUm1hWGc2SUNkd2VDZDlLaThwTzF4dUlDQWdJSFJvYVhNdWJXRjRTR1ZwWjJoMElEMGdkR2hwY3k1bWJHOWhkQ2duYldGNFNHVnBaMmgwSnl3Z01UQXdMeW9zWEc0Z0lDQWdJQ0I3WldScGRHOXlPaUFuYzJ4cFpHVnlKeXdnYldsdU9pQXlOU3dnYldGNE9pQTFNREFzSUhCdmMzUm1hWGc2SUNkd2VDZDlLaThwTzF4dVhHNGdJQ0FnZEdocGN5NWpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1nUFNCMGFHbHpMbUp2YjJ3b0oyTnZibk5wWkdWeVRuVnNiRk5sY1hWbGJtTmxjeWNzSUdaaGJITmxLVHRjYmlBZ0lDQjBhR2x6TG5ObGNYVmxibU5sUTI5c2RXMXVUbUZ0WlNBOUlIUm9hWE11YzNSeWFXNW5LQ2R6WlhGMVpXNWpaVU52YkhWdGJrNWhiV1VuTENCdWRXeHNLVHRjYmx4dUlDQWdJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiazVoYldVZ1BTQjBhR2x6TG5OMGNtbHVaeWduYzNSaGNuUlFiM05wZEdsdmJrNWhiV1VuTENCdWRXeHNLVHRjYmlBZ0lDQjBhR2x6TG1WdVpGQnZjMmwwYVc5dVRtRnRaU0E5SUhSb2FYTXVjM1J5YVc1bktDZGxibVJRYjNOcGRHbHZiazVoYldVbkxDQnVkV3hzS1R0Y2JseHVJQ0FnSUhSb2FYTXVabWw0VjJsa2RHZ2dQU0IwYUdsekxtSnZiMndvSjJacGVGZHBaSFJvSnl3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnZEdocGN5NTJaWEowYVdOaGJFRnNhV2R1YldWdWRDQTlJSFJvYVhNdWMzUnlhVzVuS0NkMlpYSjBhV05oYkVGc2FXZHViV1Z1ZENjc0lDZHRhV1JrYkdVbkxGeHVJQ0FnSUNBZ2UyTm9iMmxqWlhNNklGc25kRzl3Snl3Z0oyMXBaR1JzWlNjc0lDZGliM1IwYjIwblhYMHBPMXh1SUNBZ0lIUm9hWE11YUc5eWFYcHZiblJoYkVGc2FXZHViV1Z1ZENBOUlIUm9hWE11YzNSeWFXNW5LQ2RvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwSnl3Z0oyTmxiblJsY2ljc1hHNGdJQ0FnSUNCN1kyaHZhV05sY3pvZ1d5ZHNaV1owSnl3Z0oyTmxiblJsY2ljc0lDZHlhV2RvZENkZGZTazdYRzRnSUNBZ2RHaHBjeTVtYVhSQmNtVmhJRDBnZEdocGN5NWliMjlzS0NkbWFYUkJjbVZoSnl3Z2RISjFaU2s3WEc0Z0lDQWdkR2hwY3k1emFISnBibXRGYlhCMGVWUmhhV3dnUFNCMGFHbHpMbUp2YjJ3b0ozTm9jbWx1YTBWdGNIUjVWR0ZwYkNjc0lIUnlkV1VwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCaGMzbHVZeUJwYm1sMEtDazZJRkJ5YjIxcGMyVThkbTlwWkQ0Z2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1sdWFYUnBZV3hwZW1Wa0tTQjdYRzRnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0NkWFpXSk1iMmR2SUhObFkyOXVaQ0JwYm1sMGFXRnNhWHBoZEdsdmJpRW5LVHRjYmlBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1YVhScFlXeHBlbVZrSUQwZ2RISjFaVHRjYmlBZ0lDQjBhR2x6TG1obGJIQlZjbXdnUFNBbkwyaGxiSEF2ZG1semRXRnNhWHBsTDNacFpYZGxjbk12ZDJWaUxXeHZaMjh1YldRbk8xeHVYRzRnSUNBZ2RHaHBjeTV0YzJkSWIzTjBJRDBnZFdrdVpHbDJLQ2RPYnlCdFpYTnpZV2RsSnlrN1hHNGdJQ0FnZEdocGN5NXRjMmRJYjNOMExuTjBlV3hsTG1ScGMzQnNZWGtnUFNBbmJtOXVaU2M3WEc1Y2JpQWdJQ0IwYUdsekxtTmhiblpoY3lBOUlIVnBMbU5oYm5aaGN5Z3BPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuZHBaSFJvSUQwZ0p6RXdNQ1VuTzF4dVhHNGdJQ0FnZEdocGN5NW9iM04wSUQwZ2RXa3VaR2wyS0Z0MGFHbHpMbTF6WjBodmMzUXNJSFJvYVhNdVkyRnVkbUZ6WFNrN1hHNWNiaUFnSUNBdkx5QjBhR2x6TG5Oc2FXUmxjaUE5SUhWcExuSmhibWRsVTJ4cFpHVnlLREFzSURJd0xDQXlMQ0ExS1R0Y2JpQWdJQ0F2THlCMGFHbHpMbk5zYVdSbGNpNXliMjkwTG5OMGVXeGxMbmRwWkhSb0lEMGdKekV3TUNVbk8xeHVJQ0FnSUM4dklIUm9hWE11YzJ4cFpHVnlMbkp2YjNRdWMzUjViR1V1YUdWcFoyaDBJRDBnSnpFeWNIZ25PMXh1WEc0Z0lDQWdZMjl1YzNRZ1oyVjBUVzl1YjIxbGNpQTlJQ2h3T2lCRVJ5NVFiMmx1ZENrNklGdHVkVzFpWlhJc0lITjBjbWx1WnlCOElHNTFiR3dzSUZCdmMybDBhVzl1VFc5dWIyMWxja2x1Wm04Z2ZDQnVkV3hzWFNBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcVVHOXpJRDBnVFdGMGFDNW1iRzl2Y2lod0xuZ2dMeUIwYUdsekxsOXdiM05wZEdsdmJsZHBaSFJvS1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEJ2YzJsMGFXOXVJRDBnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwN1hHNWNiaUFnSUNBZ0lHbG1JQ2h3YjNOcGRHbHZiaUE5UFQwZ2RtOXBaQ0F3S1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVzJwUWIzTXNJRzUxYkd3c0lHNTFiR3hkTzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0J0YjI1dmJXVnlPaUJ6ZEhKcGJtY2dmQ0IxYm1SbFptbHVaV1FnUFNCUFltcGxZM1F1YTJWNWN5aHdiM05wZEdsdmJpNW1jbVZ4S1Z4dUlDQWdJQ0FnSUNBdVptbHVaQ2dvYlNrZ1BUNGdjRzl6YVhScGIyNHVabkpsY1Z0dFhTNWliM1Z1WkhNdVkyOXVkR0ZwYm5Nb2NDNTRMQ0J3TG5rcEtUdGNiaUFnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlJRDA5UFNCMWJtUmxabWx1WldRcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYmFsQnZjeXdnYm5Wc2JDd2diblZzYkYwN1hHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCYmFsQnZjeXdnYlc5dWIyMWxjaXdnY0c5emFYUnBiMjR1Wm5KbGNWdHRiMjV2YldWeVhWMDdYRzRnSUNBZ2ZUdGNibHh1WEc0Z0lDQWdMeThnZEdocGN5NXpkV0p6TG5CMWMyZ29jbmhxY3k1bWNtOXRSWFpsYm5ROFRXOTFjMlZGZG1WdWRENG9kR2hwY3k1allXNTJZWE1zSUNkdGIzVnpaVzkyWlhJbktTNXpkV0p6WTNKcFltVW9LR1U2SUUxdmRYTmxSWFpsYm5RcElEMCtJSHRjYmlBZ0lDQXZMeUI5S1NrN1hHNWNiaUFnSUNCMGFHbHpMblpwWlhkVGRXSnpMbkIxYzJnb2NuaHFjeTVtY205dFJYWmxiblE4VFc5MWMyVkZkbVZ1ZEQ0b2RHaHBjeTVqWVc1MllYTXNJQ2R0YjNWelpXMXZkbVVuS1M1emRXSnpZM0pwWW1Vb0tHVTZJRTF2ZFhObFJYWmxiblFwSUQwK0lIdGNiaUFnSUNBZ0lHbG1JQ2doZEdocGN5NWpZVzUyWVhNcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWVhKbmN5QTlJR1VnWVhNZ1RXOTFjMlZGZG1WdWREdGNiaUFnSUNBZ0lHTnZibk4wSUZ0cVVHOXpMQ0J0YjI1dmJXVnlYU0E5SUdkbGRFMXZibTl0WlhJb2RHaHBjeTVqWVc1MllYTXVaMlYwUTNWeWMyOXlVRzl6YVhScGIyNG9ZWEpuY3lrcE8xeHVYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVWdKaVlnZEdocGN5NXpaWEZEYjJ3Z0ppWWdiVzl1YjIxbGNpa2dlMXh1SUNBZ0lDQWdJQ0IxYVM1MGIyOXNkR2x3TG5Ob2IzZFNiM2RIY205MWNDaDBhR2x6TG1SaGRHRkdjbUZ0WlN3Z0tHbFNiM2NwSUQwK0lIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnpaWEVnUFNCMGFHbHpMbk5sY1VOdmJDRXVaMlYwS0dsU2IzY3BPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSE5sY1UwZ1BTQnpaWEVnUHlCWFpXSk1iMmR2TG5Od2JHbDBkR1Z5UVhOR1lYTjBZU2h6WlhFcFczUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQXJJR3BRYjNOZElEb2diblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2MyVnhUU0E5UFQwZ2JXOXViMjFsY2lBbUppQjBhR2x6TG1SaGRHRkdjbUZ0WlM1bWFXeDBaWEl1WjJWMEtHbFNiM2NwTzF4dUlDQWdJQ0FnSUNCOUxDQmhjbWR6TG5nZ0t5QXhOaXdnWVhKbmN5NTVJQ3NnTVRZcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RXa3VkRzl2YkhScGNDNW9hV1JsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrcE8xeHVYRzRnSUNBZ2RHaHBjeTUyYVdWM1UzVmljeTV3ZFhOb0tISjRhbk11Wm5KdmJVVjJaVzUwUEUxdmRYTmxSWFpsYm5RK0tIUm9hWE11WTJGdWRtRnpMQ0FuYlc5MWMyVmtiM2R1SnlrdWMzVmljMk55YVdKbEtDaGxPaUJOYjNWelpVVjJaVzUwS1NBOVBpQjdYRzRnSUNBZ0lDQnBaaUFvSVhSb2FYTXVZMkZ1ZG1GeklIeDhJR1V1WW5WMGRHOXVJQ0U5SURBcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWVhKbmN5QTlJR1VnWVhNZ1RXOTFjMlZGZG1WdWREdGNiaUFnSUNBZ0lHTnZibk4wSUZ0cVVHOXpMQ0J0YjI1dmJXVnlYU0E5SUdkbGRFMXZibTl0WlhJb2RHaHBjeTVqWVc1MllYTXVaMlYwUTNWeWMyOXlVRzl6YVhScGIyNG9ZWEpuY3lrcE8xeHVYRzRnSUNBZ0lDQXZMeUJ3Y21WMlpXNTBjeUJrWlhObGJHVmpkQ0JoYkd3Z2NtOTNjeUJwWmlCM1pTQnRhWE56SUcxdmJtOXRaWElnWW05MWJtUnpYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVWdKaVlnZEdocGN5NXpaWEZEYjJ3Z0ppWWdiVzl1YjIxbGNpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVhVzVwZENnb2FWSnZkeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdjMlZ4VFNBOUlITmxjU0EvSUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBaaGMzUmhLSE5sY1NsYmRHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlDc2dhbEJ2YzEwZ09pQnVkV3hzTzF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCelpYRk5JRDA5UFNCdGIyNXZiV1Z5SUNZbUlIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTVuWlhRb2FWSnZkeWs3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcEtUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Y0hWemFDaDFhUzV2YmxOcGVtVkRhR0Z1WjJWa0tIUm9hWE11Y205dmRDa3VjM1ZpYzJOeWFXSmxLSFJvYVhNdWNtOXZkRTl1VTJsNlpVTm9ZVzVuWldRdVltbHVaQ2gwYUdsektTa3BPMXh1WEc0Z0lDQWdkR2hwY3k1eWIyOTBMbUZ3Y0dWdVpDaDBhR2x6TG1odmMzUXBPMXh1SUNBZ0lDOHZJSFJvYVhNdWNtOXZkQzVoY0hCbGJtUkRhR2xzWkNoMGFHbHpMbk5zYVdSbGNpNXliMjkwS1R0Y2JseHVJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCeWIyOTBUMjVUYVhwbFEyaGhibWRsWkNoaGNtZHpPaUJoYm5rcElIdGNiaUFnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JseHVJQ0FnSUM4dklHTnZibk52YkdVdVpHVmlkV2NvWUZkbFlreHZaMjh1YjI1U2IyOTBVMmw2WlVOb1lXNW5aV1FvS1NCZ0lDdGNiaUFnSUNBdkx5QWdJR0J5YjI5MExuZHBaSFJvUFNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEZkcFpIUm9mU3dnY205dmRDNW9aV2xuYUhROUpIdDBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwZlN3Z1lDQXJYRzRnSUNBZ0x5OGdJQ0JnWTJGdWRtRnpMbmRwWkhSb1BTUjdkR2hwY3k1allXNTJZWE11ZDJsa2RHaDlMQ0JqWVc1MllYTXVhR1ZwWjJoMFBTUjdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBmU0F1WUNrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUVhOemFXZHVjeUI3UUd4cGJtc2djMlZ4UTI5c2ZTQmhibVFnZTBCc2FXNXJJR053ZlNCaVlYTmxaQ0J2YmlCN1FHeHBibXNnYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsZlNCaGJtUWdZMkZzYkhNZ2UwQnNhVzVySUhKbGJtUmxjbjBvS1M1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2RYQmtZWFJsVTJWeFEyOXNLQ2s2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZHY21GdFpTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU0EvSUhSb2FYTXVaR0YwWVVaeVlXMWxMbU52YkNoMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU2tnT2lCdWRXeHNPMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlZ4UTI5c0lEMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYRkRiMndnUFNCMGFHbHpMbkJwWTJ0VmNGTmxjVU52YkNoMGFHbHpMbVJoZEdGR2NtRnRaU2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlZ4ZFdWdVkyVkRiMngxYlc1T1lXMWxJRDBnZEdocGN5NXpaWEZEYjJ3Z1B5QjBhR2x6TG5ObGNVTnZiQzV1WVcxbElEb2diblZzYkR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWQnZjMmwwYVc5dWN5Z3BPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtTndJRDBnVjJWaVRHOW5ieTV3YVdOclZYQlFZV3hsZEhSbEtIUm9hWE11YzJWeFEyOXNLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeUE5SUZ0ZE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQU0F0TVR0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVsYm1SUWIzTnBkR2x2YmlBOUlDMHhPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtTndJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnZEdocGN5NXlaVzVrWlhJb0tUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdkWEJrWVhSbFVHOXphWFJwYjI1ektDazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1elpYRkRiMndwWEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzVjYmlBZ0lDQnNaWFFnWTJGMFpXZHZjbWxsY3pvZ0tITjBjbWx1WnlCOElHNTFiR3dwSUZ0ZE8xeHVJQ0FnSUdsbUlDaDBhR2x6TG5Ob2NtbHVhMFZ0Y0hSNVZHRnBiQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhVzVrYVdObGN6b2dTVzUwTXpKQmNuSmhlU0E5SUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNW5aWFJUWld4bFkzUmxaRWx1WkdWNFpYTW9LVHRjYmlBZ0lDQWdJR05oZEdWbmIzSnBaWE1nUFNCQmNuSmhlUzVtY205dEtHNWxkeUJUWlhRb1hHNGdJQ0FnSUNBZ0lFRnljbUY1TG1aeWIyMG9RWEp5WVhrb2FXNWthV05sY3k1c1pXNW5kR2dwTG10bGVYTW9LU2t1YldGd0tDaHBPaUJ1ZFcxaVpYSXBJRDArSUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVc1a2FXTmxjMXRwWFNrcEtTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdOaGRHVm5iM0pwWlhNZ1BTQjBhR2x6TG5ObGNVTnZiQzVqWVhSbFoyOXlhV1Z6TzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCdFlYaE1aVzVuZEdnZ1BTQmpZWFJsWjI5eWFXVnpMbXhsYm1kMGFDQStJREFnUHlCTllYUm9MbTFoZUNndUxpNWpZWFJsWjI5eWFXVnpMbTFoY0NoY2JpQWdJQ0FnSUNoektTQTlQaUJ6SUNFOVBTQnVkV3hzSUQ4Z1YyVmlURzluYnk1emNHeHBkSFJsY2tGelJtRnpkR0VvY3lrdWJHVnVaM1JvSURvZ01Da3BJRG9nTUR0Y2JseHVJQ0FnSUM4dklFZGxkQ0J3YjNOcGRHbHZiaUJ1WVcxbGN5Qm1jbTl0SUdSaGRHRWdZMjlzZFcxdUlIUmhaeUFuY0c5emFYUnBiMjVPWVcxbGN5ZGNiaUFnSUNCamIyNXpkQ0J3YjNOcGRHbHZiazVoYldWelZIaDBJRDBnZEdocGN5NXpaWEZEYjJ3dVoyVjBWR0ZuS0Nkd2IzTnBkR2x2Yms1aGJXVnpKeWs3WEc0Z0lDQWdMeThnUm1Gc2JHSmhZMnNnYVdZZ0ozQnZjMmwwYVc5dVRtRnRaWE1uSUhSaFp5QnBjeUJ1YjNRZ2NISnZkbWxrWldSY2JpQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE1nUFNCd2IzTnBkR2x2Yms1aGJXVnpWSGgwSUQ4Z2NHOXphWFJwYjI1T1lXMWxjMVI0ZEM1emNHeHBkQ2duTENBbktTNXRZWEFvS0c0cElEMCtJRzR1ZEhKcGJTZ3BLU0E2WEc0Z0lDQWdJQ0JiTGk0dVFYSnlZWGtvYldGNFRHVnVaM1JvS1M1clpYbHpLQ2xkTG0xaGNDZ29hbEJ2Y3lrZ1BUNGdZQ1I3YWxCdmN5QXJJREY5WUNrN1hHNWNiaUFnSUNCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z1BTQW9kR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNBbUppQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTWdKaVpjYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeTVwYm1Oc2RXUmxjeWgwYUdsekxuTjBZWEowVUc5emFYUnBiMjVPWVcxbEtTa2dQMXh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpMbWx1WkdWNFQyWW9kR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNrZ09pQXdPMXh1SUNBZ0lIUm9hWE11Wlc1a1VHOXphWFJwYjI0Z1BTQW9kR2hwY3k1bGJtUlFiM05wZEdsdmJrNWhiV1VnSmlZZ2RHaHBjeTV3YjNOcGRHbHZiazVoYldWeklDWW1YRzRnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1VG1GdFpYTXVhVzVqYkhWa1pYTW9kR2hwY3k1bGJtUlFiM05wZEdsdmJrNWhiV1VwS1NBL1hHNGdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNdWFXNWtaWGhQWmloMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTa2dPaUFvYldGNFRHVnVaM1JvSUMwZ01TazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiM1psY25KcFpHVWdiMjVRY205d1pYSjBlVU5vWVc1blpXUW9jSEp2Y0dWeWRIazZJRVJITGxCeWIzQmxjblI1S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ5NXZibEJ5YjNCbGNuUjVRMmhoYm1kbFpDZ2dKSHR3Y205d1pYSjBlUzV1WVcxbGZTQTlJQ2NuSUgwcFlDazdYRzRnSUNBZ2MzVndaWEl1YjI1UWNtOXdaWEowZVVOb1lXNW5aV1FvY0hKdmNHVnlkSGtwTzF4dVhHNGdJQ0FnYzNkcGRHTm9JQ2h3Y205d1pYSjBlUzV1WVcxbEtTQjdYRzRnSUNBZ1kyRnpaU0FuWTI5dWMybGtaWEpPZFd4c1UyVnhkV1Z1WTJWekp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbEp6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZHpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpTYzZYRzRnSUNBZ0lDQjBhR2x6TG5Wd1pHRjBaVk5sY1VOdmJDZ3BPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5aVzVrVUc5emFYUnBiMjVPWVcxbEp6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVMlZ4UTI5c0tDazdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElDZHdiM05wZEdsdmJsZHBaSFJvSnpwY2JpQWdJQ0FnSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ1BTQjBhR2x6TG5CdmMybDBhVzl1VjJsa2RHZzdYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0oyMXBia2hsYVdkb2RDYzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0oyMWhlRWhsYVdkb2RDYzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWgwY25WbEtUdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ0oyWnBlRmRwWkhSb0p6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBbmRtVnlkR2xqWVd4QmJHbG5ibTFsYm5Rbk9seHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1MEp6cGNiaUFnSUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBblptbDBRWEpsWVNjNlhHNGdJQ0FnSUNCMGFHbHpMbkpsYm1SbGNpaDBjblZsS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNOb2NtbHVhMFZ0Y0hSNVZHRnBiQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuVndaR0YwWlZCdmMybDBhVzl1Y3lncE8xeHVJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdiM1psY25KcFpHVWdZWE41Ym1NZ2IyNVVZV0pzWlVGMGRHRmphR1ZrS0NrZ2UxeHVJQ0FnSUdOdmJuTjBJR1JoZEdGR2NtRnRaVlI0ZERvZ2MzUnlhVzVuSUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1VnUHlBblpHRjBZU2NnT2lBbmJuVnNiQ2M3WEc0Z0lDQWdZMjl1YzI5c1pTNWtaV0oxWnloZ1ltbHZPaUJYWldKTWIyZHZQQ1I3ZEdocGN5NTJhV1YzWlhKSlpIMCtMbTl1VkdGaWJHVkJkSFJoWTJobFpDZ2daR0YwWVVaeVlXMWxJRDBnSkh0a1lYUmhSbkpoYldWVWVIUjlJQ2tnYzNSaGNuUmdLVHRjYmlBZ0lDQnpkWEJsY2k1dmJsUmhZbXhsUVhSMFlXTm9aV1FvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkWEJrWVhSbFUyVnhRMjlzS0NrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1a1lYUmhSbkpoYldVZ0lUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1emRXSnpMbkIxYzJnb2RHaHBjeTVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG05dVEyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tGOHBJRDArSUhSb2FYTXVjbVZ1WkdWeUtDa3BLVHRjYmlBZ0lDQWdJSFJvYVhNdWMzVmljeTV3ZFhOb0tIUm9hWE11WkdGMFlVWnlZVzFsTG1acGJIUmxjaTV2YmtOb1lXNW5aV1F1YzNWaWMyTnlhV0psS0NoZktTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFVHOXphWFJwYjI1ektDazdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0NrN1hHNGdJQ0FnSUNCOUtTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1lYZGhhWFFnZEdocGN5NXBibWwwS0NrN1hHNGdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdZbWx2T2lCWFpXSk1iMmR2UENSN2RHaHBjeTUyYVdWM1pYSkpaSDArTG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dwSUdWdVpHQXBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJRzkyWlhKeWFXUmxJR0Z6ZVc1aklHUmxkR0ZqYUNncElIdGNiaUFnSUNCamIyNXpkQ0JrWVhSaFJuSmhiV1ZVZUhRZ1BTQmdKSHQwYUdsekxtUmhkR0ZHY21GdFpTQS9JQ2RrWVhSaEp5QTZJQ2R1ZFd4c0ozMWdPMXh1SUNBZ0lHTnZibk52YkdVdVpHVmlkV2NvWUdKcGJ6b2dWMlZpVEc5bmJ6d2tlM1JvYVhNdWRtbGxkMlZ5U1dSOVBpNXZibFJoWW14bFFYUjBZV05vWldRb0lHUmhkR0ZHY21GdFpTQTlJQ1I3WkdGMFlVWnlZVzFsVkhoMGZTQXBJSE4wWVhKMFlDazdYRzRnSUNBZ2MzVndaWEl1WkdWMFlXTm9LQ2s3WEc1Y2JpQWdJQ0IwYUdsekxuWnBaWGRUZFdKekxtWnZja1ZoWTJnb0tITjFZaWtnUFQ0Z2MzVmlMblZ1YzNWaWMyTnlhV0psS0NrcE8xeHVJQ0FnSUhSb2FYTXVhRzl6ZENFdWNtVnRiM1psS0NrN1hHNGdJQ0FnZEdocGN5NWpZVzUyWVhNZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RHaHBjeTV0YzJkSWIzTjBJRDBnZFc1a1pXWnBibVZrTzF4dUlDQWdJSFJvYVhNdWFHOXpkQ0E5SUhWdVpHVm1hVzVsWkR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVwZEdsaGJHbDZaV1FnUFNCbVlXeHpaVHRjYmlBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0dCaWFXODZJRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHViMjVVWVdKc1pVRjBkR0ZqYUdWa0tDa2daVzVrWUNrN1hHNGdJSDFjYmx4dUlDQndjbTkwWldOMFpXUWdYMjUxYkd4VFpYRjFaVzVqWlNobWFXeHNaWEpTWlhOcFpIVmxJRDBnSjFnbktUb2djM1J5YVc1bklIdGNiaUFnSUNCcFppQW9kR2hwY3k1amIyNXphV1JsY2s1MWJHeFRaWEYxWlc1alpYTXBYRzRnSUNBZ0lDQnlaWFIxY200Z2JtVjNJRUZ5Y21GNUtIUm9hWE11VEdWdVozUm9LUzVtYVd4c0tHWnBiR3hsY2xKbGMybGtkV1VwTG1wdmFXNG9KeWNwTzF4dVhHNGdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQjlYRzVjYmlBZ2NISnZkR1ZqZEdWa0lGOWpZV3hqZFd4aGRHVW9LU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5QjhmQ0FoZEdocGN5NW9iM04wSUh4OElDRjBhR2x6TG5ObGNVTnZiQ0I4ZkNBaGRHaHBjeTVrWVhSaFJuSmhiV1VwWEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzVjYmlBZ0lDQjBhR2x6TG1OaGJHTlRhWHBsS0NrN1hHNWNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVjeUE5SUc1bGR5QkJjbkpoZVNoMGFHbHpMa3hsYm1kMGFDazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCd2IzTk9ZVzFsT2lCemRISnBibWNnUFNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhOYmRHaHBjeTV6ZEdGeWRGQnZjMmwwYVc5dUlDc2dhbEJ2YzEwN1hHNGdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTQTlJRzVsZHlCUWIzTnBkR2x2YmtsdVptOG9jRzl6VG1GdFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdNakF5TWkwd05TMHdOU0JoYzJ0aGJHdHBiaUJwYm5OMGNuVmpkR1ZrSUhSdklITm9iM2NnVjJWaVRHOW5ieUJpWVhObFpDQnZiaUJtYVd4MFpYSWdLRzV2ZENCelpXeGxZM1JwYjI0cFhHNGdJQ0FnWTI5dWMzUWdhVzVrYVdObGN5QTlJSFJvYVhNdVpHRjBZVVp5WVcxbExtWnBiSFJsY2k1blpYUlRaV3hsWTNSbFpFbHVaR1Y0WlhNb0tUdGNiaUFnSUNBdkx5QmpiMjV6ZENCcGJtUnBZMlZ6SUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5SeWRXVkRiM1Z1ZENBK0lEQWdQeUIwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVaMlYwVTJWc1pXTjBaV1JKYm1SbGVHVnpLQ2tnT2x4dUlDQWdJQzh2SUNBZ2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbWRsZEZObGJHVmpkR1ZrU1c1a1pYaGxjeWdwTzF4dVhHNGdJQ0FnZEdocGN5NXliM2R6VFdGemEyVmtJRDBnYVc1a2FXTmxjeTVzWlc1bmRHZzdYRzRnSUNBZ2RHaHBjeTV5YjNkelRuVnNiQ0E5SURBN1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHa2diMllnYVc1a2FXTmxjeWtnZTF4dUlDQWdJQ0FnYkdWMElITTZJSE4wY21sdVp5QTlJRHh6ZEhKcGJtYytLSFJvYVhNdWMyVnhRMjlzTG1kbGRDaHBLU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hjeWtnZTF4dUlDQWdJQ0FnSUNCeklEMGdkR2hwY3k1ZmJuVnNiRk5sY1hWbGJtTmxLQ2s3WEc0Z0lDQWdJQ0FnSUNzcmRHaHBjeTV5YjNkelRuVnNiRHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnWTI5dWMzUWdjMlZ4VFRvZ2MzUnlhVzVuVzEwZ1BTQlhaV0pNYjJkdkxuTndiR2wwZEdWeVFYTkdZWE4wWVNoektUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQndiVWx1Wm04Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQnpaWEZOVzNSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBcklHcFFiM05kSUh4OElDY3RKenRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRW9iU0JwYmlCd2JVbHVabThwS1Z4dUlDQWdJQ0FnSUNBZ0lIQnRTVzVtYjF0dFhTQTlJRzVsZHlCUWIzTnBkR2x2YmsxdmJtOXRaWEpKYm1adktDazdYRzRnSUNBZ0lDQWdJSEJ0U1c1bWIxdHRYUzVqYjNWdWRDc3JPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJM0psWjJsdmJpQlFiMnhwYzJnZ1puSmxjU0JqYjNWdWRITmNiaUFnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lDOHZJR1JsYkdWMFpTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeFd5Y3RKMTA3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExuSnZkME52ZFc1MElEMGdNRHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnYlNCcGJpQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeEtWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzV5YjNkRGIzVnVkQ0FyUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNW1jbVZ4VzIxZExtTnZkVzUwTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeU5sYm1SeVpXZHBiMjVjYmx4dUlDQWdJR052Ym5OMElHMWhlRWhsYVdkb2RDQTlJSFJvYVhNdVkyRnVkbUZ6TG1obGFXZG9kQ0F0SUhSb2FYTXVZWGhwYzBobGFXZG9kRHRjYmlBZ0lDQXZMeUJqYjI1emIyeGxMbVJsWW5WbktHQlhaV0pNYjJkdlBDUjdkR2hwY3k1MmFXVjNaWEpKWkgwK0xsOWpZV3hqZFd4aGRHVW9LU0J0WVhoSVpXbG5hSFE5Skh0dFlYaElaV2xuYUhSOUxtQXBPMXh1WEc0Z0lDQWdMeThqY21WbmFXOXVJRU5oYkdOMWJHRjBaU0J6WTNKbFpXNWNiaUFnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdaeVpYRTZJSHNnVzJNNklITjBjbWx1WjEwNklGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOGdmU0E5SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEU3WEc0Z0lDQWdJQ0JqYjI1emRDQnliM2REYjNWdWRDQTlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG5KdmQwTnZkVzUwTzF4dVhHNGdJQ0FnSUNCc1pYUWdlVG9nYm5WdFltVnlJRDBnZEdocGN5NWhlR2x6U0dWcFoyaDBPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmxiblJ5YVdWeklEMGdUMkpxWldOMExtVnVkSEpwWlhNb1puSmxjU2t1YzI5eWRDZ29ZU3dnWWlrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JwWmlBb1lWc3dYU0FoUFQwZ0p5MG5JQ1ltSUdKYk1GMGdJVDA5SUNjdEp5bGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdZbHN4WFM1amIzVnVkQ0F0SUdGYk1WMHVZMjkxYm5RN1hHNGdJQ0FnSUNBZ0lHVnNjMlVnYVdZZ0tHRmJNRjBnUFQwOUlDY3RKeUFtSmlCaVd6QmRJRDA5UFNBbkxTY3BYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJREE3WEc0Z0lDQWdJQ0FnSUdWc2MyVWdhV1lnS0dGYk1GMGdQVDA5SUNjdEp5bGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdJQ0FnSUdWc2MyVWdMeW9nS0dKYk1GMGdQVDA5SUNjdEp5a2dLaTljYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS3pFN1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdaVzUwY25rZ2IyWWdaVzUwY21sbGN5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQndiVWx1Wm04NklGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOGdQU0JsYm5SeWVWc3hYVHRjYmlBZ0lDQWdJQ0FnTHk4Z1kyOXVjM1FnYlRvZ2MzUnlhVzVuSUQwZ1pXNTBjbmxiTUYwN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdnNklHNTFiV0psY2lBOUlHMWhlRWhsYVdkb2RDQXFJSEJ0U1c1bWJ5NWpiM1Z1ZENBdklISnZkME52ZFc1ME8xeHVYRzRnSUNBZ0lDQWdJSEJ0U1c1bWJ5NWliM1Z1WkhNZ1BTQnVaWGNnUkVjdVVtVmpkQ2hxVUc5eklDb2dkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ3dnZVN3Z2RHaHBjeTVmY0c5emFYUnBiMjVYYVdSMGFDd2dhQ2s3WEc0Z0lDQWdJQ0FnSUhrZ0t6MGdhRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ0x5OGpaVzVrY21WbmFXOXVYRzRnSUgxY2JseHVJQ0F2THlCeVpXWnNaV04wSUdOb1lXNW5aWE1nYldGa1pTQjBieUJtYVd4MFpYSXZjMlZzWldOMGFXOXVYRzRnSUhKbGJtUmxjaWh5WldOaGJHTWdQU0IwY25WbEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJYTm5TRzl6ZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWMyVnhRMjlzSUNZbUlDRjBhR2x6TG1Od0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWJYTm5TRzl6ZENFdWFXNXVaWEpVWlhoMElEMGdZRlZ1YTI1dmQyNGdjR0ZzWlhSMFpTQW9ZMjlzZFcxdUlITmxiVlI1Y0dVNklDY2tlM1JvYVhNdWMyVnhRMjlzTG5ObGJWUjVjR1Y5SnlrdVlEdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dGMyZEliM04wSVM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSnljN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbTF6WjBodmMzUWhMbk4wZVd4bExtUnBjM0JzWVhrZ1BTQW5ibTl1WlNjN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTV6WlhGRGIyd2dmSHdnSVhSb2FYTXVaR0YwWVVaeVlXMWxJSHg4SUNGMGFHbHpMbU53S1Z4dUlDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdZMjl1YzNRZ1p5QTlJSFJvYVhNdVkyRnVkbUZ6TG1kbGRFTnZiblJsZUhRb0p6SmtKeWs3WEc0Z0lDQWdhV1lnS0NGbktTQnlaWFIxY200N1hHNWNiaUFnSUNCcFppQW9jbVZqWVd4aktWeHVJQ0FnSUNBZ2RHaHBjeTVmWTJGc1kzVnNZWFJsS0NrN1hHNWNiaUFnSUNCbkxuSmxjMlYwVkhKaGJuTm1iM0p0S0NrN1hHNGdJQ0FnWnk1bWFXeHNVM1I1YkdVZ1BTQW5kMmhwZEdVbk8xeHVJQ0FnSUdjdVptbHNiRkpsWTNRb01Dd2dNQ3dnZEdocGN5NWpZVzUyWVhNdWQybGtkR2dzSUhSb2FYTXVZMkZ1ZG1GekxtaGxhV2RvZENrN1hHNGdJQ0FnWnk1MFpYaDBRbUZ6Wld4cGJtVWdQU0IwYUdsekxuUmxlSFJDWVhObGJHbHVaVHRjYmx4dUlDQWdJQzh2SUZCeVpYWmxiblJ6SUdScGRtbHphVzl1SUdKNUlIcGxjbThnYjI0Z1RHVnVaM1JvSUQwZ01GeHVJQ0FnSUdsbUlDaDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQVDA5SUMweElIeDhJSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdQVDA5SUMweEtWeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnTHk4amNtVm5hVzl1SUZCc2IzUWdjRzl6YVhScGIyNU9ZVzFsYzF4dUlDQWdJR2N1Y21WelpYUlVjbUZ1YzJadmNtMG9LVHRjYmlBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUNkaWJHRmpheWM3WEc0Z0lDQWdaeTUwWlhoMFFXeHBaMjRnUFNBblkyVnVkR1Z5Snp0Y2JpQWdJQ0JuTG1admJuUWdQU0FuTVRCd2VDQlNiMkp2ZEc4c0lGSnZZbTkwYnlCTWIyTmhiQ3dnYzJGdWN5MXpaWEpwWmljN1hHNGdJQ0FnWTI5dWMzUWdjRzl6VG1GdFpVMWhlRmRwWkhSb0lEMGdUV0YwYUM1dFlYZ29MaTR1ZEdocGN5NXdiM05wZEdsdmJuTXViV0Z3S0Nod2IzTXBJRDArSUdjdWJXVmhjM1Z5WlZSbGVIUW9jRzl6TG01aGJXVXBMbmRwWkhSb0tTazdYRzRnSUNBZ1kyOXVjM1FnYUZOallXeGxJRDBnY0c5elRtRnRaVTFoZUZkcFpIUm9JRHdnS0hSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ0xTQXlLU0EvSURFZ09pQW9kR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ0F0SURJcElDOGdjRzl6VG1GdFpVMWhlRmRwWkhSb08xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCd2IzTTZJRkJ2YzJsMGFXOXVTVzVtYnlBOUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRPMXh1SUNBZ0lDQWdaeTV5WlhObGRGUnlZVzV6Wm05eWJTZ3BPMXh1SUNBZ0lDQWdaeTV6WlhSVWNtRnVjMlp2Y20wb1hHNGdJQ0FnSUNBZ0lHaFRZMkZzWlN3Z01Dd2dNQ3dnTVN4Y2JpQWdJQ0FnSUNBZ2FsQnZjeUFxSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ0t5QjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JQzhnTWl3Z01DazdYRzRnSUNBZ0lDQm5MbVpwYkd4VVpYaDBLSEJ2Y3k1dVlXMWxMQ0F3TENBd0tUdGNiaUFnSUNCOVhHNGdJQ0FnTHk4alpXNWtjbVZuYVc5dUlGQnNiM1FnY0c5emFYUnBiMjVPWVcxbGMxeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FsQnZjeUE5SURBN0lHcFFiM01nUENCMGFHbHpMa3hsYm1kMGFEc2dhbEJ2Y3lzcktTQjdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRnR0YjI1dmJXVnlMQ0J3YlVsdVptOWRJRzltSUU5aWFtVmpkQzVsYm5SeWFXVnpLSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRXBLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUlDRTlQU0FuTFNjcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmlJRDBnY0cxSmJtWnZMbUp2ZFc1a2N6dGNibHh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1p2Ym5SVGRIbHNaU0E5SUNjeE5uQjRJRkp2WW05MGJ5d2dVbTlpYjNSdklFeHZZMkZzTENCellXNXpMWE5sY21sbUp6dGNiaUFnSUNBZ0lDQWdJQ0F2THlCSVlXTnJjeUIwYnlCelkyRnNaU0IxY0hCbGNtTmhjMlVnWTJoaGNtRmpkR1Z5Y3lCMGJ5QjBZWEpuWlhRZ2NtVmpkR0Z1WjJ4bFhHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2RYQndaWEpqWVhObFRHVjBkR1Z5UVhOalpXNTBJRDBnTUM0eU5UdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQjFjSEJsY21OaGMyVk1aWFIwWlhKSVpXbG5hSFFnUFNBeE1pNHlPMXh1WEc0Z0lDQWdJQ0FnSUNBZ1p5NXlaWE5sZEZSeVlXNXpabTl5YlNncE8xeHVJQ0FnSUNBZ0lDQWdJR2N1YzNSeWIydGxVM1I1YkdVZ1BTQW5iR2xuYUhSbmNtRjVKenRjYmlBZ0lDQWdJQ0FnSUNCbkxteHBibVZYYVdSMGFDQTlJREU3WEc0Z0lDQWdJQ0FnSUNBZ1p5NXlaV04wS0dJdWJHVm1kQ3dnWWk1MGIzQXNJR0l1ZDJsa2RHZ3NJR0l1YUdWcFoyaDBLVHRjYmlBZ0lDQWdJQ0FnSUNCbkxtWnBiR3hUZEhsc1pTQTlJSFJvYVhNdVkzQXVaMlYwS0cxdmJtOXRaWElwSUQ4L0lIUm9hWE11WTNBdVoyVjBLQ2R2ZEdobGNpY3BPMXh1SUNBZ0lDQWdJQ0FnSUdjdWRHVjRkRUZzYVdkdUlEMGdKMnhsWm5Rbk8xeHVJQ0FnSUNBZ0lDQWdJR2N1Wm05dWRDQTlJR1p2Ym5SVGRIbHNaVHRjYmlBZ0lDQWdJQ0FnSUNBdkwyY3VabWxzYkZKbFkzUW9ZaTVzWldaMExDQmlMblJ2Y0N3Z1lpNTNhV1IwYUN3Z1lpNW9aV2xuYUhRcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMVViVG9nVkdWNGRFMWxkSEpwWTNNZ1BTQm5MbTFsWVhOMWNtVlVaWGgwS0cxdmJtOXRaWElwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnYVdZZ0tHMU5MbUZqZEhWaGJFSnZkVzVrYVc1blFtOTRRWE5qWlc1MElDRTlJREFwWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQnRPaUFrZTIxOUxDQnRUUzVoWTNSMVlXeENiM1Z1WkdsdVowSnZlRUZ6WTJWdWREb2dKSHR0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkSDFnS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJR2N1YzJWMFZISmhibk5tYjNKdEtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWWk1M2FXUjBhQ0F2SUcxVWJTNTNhV1IwYUN3Z01Dd2dNQ3dnWWk1b1pXbG5hSFFnTHlCMWNIQmxjbU5oYzJWTVpYUjBaWEpJWldsbmFIUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCaUxteGxablFzSUdJdWRHOXdLVHRjYmlBZ0lDQWdJQ0FnSUNCbkxtWnBiR3hVWlhoMEtHMXZibTl0WlhJc0lEQXNJQzExY0hCbGNtTmhjMlZNWlhSMFpYSkJjMk5sYm5RcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmpZV3hqVTJsNlpTZ3BJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVZMkZ1ZG1GeklIeDhJQ0YwYUdsekxtaHZjM1FwWEc0Z0lDQWdJQ0J5WlhSMWNtNDdYRzVjYmlBZ0lDQnNaWFFnZDJsa2RHZzZJRzUxYldKbGNpQTlJSFJvYVhNdVRHVnVaM1JvSUNvZ2RHaHBjeTV3YjNOcGRHbHZibGRwWkhSb08xeHVJQ0FnSUd4bGRDQm9aV2xuYUhRZ1BTQk5ZWFJvTG0xcGJpaDBhR2x6TG0xaGVFaGxhV2RvZEN3Z1RXRjBhQzV0WVhnb2RHaHBjeTV0YVc1SVpXbG5hSFFzSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUXBLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVpwZEVGeVpXRXBJSHRjYmlBZ0lDQWdJR052Ym5OMElIaFRZMkZzWlRvZ2JuVnRZbVZ5SUQwZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F2SUdobGFXZG9kRHRjYmlBZ0lDQWdJR052Ym5OMElIbFRZMkZzWlRvZ2JuVnRZbVZ5SUQwZ2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEZkcFpIUm9JQzhnZDJsa2RHZzdYRzRnSUNBZ0lDQmpiMjV6ZENCelkyRnNaU0E5SUUxaGRHZ3ViV0Y0S0RFc0lFMWhkR2d1YldsdUtIaFRZMkZzWlN3Z2VWTmpZV3hsS1NrN1hHNGdJQ0FnSUNCM2FXUjBhQ0E5SUhkcFpIUm9JQ29nYzJOaGJHVTdYRzRnSUNBZ0lDQm9aV2xuYUhRZ1BTQm9aV2xuYUhRZ0tpQnpZMkZzWlR0Y2JpQWdJQ0FnSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ1BTQjBhR2x6TG5CdmMybDBhVzl1VjJsa2RHZ2dLaUJ6WTJGc1pUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5NTNhV1IwYUNBOUlIZHBaSFJvTzF4dUlDQWdJSFJvYVhNdVkyRnVkbUZ6TG5OMGVXeGxMbmRwWkhSb0lEMGdZQ1I3ZDJsa2RHaDljSGhnTzF4dVhHNGdJQ0FnTHk4Z1kyOXVjM1FnWTJGdWRtRnpTR1ZwWjJoME9pQnVkVzFpWlhJZ1BTQjNhV1IwYUNBK0lIUm9hWE11Y205dmRDNWpiR2xsYm5SWGFXUjBhQ0EvSUdobGFXZG9kQ0F0SURnZ09pQm9aV2xuYUhRN1hHNGdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbk5sZEZCeWIzQmxjblI1S0Nkb1pXbG5hSFFuTENCZ0pIdG9aV2xuYUhSOWNIaGdLVHRjYmlBZ0lDQmpiMjV6ZENCallXNTJZWE5JWldsbmFIUTZJRzUxYldKbGNpQTlJSFJvYVhNdWFHOXpkQzVqYkdsbGJuUklaV2xuYUhRN1hHNGdJQ0FnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUQwZ1kyRnVkbUZ6U0dWcFoyaDBPMXh1SUNBZ0lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2RvWldsbmFIUW5MQ0JnSkh0allXNTJZWE5JWldsbmFIUjljSGhnS1R0Y2JseHVJQ0FnSUM4dklFRmthblZ6ZENCb2IzTjBJR0Z1WkNCeWIyOTBJSGRwWkhSb1hHNGdJQ0FnYVdZZ0tIUm9hWE11Wm1sNFYybGtkR2dwSUh0Y2JpQWdJQ0FnSUM4dklHWjFiR3dnZDJsa2RHZ2dabTl5SUdOaGJuWmhjeUJvYjNOMElHRnVaQ0J5YjI5MFhHNGdJQ0FnSUNCMGFHbHpMbkp2YjNRdWMzUjViR1V1ZDJsa2RHZ2dQU0IwYUdsekxtaHZjM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQmdKSHQzYVdSMGFIMXdlR0E3WEc0Z0lDQWdJQ0IwYUdsekxuSnZiM1F1YzNSNWJHVXVhR1ZwWjJoMElDOHFQU0IwYUdsekxtaHZjM1F1YzNSNWJHVXVhR1ZwWjJoMEtpOGdQU0JnSkh0b1pXbG5hSFI5Y0hoZ08xeHVJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZHZkbVZ5Wm14dmR5Y3NJQ2RvYVdSa1pXNG5MQ0FuYVcxd2IzSjBZVzUwSnlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQzh2SUdGc2JHOTNJSE5qY205c2JDQmpZVzUyWVhNZ2FXNGdjbTl2ZEZ4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbmRwWkhSb0lEMGdkR2hwY3k1b2IzTjBMbk4wZVd4bExuZHBaSFJvSUQwZ0p6RXdNQ1VuTzF4dUlDQWdJQ0FnZEdocGN5NW9iM04wTG5OMGVXeGxMbTkyWlhKbWJHOTNXQ0E5SUNkaGRYUnZJV2x0Y0c5eWRHRnVkQ2M3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXVjMlYwVUhKdmNHVnlkSGtvSjI5MlpYSm1iRzkzSnl3Z2JuVnNiQ2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVhRzl6ZEM1emRIbHNaUzV6WlhSUWNtOXdaWEowZVNnbmRHVjRkQzFoYkdsbmJpY3NJSFJvYVhNdWFHOXlhWHB2Ym5SaGJFRnNhV2R1YldWdWRDazdYRzVjYmlBZ0lDQWdJQzh2SUhabGNuUnBZMkZzSUdGc2FXZHViV1Z1ZEZ4dUlDQWdJQ0FnYkdWMElHaHZjM1JVYjNCTllYSm5hVzRnUFNBd08xeHVJQ0FnSUNBZ2MzZHBkR05vSUNoMGFHbHpMblpsY25ScFkyRnNRV3hwWjI1dFpXNTBLU0I3WEc0Z0lDQWdJQ0JqWVhObElDZDBiM0FuT2x4dUlDQWdJQ0FnSUNCb2IzTjBWRzl3VFdGeVoybHVJRDBnTUR0Y2JpQWdJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdJQ0JqWVhObElDZHRhV1JrYkdVbk9seHVJQ0FnSUNBZ0lDQm9iM04wVkc5d1RXRnlaMmx1SUQwZ1RXRjBhQzV0WVhnb01Dd2dLSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ0xTQm9aV2xuYUhRcElDOGdNaWs3WEc0Z0lDQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lDQWdZMkZ6WlNBblltOTBkRzl0SnpwY2JpQWdJQ0FnSUNBZ2FHOXpkRlJ2Y0UxaGNtZHBiaUE5SUUxaGRHZ3ViV0Y0S0RBc0lIUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFFnTFNCb1pXbG5hSFFwTzF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYldGeVoybHVMWFJ2Y0Njc0lHQWtlMmh2YzNSVWIzQk5ZWEpuYVc1OWNIaGdMQ0FuYVcxd2IzSjBZVzUwSnlrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMElEd2dhR1ZwWjJoMEtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYUdWcFoyaDBKeXdnWUNSN2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kSDF3ZUdBcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1odmMzUXVjM1I1YkdVdWMyVjBVSEp2Y0dWeWRIa29KMjkyWlhKbWJHOTNMWGtuTENCdWRXeHNLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWFHOXpkQzV6ZEhsc1pTNXpaWFJRY205d1pYSjBlU2duYjNabGNtWnNiM2N0ZVNjc0lDZG9hV1JrWlc0bkxDQW5hVzF3YjNKMFlXNTBKeWs3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGNiaUFnSUNBdkx5QWdJR0IwYUdsekxuSnZiM1F1YzNSNWJHVXVhR1ZwWjJoMElEMGdKSHQwYUdsekxuSnZiM1F1YzNSNWJHVXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFFnUFNBa2UzUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NW9iM04wTG5OMGVXeGxMbWhsYVdkb2RDQTlJQ1I3ZEdocGN5NW9iM04wTG5OMGVXeGxMbWhsYVdkb2RIMWNYRzVnSUN0Y2JpQWdJQ0F2THlBZ0lHQjBhR2x6TG1odmMzUXVZMnhwWlc1MFNHVnBaMmgwSUQwZ0pIdDBhR2x6TG1odmMzUXVZMnhwWlc1MFNHVnBaMmgwZlZ4Y2JtQWdLMXh1SUNBZ0lDOHZJQ0FnSjF4Y2JpY2dLMXh1SUNBZ0lDOHZJQ0FnWUhSb2FYTXVZMkZ1ZG1GekxtaGxhV2RvZENBZ0lDQWdJQ0E5SUNSN2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMGZWeGNibUFnSzF4dUlDQWdJQzh2SUNBZ1lIUm9hWE11WTJGdWRtRnpMbk4wZVd4bExtaGxhV2RvZENBOUlDUjdkR2hwY3k1allXNTJZWE11YzNSNWJHVXVhR1ZwWjJoMGZXQXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkVjdVEyOXNkVzF1ZlNCelpYRkRiMndnUTI5c2RXMXVJSFJ2SUd4dmIyc2dabTl5SUdFZ2NHRnNaWFIwWlZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdJRzFwYmt4bGJtZDBhQ0J0YVc1cGJYVnRJR3hsYm1kMGFDQnZaaUJ6WlhGMVpXNWpaU0IwYnlCa1pYUmxZM1FnY0dGc1pYUjBaU0FvWlcxd2RIa2djM1J5YVc1bmN5QmhjbVVnWVd4c2IzZGxaQ2xjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVMlZ4VUdGc1pYUjBaWDBnVUdGc1pYUjBaU0JqYjNKeVpYTndiMjVrYVc1bklIUnZJSFJvWlNCaGJIQm9ZV0psZENCdlppQjBhR1VnYzJWeGRXVnVZMlZ6SUdsdUlIUm9aU0JqYjJ4MWJXNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NHbGphMVZ3VUdGc1pYUjBaU2h6WlhGRGIydzZJRVJITGtOdmJIVnRiaXdnYldsdVRHVnVaM1JvT2lCdWRXMWlaWElnUFNBMUtUb2dVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDQWdiR1YwSUhKbGN6b2dVMlZ4VUdGc1pYUjBaU0I4SUc1MWJHd2dQU0J1ZFd4c08xeHVJQ0FnSUhOM2FYUmphQ0FvYzJWeFEyOXNMbk5sYlZSNWNHVXBJSHRjYmlBZ0lDQmpZWE5sSUVGdGFXNXZZV05wWkhNdVUyVnRWSGx3WlUxMWJIUnBjR3hsUVd4cFoyNXRaVzUwT2x4dUlDQWdJQ0FnY21WeklEMGdRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpMa2R5YjJ0SGNtOTFjSE03WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJRTUxWTJ4bGIzUnBaR1Z6TGxObGJWUjVjR1ZOZFd4MGFYQnNaVUZzYVdkdWJXVnVkRHBjYmlBZ0lDQWdJSEpsY3lBOUlFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTXVRMmh5YjIxaGRHOW5jbUZ0TzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJSE4wWVhSek9pQlRaWEZEYjJ4VGRHRjBjeUE5SUZkbFlreHZaMjh1WjJWMFUzUmhkSE1vYzJWeFEyOXNMQ0J0YVc1TVpXNW5kR2dzSUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBaaGMzUmhLVHRjYmx4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGN6b2dXMU5sZER4emRISnBibWMrTENCVFpYRlFZV3hsZEhSbFhWdGRJRDBnVzF4dUlDQWdJQ0FnVzI1bGR5QlRaWFFvVDJKcVpXTjBMbXRsZVhNb1RuVmpiR1Z2ZEdsa1pYTXVUbUZ0WlhNcEtTd2dUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcxZExGeHVJQ0FnSUNBZ1cyNWxkeUJUWlhRb1QySnFaV04wTG10bGVYTW9RVzFwYm05aFkybGtjeTVPWVcxbGN5a3BMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11UjNKdmEwZHliM1Z3YzEwc1hHNGdJQ0FnWFR0Y2JpQWdJQ0F2THlCRFlXeGpkV3hoZEdVZ2JHbHJaV3hwYUc5dlpITWdabTl5SUdGc2NHaGhZbVYwWDJOaGJtUnBaR0YwWlhOY2JpQWdJQ0JqYjI1emRDQmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzA2SUc1MWJXSmxjbHRkSUQwZ1lXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelhHNGdJQ0FnSUNBdWJXRndLQ2hqS1NBOVBpQlhaV0pNYjJkdkxtZGxkRUZzY0doaFltVjBVMmx0YVd4aGNtbDBlU2h6ZEdGMGN5NW1jbVZ4TENCald6QmRLU2s3WEc0Z0lDQWdZMjl1YzNRZ2JXRjRRMjl6SUQwZ1RXRjBhQzV0WVhnb0xpNHVZV3h3YUdGaVpYUkRZVzVrYVdSaGRHVnpVMmx0S1R0Y2JpQWdJQ0JwWmlBb2JXRjRRMjl6SUQ0Z01DNDJOU2xjYmlBZ0lDQWdJSEpsY3lBOUlHRnNjR2hoWW1WMFEyRnVaR2xrWVhSbGMxdGhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzB1YVc1a1pYaFBaaWh0WVhoRGIzTXBYVnN4WFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYTWdQU0JWYm10dWIzZHVVMlZ4VUdGc1pYUjBaWE11UTI5c2IzSTdYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVnpPMXh1SUNCOVhHNWNiaUFnTHlvcUlGTjBZWFJ6SUc5bUlITmxjWFZsYm1ObGN5QjNhWFJvSUhOd1pXTnBabWxsWkNCemNHeHBkSFJsY2lCbWRXNWpMQ0J5WlhSMWNtNXpJSHNnWm5KbGNTd2djMkZ0WlV4bGJtZDBhQ0I5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMFJITGtOdmJIVnRibjBnYzJWeFEyOXNYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCdGFXNU1aVzVuZEdoY2JpQWdJQ29nUUhCaGNtRnRJSHRUY0d4cGRIUmxja1oxYm1OOUlITndiR2wwZEdWeVhHNGdJQ0FxSUVCeVpYUjFjbTRnZXlCVFpYRkRiMnhUZEdGMGN5QjlMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgwZ2MzUmhkSE1nYjJZZ1kyOXNkVzF1SUhObGNYVmxibU5sYzF4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRGTjBZWFJ6S0hObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCdGFXNU1aVzVuZEdnNklHNTFiV0psY2l3Z2MzQnNhWFIwWlhJNklGTndiR2wwZEdWeVJuVnVZeWs2SUZObGNVTnZiRk4wWVhSeklIdGNiaUFnSUNCamIyNXpkQ0JtY21WeE9pQjdJRnR0T2lCemRISnBibWRkT2lCdWRXMWlaWElnZlNBOUlIdDlPMXh1SUNBZ0lHeGxkQ0J6WVcxbFRHVnVaM1JvSUQwZ2RISjFaVHRjYmlBZ0lDQnNaWFFnWm1seWMzUk1aVzVuZEdnZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCelpYRWdiMllnYzJWeFEyOXNMbU5oZEdWbmIzSnBaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRzFUWlhFZ1BTQnpjR3hwZEhSbGNpaHpaWEVwTzF4dVhHNGdJQ0FnSUNCcFppQW9abWx5YzNSTVpXNW5kR2dnUFQwZ2JuVnNiQ2xjYmlBZ0lDQWdJQ0FnWm1seWMzUk1aVzVuZEdnZ1BTQnRVMlZ4TG14bGJtZDBhRHRjYmlBZ0lDQWdJR1ZzYzJVZ2FXWWdLRzFUWlhFdWJHVnVaM1JvSUNFOVBTQm1hWEp6ZEV4bGJtZDBhQ2xjYmlBZ0lDQWdJQ0FnYzJGdFpVeGxibWQwYUNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnSUNCcFppQW9iVk5sY1M1c1pXNW5kR2dnUGlCdGFXNU1aVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0J0SUc5bUlHMVRaWEVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJR1p5WlhFcEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnWm5KbGNWdHRYU0E5SURBN1hHNGdJQ0FnSUNBZ0lDQWdabkpsY1Z0dFhTQXJQU0F4TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjdabkpsY1RvZ1puSmxjU3dnYzJGdFpVeGxibWQwYURvZ2MyRnRaVXhsYm1kMGFIMDdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRUZzY0doaFltVjBVMmx0YVd4aGNtbDBlU2htY21WeE9pQk5iMjV2YldWeVJuSmxjWE1zSUdGc2NHaGhZbVYwT2lCVFpYUThjM1J5YVc1blBpd2daMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dQU0FuTFNjcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdOdmJuTjBJR3RsZVhNZ1BTQnVaWGNnVTJWMFBITjBjbWx1Wno0b1d5NHVMbTVsZHlCVFpYUW9UMkpxWldOMExtdGxlWE1vWm5KbGNTa3BMQ0F1TGk1aGJIQm9ZV0psZEYwcE8xeHVJQ0FnSUd0bGVYTXVaR1ZzWlhSbEtHZGhjRk41YldKdmJDazdYRzVjYmlBZ0lDQmpiMjV6ZENCbWNtVnhRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRUU2SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnRJRzltSUd0bGVYTXBJSHRjYmlBZ0lDQWdJR1p5WlhGQkxuQjFjMmdvYlNCcGJpQm1jbVZ4SUQ4Z1puSmxjVnR0WFNBNklEQXBPMXh1SUNBZ0lDQWdZV3h3YUdGaVpYUkJMbkIxYzJnb1lXeHdhR0ZpWlhRdWFHRnpLRzBwSUQ4Z01TQTZJREFwTzF4dUlDQWdJSDFjYmlBZ0lDQXZLaUJVYUdWeVpTQjNaWEpsSUdFZ1ptVjNJR2xrWldGek9pQmphR2t0YzNGMVlYSmxaQ3dnY0dWaGNuTnZiaUJqYjNKeVpXeGhkR2x2YmlBb2RtRnlhV0Z1WTJVL0tTd2djMk5oYkdGeUlIQnliMlIxWTNRZ0tpOWNiaUFnSUNCamIyNXpkQ0JtY21WeFZqb2dWbVZqZEc5eUlEMGdibVYzSUZabFkzUnZjaWhtY21WeFFTazdYRzRnSUNBZ1kyOXVjM1FnWVd4d2FHRmlaWFJXT2lCV1pXTjBiM0lnUFNCdVpYY2dWbVZqZEc5eUtHRnNjR2hoWW1WMFFTazdYRzRnSUNBZ1kyOXVjM1FnWTI5ek9pQnVkVzFpWlhJZ1BTQjJaV04wYjNKRWIzUlFjbTlrZFdOMEtHWnlaWEZXTENCaGJIQm9ZV0psZEZZcElDOGdLSFpsWTNSdmNreGxibWQwYUNobWNtVnhWaWtnS2lCMlpXTjBiM0pNWlc1bmRHZ29ZV3h3YUdGaVpYUldLU2s3WEc0Z0lDQWdjbVYwZFhKdUlHTnZjenRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkdhWEp6ZENCMGNua2dkRzhnWm1sdVpDQmpiMngxYlc0Z2QybDBhQ0J6WlcxVWVYQmxJQ2RoYkdsbmJtVmtVMlZ4ZFdWdVkyVW5MbHh1SUNBZ0tpQk9aWGgwSUd4dmIyc2dabTl5SUdOdmJIVnRiaUIzYVhSb0lHUmhkR0VnWVd4d2FHRmlaWFFnWTI5eWNtVnpjRzl1WkdsdVp5QjBieUJoYm5rZ2IyWWdkR2hsSUd0dWIzZHVJSEJoYkdWMGRHVnpMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUkhMa1JoZEdGR2NtRnRaWDBnWkdGMFlVWnlZVzFsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjBnVkdobElHTnZiSFZ0YmlCM1pTQjNaWEpsSUd4dmIydHBibWNnWm05eUlHOXlJRzUxYkd4Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ2NHbGphMVZ3VTJWeFEyOXNLR1JoZEdGR2NtRnRaVG9nUkVjdVJHRjBZVVp5WVcxbEtUb2dSRWN1UTI5c2RXMXVJSHdnYm5Wc2JDQjdYRzRnSUNBZ2JHVjBJSEpsY3pvZ1JFY3VRMjlzZFcxdUlId2diblZzYkNBOUlHUmhkR0ZHY21GdFpTNWpiMngxYlc1ekxtSjVVMlZ0Vkhsd1pTZ25ZV3hwWjI1bFpGTmxjWFZsYm1ObEp5azdYRzRnSUNBZ2FXWWdLSEpsY3lBOVBTQnVkV3hzS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR052Ym5OMElHTnZiQ0J2WmlCa1lYUmhSbkpoYldVdVkyOXNkVzF1Y3lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCamNDQTlJRmRsWWt4dloyOHVjR2xqYTFWd1VHRnNaWFIwWlNoamIyd2dZWE1nUkVjdVEyOXNkVzF1TENBMUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0dOd0lDRTlQU0J1ZFd4c0lDWW1JQ0VvWTNBZ2FXNXpkR0Z1WTJWdlppQlZibXR1YjNkdVUyVnhVR0ZzWlhSMFpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYTWdQU0JqYjJ3N1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsY3p0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUcxdmJtOXRaWEpTWlNBOUlDOWNYRnNvWEZ4M0t5bGNYRjE4S0Z4Y2R5bDhLQzBwTDJjN1hHNWNiaUFnTHlvcUlGTndiR2wwSUhObGNYVmxibU5sSUdadmNpQnphVzVuYkdVZ1kyaGhjbUZqZEdWeUlHMXZibTl0WlhKekxDQnpjWFZoY21VZ1luSmhZMnRsZEhNZ2JYVnNkR2xqYUdGeUlHMXZibTl0WlhJZ2JtRnRaWE1nYjNJZ1oyRndJSE41YldKdmJDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0aGJubDlJSE5sY1NCdlltcGxZM1FnZDJsMGFDQnpaWEYxWlc1alpWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgwZ1lYSnlZWGtnYjJZZ2JXOXViMjFsY25OY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYzNCc2FYUjBaWEpCYzBaaGMzUmhLSE5sY1RvZ1lXNTVLVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjem9nYzNSeWFXNW5XMTBnUFNCM2RUeFNaV2RGZUhCTllYUmphRUZ5Y21GNVBpaHpaWEV1ZEc5VGRISnBibWNvS1M1dFlYUmphRUZzYkNoWFpXSk1iMmR2TG0xdmJtOXRaWEpTWlNrcFhHNGdJQ0FnSUNBdWJXRndLQ2h0WVRvZ1VtVm5SWGh3VFdGMFkyaEJjbkpoZVNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JzWlhRZ2JWSmxjem9nYzNSeWFXNW5PMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J0WVZzd1hUdGNiaUFnSUNBZ0lDQWdhV1lnS0cwdWJHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaHRJR2x1SUZkbFlreHZaMjh1WVdGVGVXNXZibmx0Y3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJRmRsWWt4dloyOHVZV0ZUZVc1dmJubHRjMXR0WFR0Y2JpQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnYlZKbGN5QTlJQ2NuTzF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzI5c1pTNWtaV0oxWnloZ1RHOXVaeUJ0YjI1dmJXVnlJQ2NrZTIxOUp5Qm9ZWE1nYm05MElHRWdjMmh2Y25RZ2MzbHViMjU1YlM1Z0tUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JWSmxjeUE5SUcwN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHMVNaWE03WEc0Z0lDQWdJQ0I5S1M1MGIwRnljbUY1S0NrN1hHNWNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVkbGRITWdiV1YwYUc5a0lIUnZJSE53YkdsMElITmxjWFZsYm1ObElHSjVJSE5sY0dGeVlYUnZjbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVndZWEpoZEc5eVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTFOd2JHbDBkR1Z5Um5WdVkzMWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBVM0JzYVhSMFpYSlhhWFJvVTJWd1lYSmhkRzl5S0hObGNHRnlZWFJ2Y2pvZ2MzUnlhVzVuS1RvZ1UzQnNhWFIwWlhKR2RXNWpJSHRjYmlBZ0lDQnlaWFIxY200Z0tITmxjVG9nYzNSeWFXNW5LU0E5UGlCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYzJWeExuTndiR2wwS0hObGNHRnlZWFJ2Y2lrN1hHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJIWlhRZ2MzQnNhWFIwWlhJZ2JXVjBhRzlrSUhSdklITndiR2wwSUhObGNYVmxibU5sY3lCMGJ5QnRiMjV2YldWeWN5QXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpPaUJ6ZEhKcGJtY3NJSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5LVG9nVTNCc2FYUjBaWEpHZFc1aklIdGNiaUFnSUNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0NkbVlYTjBZU2NwS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnVjJWaVRHOW5ieTV6Y0d4cGRIUmxja0Z6Um1GemRHRTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvSjNObGNHRnlZWFJ2Y2ljcEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1YyVmlURzluYnk1blpYUlRjR3hwZEhSbGNsZHBkR2hUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5S1R0Y2JpQWdJQ0I5SUdWc2MyVmNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1ZXNWxlSEJsWTNSbFpDQjFibWwwY3lBa2UzVnVhWFJ6ZlNBdVlDazdYRzVjYmlBZ0lDQXZMeUJVVDBSUE9pQlRjR3hwZEhSbGNpQm1iM0lnU0VWTVRWeHVJQ0I5WEc1Y2JpQWdMeW9xSUU5dWJIa2djMjl0WlNCdlppQjBhR1VnYzNsdWIyNTViWE11SUZSb1pYTmxJSGRsY21VZ2IySjBZV2x1WldRZ1puSnZiU0IwYUdVZ1kyeDFjM1JsY21Wa0lHOXNhV2R2Y0dWd2RHbGtaU0JrWVhSaGMyVjBMaUFxTDF4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaFlWTjVibTl1ZVcxek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQnpkSEpwYm1jZ2ZTQTlJSHRjYmlBZ0lDQW5XMDFsVG14bFhTYzZJQ2RNSnl3Z0x5OGdUbXhsSUMwZ2JtOXliR1YxWTJsdVpWeHVJQ0FnSUNkYlRXVkJYU2M2SUNkQkp5eGNiaUFnSUNBblcwMWxSMTBuT2lBblJ5Y3NYRzRnSUNBZ0oxdE5aVVpkSnpvZ0owWW5MRnh1SUNCOU8xeHVmVnh1SWwxOSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyIH0gZnJvbSAnLi93b3JrZXJzL2RpbWVuc2lvbmFsaXR5LXJlZHVjaW5nLXdvcmtlci1jcmVhdG9yJztcbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24oZGF0YUNvbCwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzID0geWllbGQgY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKHsgZGF0YTogZGF0YUNvbCwgbWV0cmljOiBzaW1pbGFyaXR5TWV0cmljIH0sIG1ldGhvZE5hbWUsIG9wdGlvbnMpO1xuICAgICAgICBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcgPSBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcy5lbWJlZGRpbmcubWFwKGl0ID0+IG5vcm1hbGl6ZShpdCkpO1xuICAgICAgICByZXR1cm4gZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXM7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4ZFdWdVkyVXRjM0JoWTJVdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6WlhGMVpXNWpaUzF6Y0dGalpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZGUVN4UFFVRlBMRVZCUVVVc1UwRkJVeXhGUVVGRkxFMUJRVTBzYVVSQlFXbEVMRU5CUVVNN1FVRkhOVVVzVDBGQlR5eEZRVUZGTEdsRFFVRnBReXhGUVVFclFpeE5RVUZOTEd0RVFVRnJSQ3hEUVVGRE8wRkJSMnhKTEUxQlFVMHNWVUZCWjBJc2IwTkJRVzlETEVOQlEzUkVMRTlCUVhGRExFVkJRM0pETEZWQlFXdENMRVZCUTJ4Q0xHZENRVUUyUkN4RlFVTTNSQ3hQUVVGaE96dFJRVVZpTEUxQlFVMHNkVUpCUVhWQ0xFZEJRM3BDTEUxQlFVMHNhVU5CUVdsRExFTkJRMjVETEVWQlFVVXNTVUZCU1N4RlFVRkZMRTlCUVU4c1JVRkJSU3hOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVdkQ0xFVkJRM3BFTEZWQlFWVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVM1FpeDFRa0ZCZFVJc1EwRkJReXhUUVVGVExFZEJRVWNzZFVKQlFYVkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF5OUdMRTlCUVU4c2RVSkJRWFZDTEVOQlFVTTdTVUZEYmtNc1EwRkJRenREUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdleUJOWVhSeWFYZ3NJRlpsWTNSdmNpQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3SUc1dmNtMWhiR2w2WlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzWmxZM1J2Y2kxdmNHVnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1cGJYQnZjblFnZXlCQ2FYUkJjbkpoZVUxbGRISnBZM01zSUZOMGNtbHVaMDFsZEhKcFkzTXNJRlpoYkdsa1ZIbHdaWE1zSUZabFkzUnZjazFsZEhKcFkzTWdmU0JtY205dElDY3VMM1I1Y0dWa0xXMWxkSEpwWTNNbk8xeHVhVzF3YjNKMElIc2dZM0psWVhSbFJHbHRaVzV6YVc1aGJHbDBlVkpsWkhWamFXNW5WMjl5YTJWeUxDQkpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUWdmU0JtY205dElDY3VMM2R2Y210bGNuTXZaR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0luTzF4dVhHNWNibVY0Y0c5eWRDQmhjM2x1WXlCbWRXNWpkR2x2YmlCeVpXUjFZMlZFYVcxbGJuTnBibUZzYVhSNVYybDBhRTV2Y20xaGJHbDZZWFJwYjI0b1hHNGdJQ0FnWkdGMFlVTnZiRG9nUW1sMFFYSnlZWGxiWFh4V1pXTjBiM0piWFh4emRISnBibWRiWFN3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJDYVhSQmNuSmhlVTFsZEhKcFkzTjhWbVZqZEc5eVRXVjBjbWxqYzN4VGRISnBibWROWlhSeWFXTnpMRnh1SUNBZ0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCUWNtOXRhWE5sUEVsU1pXUjFZMlZFYVcxbGJuTnBiMjVoYkdsMGVWSmxjM1ZzZEQ0Z2UxeHVYRzRnSUNBZ1kyOXVjM1FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTZJRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkQ0E5WEc0Z0lDQWdJQ0FnSUdGM1lXbDBJR055WldGMFpVUnBiV1Z1YzJsdVlXeHBkSGxTWldSMVkybHVaMWR2Y210bGNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUhzZ1pHRjBZVG9nWkdGMFlVTnZiQ3dnYldWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpJSDBnWVhNZ1ZtRnNhV1JVZVhCbGN5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGRHaHZaRTVoYldVc0lHOXdkR2x2Ym5NcE8xeHVYRzRnSUNBZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuSUQwZ1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE11WlcxaVpXUmthVzVuTG0xaGNDaHBkQ0E5UGlCdWIzSnRZV3hwZW1Vb2FYUXBLVHRjYmlBZ0lDQnlaWFIxY200Z1pHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVlNaWE03WEc1OUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZGlzdGFuY2VNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgJ1ZlY3Rvcic6IHtcbiAgICAgICAgJ0V1Y2xpZGVhbkRpc3RhbmNlJzogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG4gICAgfSxcbiAgICAnU3RyaW5nJzoge1xuICAgICAgICAnTGV2ZW5zaHRlaW4nOiBmbC5kaXN0YW5jZSxcbiAgICAgICAgJ0phcm8tV2lua2xlcic6IGphcm9XaW5rbGVyLFxuICAgIH0sXG4gICAgJ0JpdEFycmF5Jzoge1xuICAgICAgICAnVGFuaW1vdG8nOiBkaXN0YW5jZU1ldHJpY3NbJ1Rhbmltb3RvJ10sXG4gICAgICAgICdEaWNlJzogZGlzdGFuY2VNZXRyaWNzWydEaWNlJ10sXG4gICAgICAgICdBc3ltbWV0cmljJzogZGlzdGFuY2VNZXRyaWNzWydBc3ltbWV0cmljJ10sXG4gICAgICAgICdCcmF1bi1CbGFucXVldCc6IGRpc3RhbmNlTWV0cmljc1snQnJhdW4tQmxhbnF1ZXQnXSxcbiAgICAgICAgJ0Nvc2luZSc6IGRpc3RhbmNlTWV0cmljc1snQ29zaW5lJ10sXG4gICAgICAgICdLdWxjenluc2tpJzogZGlzdGFuY2VNZXRyaWNzWydLdWxjenluc2tpJ10sXG4gICAgICAgICdNYy1Db25uYXVnaGV5JzogZGlzdGFuY2VNZXRyaWNzWydNYy1Db25uYXVnaGV5J10sXG4gICAgICAgICdSb2dvdC1Hb2xkYmVyZyc6IGRpc3RhbmNlTWV0cmljc1snUm9nb3QtR29sZGJlcmcnXSxcbiAgICAgICAgJ1J1c3NlbCc6IGRpc3RhbmNlTWV0cmljc1snUnVzc2VsJ10sXG4gICAgICAgICdTb2thbCc6IGRpc3RhbmNlTWV0cmljc1snU29rYWwnXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEByZXR1cm4ge0Rpc3RhbmNlTWV0cmljfSBDYWxsYmFjayBvZiB0aGUgbWVhc3VyZSBjaG9zZW4uXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgZ2V0TWVhc3VyZSgpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IEF2YWlsYWJsZU1ldHJpY3M7XG4gICAgICAgIHJldHVybiBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVUZETEdWQlFXVXNSVUZCUXl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlEycEdMRTlCUVU4c1JVRkJReXd3UWtGQk1FSXNSVUZCUXl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlNUTkdMRTFCUVUwc1EwRkJReXhOUVVGTkxHZENRVUZuUWl4SFFVRkhPMGxCUXpsQ0xGRkJRVkVzUlVGQlJUdFJRVU5TTEcxQ1FVRnRRaXhGUVVGRkxEQkNRVUV3UWp0TFFVTm9SRHRKUVVORUxGRkJRVkVzUlVGQlJUdFJRVU5TTEdGQlFXRXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVVHRSUVVNeFFpeGpRVUZqTEVWQlFVVXNWMEZCVnp0TFFVTTFRanRKUVVORUxGVkJRVlVzUlVGQlJUdFJRVU5XTEZWQlFWVXNSVUZCUlN4bFFVRmxMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNSVUZCUlN4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8xRkJReTlDTEZsQlFWa3NSVUZCUlN4bFFVRmxMRU5CUVVNc1dVRkJXU3hEUVVGRE8xRkJRek5ETEdkQ1FVRm5RaXhGUVVGRkxHVkJRV1VzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOdVJDeFJRVUZSTEVWQlFVVXNaVUZCWlN4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVOdVF5eFpRVUZaTEVWQlFVVXNaVUZCWlN4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNelF5eGxRVUZsTEVWQlFVVXNaVUZCWlN4RFFVRkRMR1ZCUVdVc1EwRkJRenRSUVVOcVJDeG5Ra0ZCWjBJc1JVRkJSU3hsUVVGbExFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1VVRkRia1FzVVVGQlVTeEZRVUZGTEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRia01zVDBGQlR5eEZRVUZGTEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRiRU03UTBGRFJpeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFYRkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNN1MwRkROVVVzVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCY1VJc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdEpRVU55UXl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUjBGQmVVSXNRMEZCUXl4RFFVRkRMRVZCUVVVN1VVRkRNVVVzUjBGQlJ5eERRVUZETEVkQlFYbENMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRGRFTTdTVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFWZFVMRTFCUVUwc1ZVRkJWU3hqUVVGakxFTkJRVU1zU1VGQmEwSTdTVUZETDBNc1QwRkJUeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU03UVVGRE5VTXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4SlFVRnJRanRKUVVOcVJDeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZWQlFWVXNRMEZCUXp0QlFVTTVReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096dFBRVWxITzBsQlEwa3NWVUZCVlR0UlFVTm1MRTFCUVUwc1NVRkJTU3hIUVVGelJDeG5Ra0ZCWjBJc1EwRkJRenRSUVVOcVJpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpGRExFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzAxQlJVVTdTVUZEUml4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0a2FYTjBZVzVqWlUxbGRISnBZM045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNOcGJXbHNZWEpwZEhrdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ2UyTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3Vm1WamRHOXlMQ0JUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpJRDBnZTF4dUlDQW5WbVZqZEc5eUp6b2dlMXh1SUNBZ0lDZEZkV05zYVdSbFlXNUVhWE4wWVc1alpTYzZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCOUxGeHVJQ0FuVTNSeWFXNW5Kem9nZTF4dUlDQWdJQ2RNWlhabGJuTm9kR1ZwYmljNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNBZ0lDZEtZWEp2TFZkcGJtdHNaWEluT2lCcVlYSnZWMmx1YTJ4bGNpeGNiaUFnZlN4Y2JpQWdKMEpwZEVGeWNtRjVKem9nZTF4dUlDQWdJQ2RVWVc1cGJXOTBieWM2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVkdGdWFXMXZkRzhuWFN4Y2JpQWdJQ0FuUkdsalpTYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25SR2xqWlNkZExGeHVJQ0FnSUNkQmMzbHRiV1YwY21sakp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZEJjM2x0YldWMGNtbGpKMTBzWEc0Z0lDQWdKMEp5WVhWdUxVSnNZVzV4ZFdWMEp6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZENjbUYxYmkxQ2JHRnVjWFZsZENkZExGeHVJQ0FnSUNkRGIzTnBibVVuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjBOdmMybHVaU2RkTEZ4dUlDQWdJQ2RMZFd4amVubHVjMnRwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkTGRXeGplbmx1YzJ0cEoxMHNYRzRnSUNBZ0owMWpMVU52Ym01aGRXZG9aWGtuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjAxakxVTnZibTVoZFdkb1pYa25YU3hjYmlBZ0lDQW5VbTluYjNRdFIyOXNaR0psY21jbk9pQmthWE4wWVc1alpVMWxkSEpwWTNOYkoxSnZaMjkwTFVkdmJHUmlaWEpuSjEwc1hHNGdJQ0FnSjFKMWMzTmxiQ2M2SUdScGMzUmhibU5sVFdWMGNtbGpjMXNuVW5WemMyVnNKMTBzWEc0Z0lDQWdKMU52YTJGc0p6b2daR2x6ZEdGdVkyVk5aWFJ5YVdOeld5ZFRiMnRoYkNkZExGeHVJQ0I5TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFMWxkSEpwWTFSdlJHRjBZVlI1Y0dVNklGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVnh1SUNBdWNtVmtkV05sS0NoeVpYUTZJRk4wY21sdVowUnBZM1JwYjI1aGNua3NJR3RsZVNrZ1BUNGdlMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJhMlY1SUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMHBLU0I3WEc0Z0lDQWdJQ0J5WlhSYmRtRnNJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwZ1BTQnJaWGs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwc0lIdDlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEhKcGJtZE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFOMGNtbHVaeWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjBKcGRFRnljbUY1SjEwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JXWldOMGIzSk5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iSjFabFkzUnZjaWRkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQU0I3WkdGMFlUb2djM1J5YVc1blcxMHNJRzFsZEhKcFl6b2dVM1J5YVc1blRXVjBjbWxqYzMwZ2ZDQjdaR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjMzBnZkZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0a1lYUmhPaUJDYVhSQmNuSmhlVnRkTENCdFpYUnlhV002SUVKcGRFRnljbUY1VFdWMGNtbGpjMzA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dlMXRyWlhrNklITjBjbWx1WjEwNklIdGJhMlY1TWpvZ2MzUnlhVzVuWFRvZ1JHbHpkR0Z1WTJWTlpYUnlhV045ZlNBOUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNNN1hHNGdJQ0FnY21WMGRYSnVJR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdZM1Z6ZEc5dElITjBjbWx1WnlCa2FYTjBZVzVqWlNCaWVTQjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdaR0YwWVZSNWNHVWdUV1YwY21sakozTWdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUk5aWFJ5YVdOQ2VVUmhkR0ZVZVhCbEtHUmhkR0ZVZVhCbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJaR0YwWVZSNWNHVmRLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQlNaWFIxY201eklHMWxkSEpwWXlCdVlXMWxjeUJoZG1GcGJHRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5sZXQgem9vbSA9IGZhbHNlO1xuLy8gU2VhcmNoZXMgZm9yIGFjdGl2aXR5IGNsaWZmcyBpbiBhIGNoZW1pY2FsIGRhdGFzZXQgYnkgc2VsZWN0ZWQgY3V0b2ZmXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcUNvbCwgYXhlc05hbWVzLCBzY2F0dGVyVGl0bGUsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIHNpbWlsYXJpdHlNZXRyaWMsIG1ldGhvZE5hbWUsIHNlbVR5cGUsIHVuaXRzLCBzZXFTcGFjZUZ1bmMsIHNpbUZ1bmMsIHRvb2x0aXBEcmF3RnVuYywgb3B0aW9ucykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGF1dG9tYXRpY1NpbWlsYXJpdHlMaW1pdCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBNSU5fU0lNSUxBUklUWSA9IDgwO1xuICAgICAgICBjb25zdCBpbml0aWFsU2ltaWxhcml0eUxpbWl0ID0gYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID8gTUlOX1NJTUlMQVJJVFkgOiBzaW1pbGFyaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCB7IGRpc3RhbmNlLCBjb29yZGluYXRlcyB9ID0geWllbGQgc2VxU3BhY2VGdW5jKHtcbiAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogYXhlc05hbWVzLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICBkZi5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBjb25zdCBkZlNlcSA9IERHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCAnc2VxJywgc2VxQ29sLnRvTGlzdCgpKV0pO1xuICAgICAgICBjb25zdCBkaW0gPSBzZXFDb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBzaW1BcnIgPSBBcnJheShkaW0gLSAxKTtcbiAgICAgICAgaWYgKCFkaXN0YW5jZSlcbiAgICAgICAgICAgIHlpZWxkIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2UsIHNpbUFycik7XG4gICAgICAgIGNvbnN0IG9wdFNpbWlsYXJpdHlMaW1pdCA9IGluaXRpYWxTaW1pbGFyaXR5TGltaXQ7XG4gICAgICAgIGNvbnN0IHNpbVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2FsaVZhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgbjEgPSBbXTtcbiAgICAgICAgY29uc3QgbjIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiAhPSBkaW0gLSAxIC0gaTsgKytqKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2ltID0gc2ltQXJyW2ldLmdldChqKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltID49IG9wdFNpbWlsYXJpdHlMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICBuMS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICBuMi5wdXNoKGkgKyBqICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHNpbVZhbHMucHVzaChzaW0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQoaSkgLSBhY3Rpdml0aWVzLmdldChpICsgaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpbSAhPSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChkaWZmIC8gKDEgLSBzaW0pKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsaVZhbHMucHVzaChJbmZpbml0eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGlWYWxzV2l0aG91dEluZmluaXR5ID0gc2FsaVZhbHMuZmlsdGVyKGl0ID0+IGl0ICE9PSBJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNaW4gPSBNYXRoLm1pbiguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlNYXggPSBNYXRoLm1heCguLi5zYWxpVmFsc1dpdGhvdXRJbmZpbml0eSk7XG4gICAgICAgIGNvbnN0IHNhbGlPcGFjaXR5Q29lZiA9IDAuOCAvIChzYWxpTWF4IC0gc2FsaU1pbik7XG4gICAgICAgIGNvbnN0IG5laWdoYm91cnNDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNpbWlsYXJpdHlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGNvbnN0IHNhbGlDb3VudCA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpICE9IG4xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjFbaV1dICs9IDE7XG4gICAgICAgICAgICBuZWlnaGJvdXJzQ291bnRbbjJbaV1dICs9IDE7XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjFbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBzaW1pbGFyaXR5Q291bnRbbjJbaV1dICs9IHNpbVZhbHNbaV07XG4gICAgICAgICAgICBpZiAoc2FsaVZhbHNbaV0gIT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZpdGllcy5nZXQobjFbaV0pID4gYWN0aXZpdGllcy5nZXQobjJbaV0pKVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjFbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgc2FsaUNvdW50W24yW2ldXSArPSBzYWxpVmFsc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzYWxpID0gREcuQ29sdW1uLmZyb21MaXN0KCdkb3VibGUnLCBgc2FsaV8ke2F4ZXNOYW1lc1swXS5zdWJzdHJpbmcoYXhlc05hbWVzWzBdLmxhc3RJbmRleE9mKCdfJykpfWAsIHNhbGlDb3VudCk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKHNhbGkpO1xuICAgICAgICBjb25zdCB2aWV3ID0gZ3Jvay5zaGVsbC5nZXRUYWJsZVZpZXcoZGYubmFtZSk7XG4gICAgICAgIGNvbnN0IHNwID0gdmlldy5hZGRWaWV3ZXIoREcuVmlld2VyLnNjYXR0ZXJQbG90KGRmLCB7XG4gICAgICAgICAgICB4Q29sdW1uTmFtZTogYXhlc05hbWVzWzBdLFxuICAgICAgICAgICAgeUNvbHVtbk5hbWU6IGF4ZXNOYW1lc1sxXSxcbiAgICAgICAgICAgIHNpemU6IHNhbGkubmFtZSxcbiAgICAgICAgICAgIGNvbG9yOiBhY3Rpdml0aWVzLm5hbWUsXG4gICAgICAgICAgICBzaG93WFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dZU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1NpemVTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93Q29sb3JTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBtYXJrZXJNaW5TaXplOiA1LFxuICAgICAgICAgICAgbWFya2VyTWF4U2l6ZTogMjUsXG4gICAgICAgICAgICB0aXRsZTogc2NhdHRlclRpdGxlXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3QgY2FudmFzID0gc3AuZ2V0SW5mbygpWydjYW52YXMnXTtcbiAgICAgICAgY29uc3QgbGluZXNSZXMgPSBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcUNvbCwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKTtcbiAgICAgICAgY29uc3QgdG9vbHRpcHMgPSB7fTtcbiAgICAgICAgbGluZXNSZXMubGluZXNEZi5vbkN1cnJlbnRDZWxsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE1vbElkeCA9IGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbCAmJiBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRDb2wubmFtZSA9PT0gJzJfc2VxJyA/IDEgOiAwO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPVxuICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gLTEgPyBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHhdLm1vbHNbY3VycmVudE1vbElkeF0gOiAtMTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICBsaW5lc0RmR3JpZC5pbnZhbGlkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uU2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNSZXMubGluZXNbbGluZXNSZXMubGluZXNEZi5tb3VzZU92ZXJSb3dJZHhdO1xuICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzRGZHcmlkID0gbGluZXNSZXMubGluZXNEZi5wbG90LmdyaWQoKS5zb3J0KFsnYWN0X2RpZmYnXSwgW2ZhbHNlXSk7XG4gICAgICAgIGxpbmVzRGZHcmlkLm9uQ2VsbENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB6b29tID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGxpc3RDbGlmZnNMaW5rID0gdWkuYnV0dG9uKGAke2xpbmVzUmVzLmxpbmVzRGYucm93Q291bnR9IGNsaWZmc2AsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWZmc0RpYWxvZyA9IHVpLmRpYWxvZyh7IHRpdGxlOiAnQWN0aXZpdHkgY2xpZmZzJyB9KVxuICAgICAgICAgICAgICAgIC5hZGQobGluZXNEZkdyaWQucm9vdClcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuICAgICAgICAgICAgY2xpZmZzRGlhbG9nLnJvb3QuaWQgPSAnY2xpZmZzX2RpYWxvZyc7XG4gICAgICAgIH0pO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnRvcCA9ICcxMHB4JztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICAgIHNwLnJvb3QuYXBwZW5kKGxpc3RDbGlmZnNMaW5rKTtcbiAgICAgICAgbGV0IHRpbWVyO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBnbG9iYWwuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNoZWNrQ3Vyc29yT25MaW5lKGV2ZW50LCBjYW52YXMsIGxpbmVzUmVzLmxpbmVzKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9vbHRpcHNbbGluZS5pZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdUb29sdGlwUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBzOiB0b29sdGlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmOiBkZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFDb2w6IHNlcUNvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwRHJhd0Z1bmMoZHJhd1Rvb2x0aXBQYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvdyh0b29sdGlwc1tsaW5lLmlkXSwgZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgaWYgKGxpbmUgJiYgZGYubW91c2VPdmVyUm93SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUuc2VsZWN0ZWQgPSAhbGluZS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5zZWxlY3Rpb24uc2V0KGxpbmUuaWQsIGxpbmUuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0QWxsKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXMuZm9yRWFjaCgobCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5tb2xzLmZvckVhY2goKG0pID0+IGRmLnNlbGVjdGlvbi5zZXQobSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggIT09IGxpbmUuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCA9IGxpbmUuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5jdXJyZW50Um93SWR4ID0gbGluZS5tb2xzWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCAhbGluZXNSZXMubGluZXNbMF0uc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldCgwLCBsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzcC5vbkV2ZW50KCdkNC1iZWZvcmUtZHJhdy1zY2VuZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHJlbmRlckxpbmVzKHNwLCBheGVzTmFtZXNbMF0sIGF4ZXNOYW1lc1sxXSwgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pO1xuICAgICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TGluZSA9IGxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF07XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHgxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMF0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5MSA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzFdLCBjdXJyZW50TGluZS5tb2xzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeDIgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1sxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkyID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMV0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4RGlmZiA9IE1hdGguYWJzKHgxIC0geDIpICogNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeURpZmYgPSBNYXRoLmFicyh5MSAtIHkyKSAqIDU7XG4gICAgICAgICAgICAgICAgICAgIHNwLnpvb20oeDEgPCB4MiA/IHgxIC0geERpZmYgOiB4MiAtIHhEaWZmLCB5MSA+IHkyID8geTEgKyB5RGlmZiA6IHkyICsgeURpZmYsIHgxID4geDIgPyB4MSArIHhEaWZmIDogeDIgKyB4RGlmZiwgeTEgPCB5MiA/IHkxIC0geURpZmYgOiB5MiAtIHlEaWZmKTtcbiAgICAgICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICAgICAgICAgIHpvb20gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNwLmFkZFByb3BlcnR5KCdzaW1pbGFyaXR5TGltaXQnLCAnZG91YmxlJywgb3B0U2ltaWxhcml0eUxpbWl0KTtcbiAgICAgICAgcmV0dXJuIHNwO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXMpIHtcbiAgICBjb25zdCByZWN0ID0gY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IHkgPSBldmVudC5jbGllbnRZIC0gcmVjdC50b3A7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGNvbnN0IGRpc3QgPSBNYXRoLmFicyhNYXRoLmh5cG90KGxpbmUuYVswXSAtIHgsIGxpbmUuYVsxXSAtIHkpICtcbiAgICAgICAgICAgIE1hdGguaHlwb3QobGluZS5iWzBdIC0geCwgbGluZS5iWzFdIC0geSkgLSBNYXRoLmh5cG90KGxpbmUuYVswXSAtIGxpbmUuYlswXSwgbGluZS5hWzFdIC0gbGluZS5iWzFdKSk7XG4gICAgICAgIGlmIChkaXN0IDwgMilcbiAgICAgICAgICAgIHJldHVybiBsaW5lO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHJlbmRlckxpbmVzKHNwLCB4QXhpcywgeUF4aXMsIGxpbmVzUmVzLCBzYWxpVmFscywgc2FsaU9wYWNpdHlDb2VmLCBzYWxpTWluKSB7XG4gICAgY29uc3QgbGluZXMgPSBsaW5lc1Jlcy5saW5lcztcbiAgICBjb25zdCBjYW52YXMgPSBzcC5nZXRJbmZvKClbJ2NhbnZhcyddO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGNvbnN0IHggPSBzcC5kYXRhRnJhbWUuY29sdW1ucy5ieU5hbWUoeEF4aXMpO1xuICAgIGNvbnN0IHkgPSBzcC5kYXRhRnJhbWUuY29sdW1ucy5ieU5hbWUoeUF4aXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgcG9pbnRGcm9tID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzBdKSwgeS5nZXQobGluZXNbaV0ubW9sc1swXSkpO1xuICAgICAgICBjb25zdCBwb2ludFRvID0gc3Aud29ybGRUb1NjcmVlbih4LmdldChsaW5lc1tpXS5tb2xzWzFdKSwgeS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgICAgICBsaW5lc1tpXS5hID0gW3BvaW50RnJvbS54LCBwb2ludEZyb20ueV07XG4gICAgICAgIGxpbmVzW2ldLmIgPSBbcG9pbnRUby54LCBwb2ludFRvLnldO1xuICAgICAgICBjb25zdCBsaW5lID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICBsaW5lLm1vdmVUbyhsaW5lc1tpXS5hWzBdLCBsaW5lc1tpXS5hWzFdKTtcbiAgICAgICAgY29uc3QgY29sb3IgPSBsaW5lc1tpXS5zZWxlY3RlZCA/ICcyNTUsMjU1LDAnIDogJzAsMTI4LDAnO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gc2FsaVZhbHNbaV0gPT09IEluZmluaXR5ID8gMSA6IDAuMiArIChzYWxpVmFsc1tpXSAtIHNhbGlNaW4pICogc2FsaU9wYWNpdHlDb2VmO1xuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBgcmdiYSgke2NvbG9yfSwke29wYWNpdHl9KWA7XG4gICAgICAgIGN0eC5saW5lV2lkdGggPSBsaW5lc1tpXS5pZCA9PT0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID8gMyA6IDE7XG4gICAgICAgIGxpbmUubGluZVRvKGxpbmVzW2ldLmJbMF0sIGxpbmVzW2ldLmJbMV0pO1xuICAgICAgICBjdHguc3Ryb2tlKGxpbmUpO1xuICAgIH1cbiAgICByZXR1cm4gbGluZXM7XG59XG5mdW5jdGlvbiBjcmVhdGVMaW5lcyhuMSwgbjIsIHNlcSwgYWN0aXZpdGllcywgc2FsaVZhbHMsIHNlbVR5cGUsIHVuaXRzKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG4xLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG51bTEgPSBuMVtpXTtcbiAgICAgICAgY29uc3QgbnVtMiA9IG4yW2ldO1xuICAgICAgICBsaW5lcy5wdXNoKHsgaWQ6IGksIG1vbHM6IFtudW0xLCBudW0yXSwgc2VsZWN0ZWQ6IGZhbHNlLCBhOiBbXSwgYjogW10gfSk7XG4gICAgfVxuICAgIGNvbnN0IGxpbmVzRGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKGxpbmVzLmxlbmd0aCk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld1N0cmluZygnMV9zZXEnKS5pbml0KChpKSA9PiBzZXEuZ2V0KGxpbmVzW2ldLm1vbHNbMF0pKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcyX3NlcScpLmluaXQoKGkpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1sxXSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnYWN0X2RpZmYnKVxuICAgICAgICAuaW5pdCgoaSkgPT4gTWF0aC5hYnMoYWN0aXZpdGllcy5nZXQobGluZXNbaV0ubW9sc1swXSkgLSBhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzFdKSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdJbnQoJ2xpbmVfaW5kZXgnKS5pbml0KChpKSA9PiBpKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3RmxvYXQoJ3NhbGknKS5pbml0KChpKSA9PiBzYWxpVmFsc1tpXSk7XG4gICAgbGluZXNEZi5jb2woJzFfc2VxJykudGFnc1tERy5UQUdTLlVOSVRTXSA9IHVuaXRzO1xuICAgIGxpbmVzRGYuY29sKCcyX3NlcScpLnRhZ3NbREcuVEFHUy5VTklUU10gPSB1bml0cztcbiAgICBsaW5lc0RmLmNvbCgnMV9zZXEnKS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgICBsaW5lc0RmLmNvbCgnMl9zZXEnKS5zZW1UeXBlID0gc2VtVHlwZTtcbiAgICByZXR1cm4geyBsaW5lcywgbGluZXNEZiB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4KGRpbSwgc2VxQ29sLCBkZlNlcSwgc2ltQXJyLCBzaW1GdW5jKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gZGltIC0gMTsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBtb2wgPSBzZXFDb2wuZ2V0KGkpO1xuICAgICAgICAgICAgZGZTZXEucm93cy5yZW1vdmVBdCgwLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICBzaW1BcnJbaV0gPSAoeWllbGQgc2ltRnVuYyhkZlNlcS5jb2woJ3NlcScpLCBtb2wpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2ltQXJyO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdGllc01hcml4RnJvbURpc3RhbmNlcyhkaW0sIGRpc3RhbmNlcywgc2ltQXJyKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgY29uc3Qgc2ltaWxhcml0eUFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBkaW07ICsrailcbiAgICAgICAgICAgIHNpbWlsYXJpdHlBcnIucHVzaChnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGRpc3RhbmNlc1tpXVtqXSkpO1xuICAgICAgICBzaW1BcnJbaV0gPSBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheSgnc2ltaWxhcml0eScsIEZsb2F0MzJBcnJheS5mcm9tKHNpbWlsYXJpdHlBcnIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbUFycjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVlXTjBhWFpwZEhrdFkyeHBabVp6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lZV04wYVhacGRIa3RZMnhwWm1aekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096dEJRVUZCTEU5QlFVOHNTMEZCU3l4SlFVRkpMRTFCUVUwc2JVSkJRVzFDTEVOQlFVTTdRVUZETVVNc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHBRa0ZCYVVJc1EwRkJRenRCUVVOMFF5eFBRVUZQTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlJYUkRMRTlCUVU4c1JVRkJSU3g1UWtGQmVVSXNSVUZCUlN4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQmMwTTNSaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZGYWtJc2QwVkJRWGRGTzBGQlEzaEZMRTFCUVUwc1ZVRkJaMElzYVVKQlFXbENMRU5CUTI1RExFVkJRV2RDTEVWQlEyaENMRTFCUVdsQ0xFVkJRMnBDTEZOQlFXMUNMRVZCUTI1Q0xGbEJRVzlDTEVWQlEzQkNMRlZCUVhGQ0xFVkJRM0pDTEZWQlFXdENMRVZCUTJ4Q0xHZENRVUYzUWl4RlFVTjRRaXhWUVVGclFpeEZRVU5zUWl4UFFVRmxMRVZCUTJZc1MwRkJZU3hGUVVOaUxGbEJRVFpGTEVWQlF6ZEZMRTlCUVcxRkxFVkJRMjVGTEdWQlFYRkVMRVZCUTNKRUxFOUJRV0U3TzFGQlEyWXNUVUZCVFN4M1FrRkJkMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZEZGtNc1RVRkJUU3hqUVVGakxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJURkNMRTFCUVUwc2MwSkJRWE5DTEVkQlFVY3NkMEpCUVhkQ0xFTkJRVU1zUTBGQlF5eERRVUZETEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hIUVVGSExFZEJRVWNzUTBGQlF6dFJRVVUxUml4TlFVRk5MRVZCUVVNc1VVRkJVU3hGUVVGRkxGZEJRVmNzUlVGQlF5eEhRVUZITEUxQlFVMHNXVUZCV1N4RFFVRkRPMWxCUTJwRUxFMUJRVTBzUlVGQlJTeE5RVUZOTzFsQlEyUXNWVUZCVlN4RlFVRkZMRlZCUVZVN1dVRkRkRUlzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTzFsQlEyeERMR05CUVdNc1JVRkJSU3hUUVVGVE8xbEJRM3BDTEU5QlFVOHNSVUZCUlN4UFFVRlBPMU5CUTJwQ0xFTkJRVU1zUTBGQlF6dFJRVVZJTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1YwRkJWenRaUVVNelFpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVYwUWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEZGQlFWRXNSVUZCUlN4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5R0xFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRNVUlzVFVGQlRTeE5RVUZOTEVkQlFXZENMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTTBNc1NVRkJTU3hEUVVGRExGRkJRVkU3V1VGRFdDeE5RVUZOTEc5Q1FVRnZRaXhEUVVGRExFZEJRVWNzUlVGQlJTeE5RVUZOTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6czdXVUZGYUVVc2FVTkJRV2xETEVOQlFVTXNSMEZCUnl4RlFVRkZMRkZCUVZFc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVV6UkN4TlFVRk5MR3RDUVVGclFpeEhRVUZITEhOQ1FVRnpRaXhEUVVGRE8xRkJSV3hFTEUxQlFVMHNUMEZCVHl4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVNM1FpeE5RVUZOTEZGQlFWRXNSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkRPVUlzVFVGQlRTeEZRVUZGTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNoQ0xFMUJRVTBzUlVGQlJTeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVVjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnFReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1owSkJRM0pETEUxQlFVMHNSMEZCUnl4SFFVRlhMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSWEpETEVsQlFVa3NSMEZCUnl4SlFVRkpMR3RDUVVGclFpeEZRVUZGTzI5Q1FVTTNRaXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOWUxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEYmtJc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRiRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU55UlN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8zZENRVU5XTEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN08zZENRVVZvUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzJsQ1FVTXpRanRoUVVOR08xTkJRMFk3VVVGRlJDeE5RVUZOTEhWQ1FVRjFRaXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZEZGtVc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZEY2tRc1RVRkJUU3hsUVVGbExFZEJRVWNzUjBGQlJ5eEhRVUZETEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSMmhFTEUxQlFVMHNaVUZCWlN4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNdlF5eE5RVUZOTEdWQlFXVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRMME1zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhwRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RExHVkJRV1VzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRE5VSXNaVUZCWlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTTFRaXhsUVVGbExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkRMR1ZCUVdVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVVVGQlVTeEZRVUZGTzJkQ1FVTXpRaXhKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlF5OURMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzI5Q1FVVm9ReXhUUVVGVExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEyNURPMU5CUTBZN1VVRkZSQ3hOUVVGTkxFbEJRVWtzUjBGQll5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhSUVVGUkxFVkJRVVVzVVVGQlVTeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUldwSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSWEpDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zV1VGQldTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVNNVF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOc1JDeFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONlFpeFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVONlFpeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrN1dVRkRaaXhMUVVGTExFVkJRVVVzVlVGQlZTeERRVUZETEVsQlFVazdXVUZEZEVJc1lVRkJZU3hGUVVGRkxFdEJRVXM3V1VGRGNFSXNZVUZCWVN4RlFVRkZMRXRCUVVzN1dVRkRjRUlzWjBKQlFXZENMRVZCUVVVc1MwRkJTenRaUVVOMlFpeHBRa0ZCYVVJc1JVRkJSU3hMUVVGTE8xbEJRM2hDTEdGQlFXRXNSVUZCUlN4RFFVRkRPMWxCUTJoQ0xHRkJRV0VzUlVGQlJTeEZRVUZGTzFsQlEycENMRXRCUVVzc1JVRkJSU3haUVVGWk8xTkJRM0JDTEVOQlFVTXNRMEZCZVVJc1EwRkJRenRSUVVVMVFpeE5RVUZOTEUxQlFVMHNSMEZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGVkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETDBNc1RVRkJUU3hSUVVGUkxFZEJRVWNzVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlN4RlFVRkZMRVZCUVVVc1RVRkJUU3hGUVVGRkxGVkJRVlVzUlVGQlJTeFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJRMjVHTEUxQlFVMHNVVUZCVVN4SFFVRlJMRVZCUVVVc1EwRkJRenRSUVVWNlFpeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRVZCUVVVN1dVRkRia1FzVFVGQlRTeGhRVUZoTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hMUVVGTExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE1VY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhoUVVGaE8yZENRVU40UWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGJFZ3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1dVRkRNMFFzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFsQlF6RkVMRmRCUVZjc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dFJRVU16UWl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWSUxGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRiRVFzU1VGQlNTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMR1ZCUVdVc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJUdG5Ra0ZETTBNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzJkQ1FVTTVSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8yOUNRVU5vUWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0aFFVTTVRanRaUVVORUxGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6TkNMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkU3YjBKQlExb3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBnc1YwRkJWeXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeFhRVUZYTEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlRkRkxGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1JVRkJSVHRaUVVOeVF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJRc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeE5RVUZOTEdOQlFXTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRk5CUVZNc1JVRkJSU3hIUVVGSExFVkJRVVU3V1VGRE0wVXNUVUZCVFN4WlFVRlpMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZETEV0QlFVc3NSVUZCUlN4cFFrRkJhVUlzUlVGQlF5eERRVUZETzJsQ1FVTjJSQ3hIUVVGSExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0cFFrRkRja0lzU1VGQlNTeEZRVUZGTEVOQlFVTTdXVUZEVml4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eGxRVUZsTEVOQlFVTTdVVUZEZWtNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeGpRVUZqTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRE0wTXNZMEZCWXl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEyeERMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0UlFVTndReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRSUVVVdlFpeEpRVUZKTEV0QlFYRkNMRU5CUVVNN1VVRkRNVUlzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGZEJRVmNzUlVGQlJTeFZRVUZWTEV0QlFXbENPMWxCUXpsRUxGbEJRVmtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTndRaXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXp0blFrRkRlRUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03WjBKQlF6bEVMRWxCUVVrc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eGxRVUZsTEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVN2IwSkJRM0pETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzNkQ1FVTjBRaXhOUVVGTkxHbENRVUZwUWl4SFFVRkhPelJDUVVONFFpeFJRVUZSTEVWQlFVVXNVVUZCVVRzMFFrRkRiRUlzU1VGQlNTeEZRVUZGTEVsQlFVazdORUpCUTFZc1JVRkJSU3hGUVVGRkxFVkJRVVU3TkVKQlEwNHNUVUZCVFN4RlFVRkZMRTFCUVUwN05FSkJRMlFzVVVGQlVTeEZRVUZGTEZWQlFWVTdORUpCUTNCQ0xFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNUMEZCVHpzMFFrRkRhRUlzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBPM2xDUVVOcVFpeERRVUZCTzNkQ1FVTkVMR1ZCUVdVc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4RFFVRkRPM0ZDUVVOd1F6dHZRa0ZEUkN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8ybENRVU5zUlR0WlFVTklMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5ZTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRmRCUVZjc1JVRkJSU3hWUVVGVExFdEJRV2xDTzFsQlF6ZEVMRTFCUVUwc1NVRkJTU3hIUVVGSExHbENRVUZwUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMWxCUXpsRUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4bFFVRmxMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3WjBKQlEzSkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJUdHZRa0ZEYWtJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN2IwSkJReTlDTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHZRa0ZGZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzNkQ1FVTm9RaXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenR2UWtGRk4wSXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0M1FrRkRNMElzU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVRzMFFrRkRXaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNKRUxFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTktPM0ZDUVVGTk8yOUNRVU5NTEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFdEJRVXNzU1VGQlNTeERRVUZETEVWQlFVVXNSVUZCUlR0M1FrRkRPVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dDNRa0ZEZWtNc1JVRkJSU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVU5vUXl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPM2RDUVVOcVJDeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dHhRa0ZEYWtRN2FVSkJRMFk3WVVGRFJqdFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlVnc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eHpRa0ZCYzBJc1EwRkJRenRoUVVNdlFpeFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVObUxFMUJRVTBzUzBGQlN5eEhRVUZITEZkQlFWY3NRMEZCUXl4RlFVRkZMRVZCUXpGQ0xGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4bFFVRmxMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRE5VVXNTVUZCU1N4SlFVRkpMRVZCUVVVN1owSkJRMUlzVFVGQlRTeFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdaMEpCUXpGRUxGVkJRVlVzUTBGQlF5eEhRVUZGTEVWQlFVVTdiMEpCUTJJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZETDBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnNReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTJ4RExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUlVGRGRrTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSkxFdEJRVXNzUlVGRGJFTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUlVGRGFrTXNSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzJkQ1FVTjJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUTFJc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF6dGhRVU5rTzFGQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZUQ3hGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETEdsQ1FVRnBRaXhGUVVGRkxGRkJRVkVzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xRkJRMmhGTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTFvc1EwRkJRenREUVVGQk8wRkJSVVFzVTBGQlV5eHBRa0ZCYVVJc1EwRkJReXhMUVVGVkxFVkJRVVVzVFVGQlZ5eEZRVUZGTEV0QlFXTTdTVUZEYUVVc1RVRkJUU3hKUVVGSkxFZEJRVWNzVFVGQlRTeERRVUZETEhGQ1FVRnhRaXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCRExFMUJRVTBzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6dEpRVU51UXl4TFFVRkxMRTFCUVUwc1NVRkJTU3hKUVVGSkxFdEJRVXNzUlVGQlJUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1IwRkRVaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZGtjc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFpRVU5XTEU5QlFVOHNTVUZCU1N4RFFVRkRPMHRCUTJZN1NVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dEJRVU5rTEVOQlFVTTdRVUZGUkN4VFFVRlRMRmRCUVZjc1EwRkJReXhGUVVGM1FpeEZRVU16UXl4TFFVRmhMRVZCUVVVc1MwRkJZU3hGUVVGRkxGRkJRWGRDTEVWQlFVVXNVVUZCYTBJc1JVRkJSU3hsUVVGMVFpeEZRVUZGTEU5QlFXVTdTVUZEY0Vnc1RVRkJUU3hMUVVGTExFZEJRVWNzVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTTNRaXhOUVVGTkxFMUJRVTBzUjBGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRTRRaXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBsQlEyNUZMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRTJRaXhEUVVGRE8wbEJRMmhGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhUUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNNVF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1UwRkJWU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRPVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1VVRkRja01zVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzSkdMRTFCUVUwc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVJpeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGVFTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVFVGQlRTeEZRVUZGTEVOQlFVTTdVVUZETVVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXhReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJRenRSUVVNeFJDeE5RVUZOTEU5QlFVOHNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zUjBGQlF5eGxRVUZsTEVOQlFVTTdVVUZETjBZc1IwRkJSeXhEUVVGRExGZEJRVmNzUjBGQlJ5eFJRVUZSTEV0QlFVc3NTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJRenRSUVVNNVF5eEhRVUZITEVOQlFVTXNVMEZCVXl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1pGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE1VTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU5zUWp0SlFVTkVMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEZOQlFWTXNWMEZCVnl4RFFVTnNRaXhGUVVGWkxFVkJRMW9zUlVGQldTeEZRVU5hTEVkQlFXTXNSVUZEWkN4VlFVRnhRaXhGUVVOeVFpeFJRVUZyUWl4RlFVTnNRaXhQUVVGbExFVkJRMllzUzBGQllUdEpRVU5pTEUxQlFVMHNTMEZCU3l4SFFVRlpMRVZCUVVVc1EwRkJRenRKUVVNeFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOc1F5eE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGJrSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyNUNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU03UzBGRGVFVTdTVUZEUkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM0pHTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOeVJpeFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhWUVVGVkxFTkJRVU03VTBGRGNFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4wUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXk5RUxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY2tVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkRiRVFzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVVVzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUTNoRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkZMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF6dEpRVU40UXl4UFFVRlBMRVZCUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlF5eERRVUZETzBGQlF6RkNMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRV2RDTEc5Q1FVRnZRaXhEUVVOMFF5eEhRVUZYTEVWQlExZ3NUVUZCYVVJc1JVRkRha0lzUzBGQmJVSXNSVUZEYmtJc1RVRkJiVUlzUlVGRGJrSXNUMEZCYlVVN08xRkJSM0pGTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMnBETEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETVVJc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU5xUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkZMRU5CUVVNN1UwRkRkRVE3VVVGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wTkJRVUU3UVVGRlJDeE5RVUZOTEZWQlFWVXNhVU5CUVdsRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEZOQlFXbENMRVZCUVVVc1RVRkJiVUk3U1VGRmJrY3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGFFTXNUVUZCVFN4aFFVRmhMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRM3BDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVNNVFpeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMSGxDUVVGNVFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYWtVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUhzZ1RXRjBjbWw0SUgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIc2daMlYwVTJsdGFXeGhjbWwwZVVaeWIyMUVhWE4wWVc1alpTQjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM05wYldsc1lYSnBkSGt0YldWMGNtbGpjeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NVeHBibVVnZTF4dUlDQnBaRG9nYm5WdFltVnlPMXh1SUNCdGIyeHpPaUJ1ZFcxaVpYSmJYVHRjYmlBZ2MyVnNaV04wWldRNklHSnZiMnhsWVc0N1hHNGdJR0U2SUc1MWJXSmxjbHRkT3lBdkx5QmJlQ3dnZVYxY2JpQWdZam9nYm5WdFltVnlXMTA3SUM4dklGdDRMQ0I1WFZ4dWZWeHVYRzVwYm5SbGNtWmhZMlVnU1ZKbGJtUmxjbVZrVEdsdVpYTWdlMXh1SUNCc2FXNWxjem9nU1V4cGJtVmJYVHRjYmlBZ2JHbHVaWE5FWmpvZ1JFY3VSR0YwWVVaeVlXMWxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFRaWEYxWlc1alpWTndZV05sVUdGeVlXMXpJSHRjYmlBZ0lDQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpeGNiaUFnSUNCdFpYUm9iMlJPWVcxbE9pQnpkSEpwYm1jc1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVUxbGRISnBZem9nYzNSeWFXNW5MRnh1SUNBZ0lHVnRZbVZrUVhobGMwNWhiV1Z6T2lCemRISnBibWRiWFN4Y2JpQWdJQ0J2Y0hScGIyNXpQem9nWVc1NVhHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZObGNYVmxibU5sVTNCaFkyVlNaWE4xYkhRZ2UxeHVJQ0FnSUdScGMzUmhibU5sT2lCTllYUnlhWGc3WEc0Z0lDQWdZMjl2Y21ScGJtRjBaWE02SUVSSExrTnZiSFZ0Ymt4cGMzUTdYRzRnSUgxY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpSSEpoZDFSdmIyeDBhWEJRWVhKaGJYTWdlMXh1SUNCMGIyOXNkR2x3Y3pvZ1lXNTVMRnh1SUNCc2FXNWxPaUJKVEdsdVpTeGNiaUFnWkdZNklFUkhMa1JoZEdGR2NtRnRaU3hjYmlBZ2MyVnhRMjlzT2lCRVJ5NURiMngxYlc0c1hHNGdJR0ZqZEdsMmFYUjVPaUJFUnk1RGIyeDFiVzRzWEc0Z0lIZzZJRzUxYldKbGNpeGNiaUFnZVRvZ2JuVnRZbVZ5WEc1OVhHNWNibXhsZENCNmIyOXRJRDBnWm1Gc2MyVTdYRzVjYmk4dklGTmxZWEpqYUdWeklHWnZjaUJoWTNScGRtbDBlU0JqYkdsbVpuTWdhVzRnWVNCamFHVnRhV05oYkNCa1lYUmhjMlYwSUdKNUlITmxiR1ZqZEdWa0lHTjFkRzltWmx4dVpYaHdiM0owSUdGemVXNWpJR1oxYm1OMGFXOXVJR2RsZEVGamRHbDJhWFI1UTJ4cFptWnpLRnh1SUNBZ0lHUm1PaUJFUnk1RVlYUmhSbkpoYldVc0lGeHVJQ0FnSUhObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCY2JpQWdJQ0JoZUdWelRtRnRaWE02SUhOMGNtbHVaMXRkTEZ4dUlDQWdJSE5qWVhSMFpYSlVhWFJzWlRvZ2MzUnlhVzVuTEZ4dUlDQWdJR0ZqZEdsMmFYUnBaWE02SUVSSExrTnZiSFZ0Yml3Z1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVRvZ2JuVnRZbVZ5TEZ4dUlDQWdJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSE4wY21sdVp5d2dYRzRnSUNBZ2JXVjBhRzlrVG1GdFpUb2djM1J5YVc1bkxDQmNiaUFnSUNCelpXMVVlWEJsT2lCemRISnBibWNzWEc0Z0lDQWdkVzVwZEhNNklITjBjbWx1Wnl4Y2JpQWdJQ0J6WlhGVGNHRmpaVVoxYm1NNklDaHdZWEpoYlhNNklFbFRaWEYxWlc1alpWTndZV05sVUdGeVlXMXpLU0E5UGlCUWNtOXRhWE5sUEVsVFpYRjFaVzVqWlZOd1lXTmxVbVZ6ZFd4MFBpeGNiaUFnSUNCemFXMUdkVzVqT2lBb1kyOXNPaUJFUnk1RGIyeDFiVzRzSUcxdmJEb2djM1J5YVc1bktTQTlQaUJRY205dGFYTmxQRVJITGtOdmJIVnRiaUI4SUc1MWJHdytMRnh1SUNBZ0lIUnZiMngwYVhCRWNtRjNSblZ1WXpvZ0tIQmhjbUZ0Y3pvZ1NVUnlZWGRVYjI5c2RHbHdVR0Z5WVcxektTQTlQaUIyYjJsa0xGeHVJQ0FnSUc5d2RHbHZibk0vT2lCaGJua3BJRG9nVUhKdmJXbHpaVHhFUnk1V2FXVjNaWEkrSUh0Y2JpQWdZMjl1YzNRZ1lYVjBiMjFoZEdsalUybHRhV3hoY21sMGVVeHBiV2wwSUQwZ1ptRnNjMlU3WEc0Z0lHTnZibk4wSUUxSlRsOVRTVTFKVEVGU1NWUlpJRDBnT0RBN1hHNWNiaUFnWTI5dWMzUWdhVzVwZEdsaGJGTnBiV2xzWVhKcGRIbE1hVzFwZENBOUlHRjFkRzl0WVhScFkxTnBiV2xzWVhKcGRIbE1hVzFwZENBL0lFMUpUbDlUU1UxSlRFRlNTVlJaSURvZ2MybHRhV3hoY21sMGVTQXZJREV3TUR0Y2JseHVJQ0JqYjI1emRDQjdaR2x6ZEdGdVkyVXNJR052YjNKa2FXNWhkR1Z6ZlNBOUlHRjNZV2wwSUhObGNWTndZV05sUm5WdVl5aDdYRzRnSUNBZ2MyVnhRMjlzT2lCelpYRkRiMndzWEc0Z0lDQWdiV1YwYUc5a1RtRnRaVG9nYldWMGFHOWtUbUZ0WlN4Y2JpQWdJQ0J6YVcxcGJHRnlhWFI1VFdWMGNtbGpPaUJ6YVcxcGJHRnlhWFI1VFdWMGNtbGpMRnh1SUNBZ0lHVnRZbVZrUVhobGMwNWhiV1Z6T2lCaGVHVnpUbUZ0WlhNc1hHNGdJQ0FnYjNCMGFXOXVjem9nYjNCMGFXOXVjMXh1SUNCOUtUdGNibHh1SUNCbWIzSWdLR052Ym5OMElHTnZiQ0J2WmlCamIyOXlaR2x1WVhSbGN5bGNiaUFnSUNCa1ppNWpiMngxYlc1ekxtRmtaQ2hqYjJ3cE8xeHVYRzRnSUdOdmJuTjBJR1JtVTJWeElEMGdSRWN1UkdGMFlVWnlZVzFsTG1aeWIyMURiMngxYlc1ektGdEVSeTVEYjJ4MWJXNHVabkp2YlV4cGMzUW9KM04wY21sdVp5Y3NJQ2R6WlhFbkxDQnpaWEZEYjJ3dWRHOU1hWE4wS0NrcFhTazdYRzRnSUdOdmJuTjBJR1JwYlNBOUlITmxjVU52YkM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUhOcGJVRnljam9nUkVjdVEyOXNkVzF1VzEwZ1BTQkJjbkpoZVNoa2FXMGdMU0F4S1R0Y2JseHVJQ0JwWmlBb0lXUnBjM1JoYm1ObEtWeHVJQ0FnSUdGM1lXbDBJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0S0dScGJTd2djMlZ4UTI5c0xDQmtabE5sY1N3Z2MybHRRWEp5TENCemFXMUdkVzVqS1R0Y2JpQWdaV3h6WlZ4dUlDQWdJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0Um5KdmJVUnBjM1JoYm1ObGN5aGthVzBzSUdScGMzUmhibU5sTENCemFXMUJjbklwTzF4dVhHNGdJR052Ym5OMElHOXdkRk5wYldsc1lYSnBkSGxNYVcxcGRDQTlJR2x1YVhScFlXeFRhVzFwYkdGeWFYUjVUR2x0YVhRN1hHNWNiaUFnWTI5dWMzUWdjMmx0Vm1Gc2N6b2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdZMjl1YzNRZ2MyRnNhVlpoYkhNNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUc0eE9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCdU1qb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCa2FXMGdMU0F4T3lBcksya3BJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnTURzZ2FpQWhQU0JrYVcwZ0xTQXhJQzBnYVRzZ0t5dHFLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnphVzA2SUc1MWJXSmxjaUE5SUhOcGJVRnljbHRwWFM1blpYUW9haWs3WEc1Y2JpQWdJQ0FnSUdsbUlDaHphVzBnUGowZ2IzQjBVMmx0YVd4aGNtbDBlVXhwYldsMEtTQjdYRzRnSUNBZ0lDQWdJRzR4TG5CMWMyZ29hU2s3WEc0Z0lDQWdJQ0FnSUc0eUxuQjFjMmdvYVNBcklHb2dLeUF4S1R0Y2JpQWdJQ0FnSUNBZ2MybHRWbUZzY3k1d2RYTm9LSE5wYlNrN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWWdQU0JOWVhSb0xtRmljeWhoWTNScGRtbDBhV1Z6TG1kbGRDaHBLU0F0SUdGamRHbDJhWFJwWlhNdVoyVjBLR2tnS3lCcUlDc2dNU2twTzF4dUlDQWdJQ0FnSUNCcFppQW9jMmx0SUNFOUlERXBYRzRnSUNBZ0lDQWdJQ0FnYzJGc2FWWmhiSE11Y0hWemFDaGthV1ptSUM4Z0tERWdMU0J6YVcwcEtUdGNiaUFnSUNBZ0lDQWdaV3h6WlZ4dUlDQWdJQ0FnSUNBZ0lITmhiR2xXWVd4ekxuQjFjMmdvU1c1bWFXNXBkSGtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdOdmJuTjBJSE5oYkdsV1lXeHpWMmwwYUc5MWRFbHVabWx1YVhSNUlEMGdjMkZzYVZaaGJITXVabWxzZEdWeUtHbDBJRDArSUdsMElDRTlQU0JKYm1acGJtbDBlU2s3WEc0Z0lHTnZibk4wSUhOaGJHbE5hVzRnUFNCTllYUm9MbTFwYmlndUxpNXpZV3hwVm1Gc2MxZHBkR2h2ZFhSSmJtWnBibWwwZVNrN1hHNGdJR052Ym5OMElITmhiR2xOWVhnZ1BTQk5ZWFJvTG0xaGVDZ3VMaTV6WVd4cFZtRnNjMWRwZEdodmRYUkpibVpwYm1sMGVTazdYRzRnSUdOdmJuTjBJSE5oYkdsUGNHRmphWFI1UTI5bFppQTlJREF1T0M4b2MyRnNhVTFoZUNBdElITmhiR2xOYVc0cE8xeHVYRzVjYmlBZ1kyOXVjM1FnYm1WcFoyaGliM1Z5YzBOdmRXNTBJRDBnYm1WM0lFRnljbUY1S0dScGJTa3VabWxzYkNnd0tUdGNiaUFnWTI5dWMzUWdjMmx0YVd4aGNtbDBlVU52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JpQWdZMjl1YzNRZ2MyRnNhVU52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCdU1TNXNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJRzVsYVdkb1ltOTFjbk5EYjNWdWRGdHVNVnRwWFYwZ0t6MGdNVHRjYmlBZ0lDQnVaV2xuYUdKdmRYSnpRMjkxYm5SYmJqSmJhVjFkSUNzOUlERTdYRzRnSUNBZ2MybHRhV3hoY21sMGVVTnZkVzUwVzI0eFcybGRYU0FyUFNCemFXMVdZV3h6VzJsZE8xeHVJQ0FnSUhOcGJXbHNZWEpwZEhsRGIzVnVkRnR1TWx0cFhWMGdLejBnYzJsdFZtRnNjMXRwWFR0Y2JpQWdJQ0JwWmlBb2MyRnNhVlpoYkhOYmFWMGdJVDBnU1c1bWFXNXBkSGtwSUh0Y2JpQWdJQ0FnSUdsbUlDaGhZM1JwZG1sMGFXVnpMbWRsZENodU1WdHBYU2tnUGlCaFkzUnBkbWwwYVdWekxtZGxkQ2h1TWx0cFhTa3BYRzRnSUNBZ0lDQWdJSE5oYkdsRGIzVnVkRnR1TVZ0cFhWMGdLejBnYzJGc2FWWmhiSE5iYVYwN1hHNGdJQ0FnSUNCbGJITmxYRzRnSUNBZ0lDQWdJSE5oYkdsRGIzVnVkRnR1TWx0cFhWMGdLejBnYzJGc2FWWmhiSE5iYVYwN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1kyOXVjM1FnYzJGc2FUb2dSRWN1UTI5c2RXMXVJRDBnUkVjdVEyOXNkVzF1TG1aeWIyMU1hWE4wS0Nka2IzVmliR1VuTENCZ2MyRnNhVjhrZTJGNFpYTk9ZVzFsYzFzd1hTNXpkV0p6ZEhKcGJtY29ZWGhsYzA1aGJXVnpXekJkTG14aGMzUkpibVJsZUU5bUtDZGZKeWtwZldBc0lITmhiR2xEYjNWdWRDazdYRzVjYmlBZ1pHWXVZMjlzZFcxdWN5NWhaR1FvYzJGc2FTazdYRzVjYmlBZ1kyOXVjM1FnZG1sbGR5QTlJR2R5YjJzdWMyaGxiR3d1WjJWMFZHRmliR1ZXYVdWM0tHUm1MbTVoYldVcE8xeHVJQ0JqYjI1emRDQnpjQ0E5SUhacFpYY3VZV1JrVm1sbGQyVnlLRVJITGxacFpYZGxjaTV6WTJGMGRHVnlVR3h2ZENoa1ppd2dlMXh1SUNBZ0lIaERiMngxYlc1T1lXMWxPaUJoZUdWelRtRnRaWE5iTUYwc1hHNGdJQ0FnZVVOdmJIVnRiazVoYldVNklHRjRaWE5PWVcxbGMxc3hYU3hjYmlBZ0lDQnphWHBsT2lCellXeHBMbTVoYldVc1hHNGdJQ0FnWTI5c2IzSTZJR0ZqZEdsMmFYUnBaWE11Ym1GdFpTeGNiaUFnSUNCemFHOTNXRk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNXVk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNVMmw2WlZObGJHVmpkRzl5T2lCbVlXeHpaU3hjYmlBZ0lDQnphRzkzUTI5c2IzSlRaV3hsWTNSdmNqb2dabUZzYzJVc1hHNGdJQ0FnYldGeWEyVnlUV2x1VTJsNlpUb2dOU3hjYmlBZ0lDQnRZWEpyWlhKTllYaFRhWHBsT2lBeU5TeGNiaUFnSUNCMGFYUnNaVG9nYzJOaGRIUmxjbFJwZEd4bFhHNGdJSDBwS1NCaGN5QkVSeTVUWTJGMGRHVnlVR3h2ZEZacFpYZGxjanRjYmx4dUlDQmpiMjV6ZENCallXNTJZWE1nUFNBb2MzQXVaMlYwU1c1bWJ5Z3BJR0Z6SUdGdWVTbGJKMk5oYm5aaGN5ZGRPMXh1SUNCamIyNXpkQ0JzYVc1bGMxSmxjeUE5SUdOeVpXRjBaVXhwYm1WektHNHhMQ0J1TWl3Z2MyVnhRMjlzTENCaFkzUnBkbWwwYVdWekxDQnpZV3hwVm1Gc2N5d2djMlZ0Vkhsd1pTd2dkVzVwZEhNcE8xeHVJQ0JqYjI1emRDQjBiMjlzZEdsd2N6b2dZVzU1SUQwZ2UzMDdYRzVjYmlBZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1dmJrTjFjbkpsYm5SRFpXeHNRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LQ2tnUFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJR04xY25KbGJuUk5iMnhKWkhnZ1BTQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SRGIyd2dKaVlnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTVqZFhKeVpXNTBRMjlzTG01aGJXVWdQVDA5SUNjeVgzTmxjU2NnUHlBeElEb2dNRHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1WTNWeWNtVnVkRkp2ZDBsa2VDQTlYRzRnSUNBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGdnSVQwOUlDMHhJRDhnYkdsdVpYTlNaWE11YkdsdVpYTmJiR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFVtOTNTV1I0WFM1dGIyeHpXMk4xY25KbGJuUk5iMnhKWkhoZElEb2dMVEU3WEc0Z0lDQWdjM0F1WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1elpYUW9NQ3dnSVd4cGJtVnpVbVZ6TG14cGJtVnpXekJkTG5ObGJHVmpkR1ZrS1R0Y2JpQWdJQ0J6Y0M1a1lYUmhSbkpoYldVdWMyVnNaV04wYVc5dUxuTmxkQ2d3TENCc2FXNWxjMUpsY3k1c2FXNWxjMXN3WFM1elpXeGxZM1JsWkNrN1hHNGdJQ0FnYkdsdVpYTkVaa2R5YVdRdWFXNTJZV3hwWkdGMFpTZ3BPMXh1SUNCOUtUdGNibHh1SUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG05dVUyVnNaV04wYVc5dVEyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tGOHBJRDArSUh0Y2JpQWdJQ0JwWmlBb2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1dGIzVnpaVTkyWlhKU2IzZEpaSGdnSVQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE5iYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV0YjNWelpVOTJaWEpTYjNkSlpIaGRPMXh1SUNBZ0lDQWdiR2x1WlM1elpXeGxZM1JsWkNBOUlDRnNhVzVsTG5ObGJHVmpkR1ZrTzF4dUlDQWdJQ0FnYVdZZ0tDRnNhVzVsTG5ObGJHVmpkR1ZrS1Z4dUlDQWdJQ0FnSUNCa1ppNXpaV3hsWTNScGIyNHVjMlYwUVd4c0tHWmhiSE5sS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiR2x1WlhOU1pYTXViR2x1WlhNdVptOXlSV0ZqYUNnb2JDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tHd3VjMlZzWldOMFpXUXBYRzRnSUNBZ0lDQWdJR3d1Ylc5c2N5NW1iM0pGWVdOb0tDaHRLU0E5UGlCa1ppNXpaV3hsWTNScGIyNHVjMlYwS0cwc0lIUnlkV1VwS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0JzYVc1bGMwUm1SM0pwWkM1cGJuWmhiR2xrWVhSbEtDazdYRzRnSUgwcE8xeHVYRzRnSUdOdmJuTjBJR3hwYm1WelJHWkhjbWxrSUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1d2JHOTBMbWR5YVdRb0tTNXpiM0owS0ZzbllXTjBYMlJwWm1ZblhTd2dXMlpoYkhObFhTazdYRzVjYmlBZ2JHbHVaWE5FWmtkeWFXUXViMjVEWld4c1EyeHBZMnN1YzNWaWMyTnlhV0psS0NncElEMCtJSHRjYmlBZ0lDQjZiMjl0SUQwZ2RISjFaVHRjYmlBZ2ZTazdYRzVjYmlBZ1kyOXVjM1FnYkdsemRFTnNhV1ptYzB4cGJtc2dQU0IxYVM1aWRYUjBiMjRvWUNSN2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1eWIzZERiM1Z1ZEgwZ1kyeHBabVp6WUN3Z0tDa2dQVDRnZTF4dUlDQWdJR052Ym5OMElHTnNhV1ptYzBScFlXeHZaeUE5SUhWcExtUnBZV3h2WnloN2RHbDBiR1U2SUNkQlkzUnBkbWwwZVNCamJHbG1abk1uZlNsY2JpQWdJQ0FnSUM1aFpHUW9iR2x1WlhORVprZHlhV1F1Y205dmRDbGNiaUFnSUNBZ0lDNXphRzkzS0NrN1hHNGdJQ0FnWTJ4cFptWnpSR2xoYkc5bkxuSnZiM1F1YVdRZ1BTQW5ZMnhwWm1aelgyUnBZV3h2WnljN1hHNGdJSDBwTzF4dUlDQnNhWE4wUTJ4cFptWnpUR2x1YXk1emRIbHNaUzV3YjNOcGRHbHZiaUE5SUNkaFluTnZiSFYwWlNjN1hHNGdJR3hwYzNSRGJHbG1abk5NYVc1ckxuTjBlV3hsTG5SdmNDQTlJQ2N4TUhCNEp6dGNiaUFnYkdsemRFTnNhV1ptYzB4cGJtc3VjM1I1YkdVdWNtbG5hSFFnUFNBbk1UQndlQ2M3WEc0Z0lITndMbkp2YjNRdVlYQndaVzVrS0d4cGMzUkRiR2xtWm5OTWFXNXJLVHRjYmx4dUlDQnNaWFFnZEdsdFpYSTZJRTV2WkdWS1V5NVVhVzFsYjNWME8xeHVJQ0JqWVc1MllYTXVZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ25iVzkxYzJWdGIzWmxKeXdnWm5WdVkzUnBiMjRnS0dWMlpXNTBPaUJOYjNWelpVVjJaVzUwS1NCN1hHNGdJQ0FnWTJ4bFlYSlVhVzFsYjNWMEtIUnBiV1Z5S1R0Y2JpQWdJQ0IwYVcxbGNpQTlJR2RzYjJKaGJDNXpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR3hwYm1VZ1BTQmphR1ZqYTBOMWNuTnZjazl1VEdsdVpTaGxkbVZ1ZEN3Z1kyRnVkbUZ6TENCc2FXNWxjMUpsY3k1c2FXNWxjeWs3WEc0Z0lDQWdJQ0JwWmlBb2JHbHVaU0FtSmlCa1ppNXRiM1Z6WlU5MlpYSlNiM2RKWkhnZ1BUMDlJQzB4S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doZEc5dmJIUnBjSE5iYkdsdVpTNXBaRjBwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa2NtRjNWRzl2YkhScGNGQmhjbUZ0Y3lBOUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhSdmIyeDBhWEJ6T2lCMGIyOXNkR2x3Y3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJR3hwYm1VNklHeHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaam9nWkdZc1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6WlhGRGIydzZJSE5sY1VOdmJDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdGamRHbDJhWFI1T2lCaFkzUnBkbWwwYVdWekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZURvZ1pYWmxiblF1WTJ4cFpXNTBXQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIazZJR1YyWlc1MExtTnNhV1Z1ZEZsY2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnZEc5dmJIUnBjRVJ5WVhkR2RXNWpLR1J5WVhkVWIyOXNkR2x3VUdGeVlXMXpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCMWFTNTBiMjlzZEdsd0xuTm9iM2NvZEc5dmJIUnBjSE5iYkdsdVpTNXBaRjBzSUdWMlpXNTBMbU5zYVdWdWRGZ3NJR1YyWlc1MExtTnNhV1Z1ZEZrcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwc0lERXdNREFwTzF4dUlDQjlLVHRjYmx4dUlDQmpZVzUyWVhNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnbmJXOTFjMlZrYjNkdUp5d2dablZ1WTNScGIyNG9aWFpsYm5RNklFMXZkWE5sUlhabGJuUXBJSHRjYmlBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnWTJobFkydERkWEp6YjNKUGJreHBibVVvWlhabGJuUXNJR05oYm5aaGN5d2diR2x1WlhOU1pYTXViR2x1WlhNcE8xeHVJQ0FnSUdsbUlDaHNhVzVsSUNZbUlHUm1MbTF2ZFhObFQzWmxjbEp2ZDBsa2VDQTlQVDBnTFRFcElIdGNiaUFnSUNBZ0lHbG1JQ2hsZG1WdWRDNWpkSEpzUzJWNUtTQjdYRzRnSUNBZ0lDQWdJR3hwYm1VdWMyVnNaV04wWldRZ1BTQWhiR2x1WlM1elpXeGxZM1JsWkR0Y2JpQWdJQ0FnSUNBZ2JHbHVaWE5TWlhNdWJHbHVaWE5FWmk1elpXeGxZM1JwYjI0dWMyVjBLR3hwYm1VdWFXUXNJR3hwYm1VdWMyVnNaV04wWldRcE8xeHVYRzRnSUNBZ0lDQWdJR2xtSUNnaGJHbHVaUzV6Wld4bFkzUmxaQ2xjYmlBZ0lDQWdJQ0FnSUNCa1ppNXpaV3hsWTNScGIyNHVjMlYwUVd4c0tHWmhiSE5sS1R0Y2JseHVJQ0FnSUNBZ0lDQnNhVzVsYzFKbGN5NXNhVzVsY3k1bWIzSkZZV05vS0Noc0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3d1YzJWc1pXTjBaV1FwWEc0Z0lDQWdJQ0FnSUNBZ0lDQnNMbTF2YkhNdVptOXlSV0ZqYUNnb2JTa2dQVDRnWkdZdWMyVnNaV04wYVc5dUxuTmxkQ2h0TENCMGNuVmxLU2s3WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR3hwYm1WelVtVnpMbXhwYm1WelJHWXVZM1Z5Y21WdWRGSnZkMGxrZUNBaFBUMGdiR2x1WlM1cFpDa2dlMXh1SUNBZ0lDQWdJQ0FnSUd4cGJtVnpVbVZ6TG14cGJtVnpSR1l1WTNWeWNtVnVkRkp2ZDBsa2VDQTlJR3hwYm1VdWFXUTdYRzRnSUNBZ0lDQWdJQ0FnWkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0E5SUd4cGJtVXViVzlzYzFzd1hUdGNiaUFnSUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBLREFzSUNGc2FXNWxjMUpsY3k1c2FXNWxjMXN3WFM1elpXeGxZM1JsWkNrN1hHNGdJQ0FnSUNBZ0lDQWdaR1l1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0JzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lIMHBPMXh1WEc0Z0lITndMbTl1UlhabGJuUW9KMlEwTFdKbFptOXlaUzFrY21GM0xYTmpaVzVsSnlsY2JpQWdJQ0F1YzNWaWMyTnlhV0psS0NoZktTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQnNhVzVsY3lBOUlISmxibVJsY2t4cGJtVnpLSE53TEZ4dUlDQWdJQ0FnSUNCaGVHVnpUbUZ0WlhOYk1GMHNJR0Y0WlhOT1lXMWxjMXN4WFN3Z2JHbHVaWE5TWlhNc0lITmhiR2xXWVd4ekxDQnpZV3hwVDNCaFkybDBlVU52WldZc0lITmhiR2xOYVc0cE8xeHVJQ0FnSUNBZ2FXWWdLSHB2YjIwcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kzVnljbVZ1ZEV4cGJtVWdQU0JzYVc1bGMxdHNhVzVsYzFKbGN5NXNhVzVsYzBSbUxtTjFjbkpsYm5SU2IzZEpaSGhkTzF4dUlDQWdJQ0FnSUNCelpYUlVhVzFsYjNWMEtDZ3BQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhneElEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNRjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTUYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIa3hJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTVYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1GMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGd5SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1GMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNVjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhreUlEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNVjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTVYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIaEVhV1ptSUQwZ1RXRjBhQzVoWW5Nb2VERWdMU0I0TWlrcU5UdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQjVSR2xtWmlBOUlFMWhkR2d1WVdKektIa3hJQzBnZVRJcEtqVTdYRzRnSUNBZ0lDQWdJQ0FnYzNBdWVtOXZiU2g0TVNBOElIZ3lJRDhnZURFZ0xTQjRSR2xtWmlBNklIZ3lJQzBnZUVScFptWXNYRzRnSUNBZ0lDQWdJQ0FnSUNCNU1TQStJSGt5SUQ4Z2VURWdLeUI1UkdsbVppQTZJSGt5SUNBcklIbEVhV1ptTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlREVnUGlCNE1pQS9JSGd4SUNzZ2VFUnBabVlnT2lCNE1pQXJJSGhFYVdabUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnZVRFZ1BDQjVNaUEvSUhreElDMGdlVVJwWm1ZZ09pQjVNaUF0SUhsRWFXWm1LVHRjYmlBZ0lDQWdJQ0FnZlN3Z016QXdLVHRjYmlBZ0lDQWdJQ0FnZW05dmJTQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUhOd0xtRmtaRkJ5YjNCbGNuUjVLQ2R6YVcxcGJHRnlhWFI1VEdsdGFYUW5MQ0FuWkc5MVlteGxKeXdnYjNCMFUybHRhV3hoY21sMGVVeHBiV2wwS1R0Y2JpQWdjbVYwZFhKdUlITndPMXh1ZlZ4dVhHNW1kVzVqZEdsdmJpQmphR1ZqYTBOMWNuTnZjazl1VEdsdVpTaGxkbVZ1ZERvZ1lXNTVMQ0JqWVc1MllYTTZJR0Z1ZVN3Z2JHbHVaWE02SUVsTWFXNWxXMTBwT2lCSlRHbHVaU0I4SUc1MWJHd2dlMXh1SUNCamIyNXpkQ0J5WldOMElEMGdZMkZ1ZG1GekxtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwTzF4dUlDQmpiMjV6ZENCNElEMGdaWFpsYm5RdVkyeHBaVzUwV0NBdElISmxZM1F1YkdWbWREdGNiaUFnWTI5dWMzUWdlU0E5SUdWMlpXNTBMbU5zYVdWdWRGa2dMU0J5WldOMExuUnZjRHRjYmlBZ1ptOXlJQ2hqYjI1emRDQnNhVzVsSUc5bUlHeHBibVZ6S1NCN1hHNGdJQ0FnWTI5dWMzUWdaR2x6ZENBOVhHNGdJQ0FnSUNCTllYUm9MbUZpY3loTllYUm9MbWg1Y0c5MEtHeHBibVV1WVZzd1hTQXRJSGdzSUd4cGJtVXVZVnN4WFNBdElIa3BJQ3RjYmlBZ0lDQWdJRTFoZEdndWFIbHdiM1FvYkdsdVpTNWlXekJkSUMwZ2VDd2diR2x1WlM1aVd6RmRJQzBnZVNrZ0xTQk5ZWFJvTG1oNWNHOTBLR3hwYm1VdVlWc3dYU0F0SUd4cGJtVXVZbHN3WFN3Z2JHbHVaUzVoV3pGZElDMGdiR2x1WlM1aVd6RmRLU2s3WEc0Z0lDQWdhV1lnS0dScGMzUWdQQ0F5S1Z4dUlDQWdJQ0FnY21WMGRYSnVJR3hwYm1VN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlISmxibVJsY2t4cGJtVnpLSE53T2lCRVJ5NVRZMkYwZEdWeVVHeHZkRlpwWlhkbGNpeGNiaUFnZUVGNGFYTTZJSE4wY21sdVp5d2dlVUY0YVhNNklITjBjbWx1Wnl3Z2JHbHVaWE5TWlhNNklFbFNaVzVrWlhKbFpFeHBibVZ6TENCellXeHBWbUZzY3pvZ2JuVnRZbVZ5VzEwc0lITmhiR2xQY0dGamFYUjVRMjlsWmpvZ2JuVnRZbVZ5TENCellXeHBUV2x1T2lCdWRXMWlaWElwT2lCSlRHbHVaU0JiWFNCN1hHNGdJR052Ym5OMElHeHBibVZ6SUQwZ2JHbHVaWE5TWlhNdWJHbHVaWE03WEc0Z0lHTnZibk4wSUdOaGJuWmhjeUE5SUNoemNDNW5aWFJKYm1adktDa2dZWE1nZTF0cGJtUmxlRG9nYzNSeWFXNW5YU0E2SUdGdWVYMHBXeWRqWVc1MllYTW5YVHRjYmlBZ1kyOXVjM1FnWTNSNElEMGdZMkZ1ZG1GekxtZGxkRU52Ym5SbGVIUW9KekprSnlrZ1lYTWdRMkZ1ZG1GelVtVnVaR1Z5YVc1blEyOXVkR1Y0ZERKRU8xeHVJQ0JqYjI1emRDQjRJRDBnYzNBdVpHRjBZVVp5WVcxbElTNWpiMngxYlc1ekxtSjVUbUZ0WlNoNFFYaHBjeWs3WEc0Z0lHTnZibk4wSUhrZ1BTQnpjQzVrWVhSaFJuSmhiV1VoTG1OdmJIVnRibk11WW5sT1lXMWxLSGxCZUdsektUdGNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc2FXNWxjeTVzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ2YVc1MFJuSnZiU0E5SUhOd0xuZHZjbXhrVkc5VFkzSmxaVzRvZUM1blpYUW9iR2x1WlhOYmFWMHViVzlzYzFzd1hTa3NJSGt1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcEtUdGNiaUFnSUNCamIyNXpkQ0J3YjJsdWRGUnZJRDBnYzNBdWQyOXliR1JVYjFOamNtVmxiaWg0TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pGZEtTd2dlUzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrcE8xeHVJQ0FnSUd4cGJtVnpXMmxkTG1FZ1BTQmJjRzlwYm5SR2NtOXRMbmdzSUhCdmFXNTBSbkp2YlM1NVhUdGNiaUFnSUNCc2FXNWxjMXRwWFM1aUlEMGdXM0J2YVc1MFZHOHVlQ3dnY0c5cGJuUlVieTU1WFR0Y2JpQWdJQ0JqYjI1emRDQnNhVzVsSUQwZ2JtVjNJRkJoZEdneVJDZ3BPMXh1SUNBZ0lHeHBibVV1Ylc5MlpWUnZLR3hwYm1WelcybGRMbUZiTUYwc0lHeHBibVZ6VzJsZExtRmJNVjBwTzF4dUlDQWdJR052Ym5OMElHTnZiRzl5SUQwZ2JHbHVaWE5iYVYwdWMyVnNaV04wWldRZ1B5QW5NalUxTERJMU5Td3dKeUE2SUNjd0xERXlPQ3d3Snp0Y2JpQWdJQ0JqYjI1emRDQnZjR0ZqYVhSNUlEMGdjMkZzYVZaaGJITmJhVjBnUFQwOUlFbHVabWx1YVhSNUlEOGdNU0E2SURBdU1pQXJJQ2h6WVd4cFZtRnNjMXRwWFNBdElITmhiR2xOYVc0cEtuTmhiR2xQY0dGamFYUjVRMjlsWmp0Y2JpQWdJQ0JqZEhndWMzUnliMnRsVTNSNWJHVWdQU0JnY21kaVlTZ2tlMk52Ykc5eWZTd2tlMjl3WVdOcGRIbDlLV0E3WEc0Z0lDQWdZM1I0TG14cGJtVlhhV1IwYUNBOUlHeHBibVZ6VzJsZExtbGtJRDA5UFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIZ2dQeUF6SURvZ01UdGNiaUFnSUNCc2FXNWxMbXhwYm1WVWJ5aHNhVzVsYzF0cFhTNWlXekJkTENCc2FXNWxjMXRwWFM1aVd6RmRLVHRjYmlBZ0lDQmpkSGd1YzNSeWIydGxLR3hwYm1VcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCc2FXNWxjenRjYm4xY2JseHVablZ1WTNScGIyNGdZM0psWVhSbFRHbHVaWE1vWEc0Z0lHNHhPaUJ1ZFcxaVpYSmJYU3dnWEc0Z0lHNHlPaUJ1ZFcxaVpYSmJYU3dnWEc0Z0lITmxjVG9nUkVjdVEyOXNkVzF1TENCY2JpQWdZV04wYVhacGRHbGxjem9nUkVjdVEyOXNkVzF1TENCY2JpQWdjMkZzYVZaaGJITTZJRzUxYldKbGNsdGRMRnh1SUNCelpXMVVlWEJsT2lCemRISnBibWNzWEc0Z0lIVnVhWFJ6T2lCemRISnBibWNwSURvZ1NWSmxibVJsY21Wa1RHbHVaWE1nZTF4dUlDQmpiMjV6ZENCc2FXNWxjem9nU1V4cGJtVmJYU0E5SUZ0ZE8xeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc0eExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JuVnRNU0E5SUc0eFcybGRPMXh1SUNBZ0lHTnZibk4wSUc1MWJUSWdQU0J1TWx0cFhUdGNiaUFnSUNCc2FXNWxjeTV3ZFhOb0tIdHBaRG9nYVN3Z2JXOXNjem9nVzI1MWJURXNJRzUxYlRKZExDQnpaV3hsWTNSbFpEb2dabUZzYzJVc0lHRTZJRnRkTENCaU9pQmJYWDBwTzF4dUlDQjlYRzRnSUdOdmJuTjBJR3hwYm1WelJHWWdQU0JFUnk1RVlYUmhSbkpoYldVdVkzSmxZWFJsS0d4cGJtVnpMbXhsYm1kMGFDazdYRzRnSUd4cGJtVnpSR1l1WTI5c2RXMXVjeTVoWkdST1pYZFRkSEpwYm1jb0p6RmZjMlZ4SnlrdWFXNXBkQ2dvYVRvZ2JuVnRZbVZ5S1NBOVBpQnpaWEV1WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTUYwcEtUdGNiaUFnYkdsdVpYTkVaaTVqYjJ4MWJXNXpMbUZrWkU1bGQxTjBjbWx1Wnlnbk1sOXpaWEVuS1M1cGJtbDBLQ2hwT2lCdWRXMWlaWElwSUQwK0lITmxjUzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN4WFNrcE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1JteHZZWFFvSjJGamRGOWthV1ptSnlsY2JpQWdJQ0F1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCTllYUm9MbUZpY3loaFkzUnBkbWwwYVdWekxtZGxkQ2hzYVc1bGMxdHBYUzV0YjJ4eld6QmRLU0F0SUdGamRHbDJhWFJwWlhNdVoyVjBLR3hwYm1WelcybGRMbTF2YkhOYk1WMHBLU2s3WEc0Z0lHeHBibVZ6UkdZdVkyOXNkVzF1Y3k1aFpHUk9aWGRKYm5Rb0oyeHBibVZmYVc1a1pYZ25LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUdrcE8xeHVJQ0JzYVc1bGMwUm1MbU52YkhWdGJuTXVZV1JrVG1WM1JteHZZWFFvSjNOaGJHa25LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUhOaGJHbFdZV3h6VzJsZEtUdGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6RmZjMlZ4SnlraExuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMGdQU0IxYm1sMGN6dGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6SmZjMlZ4SnlraExuUmhaM05iUkVjdVZFRkhVeTVWVGtsVVUxMGdQU0IxYm1sMGN6dGNiaUFnYkdsdVpYTkVaaTVqYjJ3b0p6RmZjMlZ4SnlraExuTmxiVlI1Y0dVZ1BTQnpaVzFVZVhCbE8xeHVJQ0JzYVc1bGMwUm1MbU52YkNnbk1sOXpaWEVuS1NFdWMyVnRWSGx3WlNBOUlITmxiVlI1Y0dVN1hHNGdJSEpsZEhWeWJpQjdiR2x1WlhNc0lHeHBibVZ6UkdaOU8xeHVmVnh1WEc1bGVIQnZjblFnWVhONWJtTWdablZ1WTNScGIyNGdaMlYwVTJsdGFXeGhjbWwwYVdWelRXRnlhWGdvWEc0Z0lDQWdaR2x0T2lCdWRXMWlaWElzSUZ4dUlDQWdJSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ0lDQmtabE5sY1RvZ1JFY3VSR0YwWVVaeVlXMWxMQ0JjYmlBZ0lDQnphVzFCY25JNklFUkhMa052YkhWdGJsdGRMRnh1SUNBZ0lITnBiVVoxYm1NNklDaGpiMnc2SUVSSExrTnZiSFZ0Yml3Z2JXOXNPaUJ6ZEhKcGJtY3BJRDArSUZCeWIyMXBjMlU4UkVjdVEyOXNkVzF1SUh3Z2JuVnNiRDVjYmlBZ0lDQXBYRzRnSURvZ1VISnZiV2x6WlR4RVJ5NURiMngxYlc1YlhUNGdlMXh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBaFBTQmthVzBnTFNBeE95QXJLMmtwSUh0Y2JpQWdJQ0JqYjI1emRDQnRiMndnUFNCelpYRkRiMnd1WjJWMEtHa3BPMXh1SUNBZ0lHUm1VMlZ4TG5KdmQzTXVjbVZ0YjNabFFYUW9NQ3dnTVN3Z1ptRnNjMlVwTzF4dUlDQWdJSE5wYlVGeWNsdHBYU0E5SUNoaGQyRnBkQ0J6YVcxR2RXNWpLR1JtVTJWeExtTnZiQ2duYzJWeEp5a2hMQ0J0YjJ3cEtTRTdYRzRnSUgxY2JpQWdjbVYwZFhKdUlITnBiVUZ5Y2p0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEZOcGJXbHNZWEpwZEdsbGMwMWhjbWw0Um5KdmJVUnBjM1JoYm1ObGN5aGthVzA2SUc1MWJXSmxjaXdnWkdsemRHRnVZMlZ6T2lCTllYUnlhWGdzSUhOcGJVRnljam9nUkVjdVEyOXNkVzF1VzEwcFhHNGdJRG9nUkVjdVEyOXNkVzF1VzEwZ2UxeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdScGJTQXRJREU3SUNzcmFTa2dlMXh1SUNBZ0lHTnZibk4wSUhOcGJXbHNZWEpwZEhsQmNuSWdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxSUQwZ2FTQXJJREU3SUdvZ1BDQmthVzA3SUNzcmFpbGNiaUFnSUNBZ0lITnBiV2xzWVhKcGRIbEJjbkl1Y0hWemFDaG5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObGMxdHBYVnRxWFNrcE8xeHVJQ0FnSUhOcGJVRnljbHRwWFNBOUlFUkhMa052YkhWdGJpNW1jbTl0Um14dllYUXpNa0Z5Y21GNUtDZHphVzFwYkdGeWFYUjVKeXdnUm14dllYUXpNa0Z5Y21GNUxtWnliMjBvYzJsdGFXeGhjbWwwZVVGeWNpa3BPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnphVzFCY25JN1hHNTlJbDE5IiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2luYWxpdHlSZWR1Y2luZ1dvcmtlcihkYXRhTWV0cmljLCBtZXRob2QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihuZXcgVVJMKCcuL2RpbWVuc2lvbmFsaXR5LXJlZHVjZXInLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIGNvbHVtbkRhdGE6IGRhdGFNZXRyaWMuZGF0YSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICAgICAgbWVhc3VyZTogZGF0YU1ldHJpYy5tZXRyaWMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgZGlzdGFuY2UsIGVtYmVkZGluZyB9IH0pID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoeyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH0pO1xuICAgICAgICB9O1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdOcGJtY3RkMjl5YTJWeUxXTnlaV0YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUprYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJsdVp5MTNiM0pyWlhJdFkzSmxZWFJ2Y2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRnBRa0VzVFVGQlRTeFZRVUZWTEdsRFFVRnBReXhEUVVGRExGVkJRWE5DTEVWQlFVVXNUVUZCWXl4RlFVTnNSaXhQUVVGaE8wbEJSV3BDTEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1ZVRkJVeXhQUVVGUE8xRkJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETERCQ1FVRXdRaXhGUVVGRkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOb1JpeE5RVUZOTEVOQlFVTXNWMEZCVnl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNTVUZCU1R0WlFVTXpRaXhOUVVGTkxFVkJRVVVzVFVGQlRUdFpRVU5rTEU5QlFVOHNSVUZCUlN4VlFVRlZMRU5CUVVNc1RVRkJUVHRaUVVNeFFpeFBRVUZQTEVWQlFVVXNUMEZCVHp0VFFVTnFRaXhEUVVGRExFTkJRVU03VVVGRFNDeE5RVUZOTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0JFTEU5QlFVOHNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hSUVVGUkxFVkJRVVVzVTBGQlV5eEZRVUZGTEZOQlFWTXNSVUZCUXl4RFFVRkRMRU5CUVVNN1VVRkRja1FzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRUQ3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dUV0YwY21sNElIMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRXWVd4cFpGUjVjR1Z6ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCQklIZHZjbXRsY2lCMGJ5QndaWEptYjNKdElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2Ymk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFaaGJHbGtWSGx3WlhOOUlHUmhkR0ZOWlhSeWFXTWdWR2hsSUdSaGRHRWdkRzhnY0hKdlkyVnpjeTVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdFpYUm9iMlFnUVNCdFpYUm9iMlFnYjJZZ1pHbHRaVzV6YVc5dVlXeHBkSGtnY21Wa2RXTjBhVzl1TGx4dUlDb2dRSEJoY21GdElHOXdkR2x2Ym5NZ0xTQnJaWGt0ZG1Gc2RXVWdjR0ZwY25OY2JpQXFJRUJ3WVhKaGJTQnlaWFIxY201RWFYTjBZVzVqWlUxaGRISnBlRnh1SUNvZ1FISmxkSFZ5YmlCN1VISnZiV2x6WlR4SlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRK2ZTQlNaWE4xYkhScGJtY2daVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGd1WEc0Z0tpOWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVkpsWkhWalpVUnBiV1Z1YzJsdmJtRnNhWFI1VW1WemRXeDBJSHRjYmlBZ1pHbHpkR0Z1WTJVNklFMWhkSEpwZUR0Y2JpQWdaVzFpWldSa2FXNW5PaUJOWVhSeWFYZzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZFYVcxbGJuTnBibUZzYVhSNVVtVmtkV05wYm1kWGIzSnJaWElvWkdGMFlVMWxkSEpwWXpvZ1ZtRnNhV1JVZVhCbGN5d2diV1YwYUc5a09pQnpkSEpwYm1jc1hHNGdJQ0FnSUNCdmNIUnBiMjV6UHpvZ1lXNTVLVG9nVUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErSUh0Y2JseHVJQ0J5WlhSMWNtNGdibVYzSUZCeWIyMXBjMlVvWm5WdVkzUnBiMjRvY21WemIyeDJaU2tnZTF4dUlDQWdJR052Ym5OMElIZHZjbXRsY2lBOUlHNWxkeUJYYjNKclpYSW9ibVYzSUZWU1RDZ25MaTlrYVcxbGJuTnBiMjVoYkdsMGVTMXlaV1IxWTJWeUp5d2dhVzF3YjNKMExtMWxkR0V1ZFhKc0tTazdYRzRnSUNBZ2QyOXlhMlZ5TG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNBZ0lHTnZiSFZ0YmtSaGRHRTZJR1JoZEdGTlpYUnlhV011WkdGMFlTeGNiaUFnSUNBZ0lHMWxkR2h2WkRvZ2JXVjBhRzlrTEZ4dUlDQWdJQ0FnYldWaGMzVnlaVG9nWkdGMFlVMWxkSEpwWXk1dFpYUnlhV01zWEc0Z0lDQWdJQ0J2Y0hScGIyNXpPaUJ2Y0hScGIyNXpMRnh1SUNBZ0lIMHBPMXh1SUNBZ0lIZHZjbXRsY2k1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGthWE4wWVc1alpTd2daVzFpWldSa2FXNW5mWDBwSUQwK0lIdGNiaUFnSUNBZ2NtVnpiMngyWlNoN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzBwTzF4dUlDQWdJSDA3WEc0Z0lIMHBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG5leHBvcnQgY29uc3Qgc2ltaWxhcml0eU1ldHJpYyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b1NpbWlsYXJpdHksXG4gICAgJ0RpY2UnOiBkaWNlU2ltaWxhcml0eSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNTaW1pbGFyaXR5LFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5LFxuICAgICdDb3NpbmUnOiBjb3NpbmVTaW1pbGFyaXR5LFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraVNpbWlsYXJpdHksXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5LFxuICAgICdSb2dvdC1Hb2xkYmVyZyc6IHJvZ290R29sZGJlcmdTaW1pbGFyaXR5LFxuICAgICdSdXNzZWwnOiBydXNzZWxTaW1pbGFyaXR5LFxuICAgICdTb2thbCc6IHNva2FsU2ltaWxhcml0eSxcbiAgICAnSGFtbWluZyc6IGhhbW1pbmdTaW1pbGFyaXR5LFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5TaW1pbGFyaXR5LFxufTtcbmV4cG9ydCBjb25zdCBkaXN0YW5jZU1ldHJpY3MgPSB7XG4gICAgJ1Rhbmltb3RvJzogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICAnRGljZSc6IGRpY2VEaXN0YW5jZSxcbiAgICAnQXN5bW1ldHJpYyc6IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICAnQnJhdW4tQmxhbnF1ZXQnOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgJ0Nvc2luZSc6IGNvc2luZURpc3RhbmNlLFxuICAgICdLdWxjenluc2tpJzoga3VsY3p5bnNraURpc3RhbmNlLFxuICAgICdNYy1Db25uYXVnaGV5JzogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgICdSdXNzZWwnOiBydXNzZWxEaXN0YW5jZSxcbiAgICAnU29rYWwnOiBzb2thbERpc3RhbmNlLFxuICAgICdIYW1taW5nJzogaGFtbWluZ0Rpc3RhbmNlLFxuICAgICdFdWNsaWRlYW4nOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQ0hFTV9TSU1JTEFSSVRZX01FVFJJQ1MgPSBbJ1Rhbmltb3RvJywgJ0RpY2UnLCAnQ29zaW5lJywgJ0hhbW1pbmcnLCAnRXVjbGlkZWFuJ107XG5leHBvcnQgZnVuY3Rpb24gdGFuaW1vdG9TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKHRvdGFsIC0gY29tbW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eSh0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gMiAqIGNvbW1vbiAvIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY2VEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoZGljZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBNYXRoLnNxcnQodG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvc2luZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShjb3NpbmVTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5TaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXVjbGlkZWFuRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoeC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCkgLSAyICogeC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoaGFtbWluZ0Rpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYW1taW5nRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gKDIgKiB0b3RhbCAtIDMgKiBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNva2FsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHNva2FsU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsKSAvICgyICogdG90YWxQcm9kKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGt1bGN6eW5za2lTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCB0b3RhbCA9IHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpO1xuICAgIGNvbnN0IHRvdGFsUHJvZCA9IHgudHJ1ZUNvdW50KCkgKiB5LnRydWVDb3VudCgpO1xuICAgIGlmICh0b3RhbFByb2QgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIChjb21tb24gKiB0b3RhbCAtIHRvdGFsUHJvZCkgLyB0b3RhbFByb2Q7XG59XG5leHBvcnQgZnVuY3Rpb24gbWNDb25uYXVnaGV5RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih4LnRydWVDb3VudCgpLCB5LnRydWVDb3VudCgpKTtcbiAgICBpZiAobWluID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyBtaW47XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShhc3ltbWV0cmljU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtYXggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1heDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0RGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGJyYXVuQmxhbnF1ZXRTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBydXNzZWxTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBpZiAoeC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIHgubGVuZ3RoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbERpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShydXNzZWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIGNvbnN0IHRvdGFsID0geC5jb3VudEJpdHModHJ1ZSkgKyB5LmNvdW50Qml0cyh0cnVlKTtcbiAgICBjb25zdCBsZW4gPSB4Lmxlbmd0aDtcbiAgICBjb25zdCBkaWZmID0gbGVuIC0gdG90YWwgKyBjb21tb247XG4gICAgaWYgKChjb21tb24gPT0gbGVuKSB8fCAoZGlmZiA9PSBsZW4pKVxuICAgICAgICByZXR1cm4gMS4wO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGNvbW1vbiAvIHRvdGFsICsgZGlmZiAvICgyICogbGVuIC0gdG90YWwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkocm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2UpIHtcbiAgICByZXR1cm4gMSAvICgxICsgZGlzdGFuY2UpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc2ltaWxhcml0eSkge1xuICAgIHJldHVybiAxIC8gc2ltaWxhcml0eSAtIDE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJsdGFXeGhjbWwwZVMxdFpYUnlhV056TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGQlF5eFRRVUZUTEVWQlFVTXNUVUZCVFN4VlFVRlZMRU5CUVVNN1FVRkZia01zVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVEpFTzBsQlEzUkdMRlZCUVZVc1JVRkJSU3hyUWtGQmEwSTdTVUZET1VJc1RVRkJUU3hGUVVGRkxHTkJRV003U1VGRGRFSXNXVUZCV1N4RlFVRkZMRzlDUVVGdlFqdEpRVU5zUXl4blFrRkJaMElzUlVGQlJTeDFRa0ZCZFVJN1NVRkRla01zVVVGQlVTeEZRVUZGTEdkQ1FVRm5RanRKUVVNeFFpeFpRVUZaTEVWQlFVVXNiMEpCUVc5Q08wbEJRMnhETEdWQlFXVXNSVUZCUlN4elFrRkJjMEk3U1VGRGRrTXNaMEpCUVdkQ0xFVkJRVVVzZFVKQlFYVkNPMGxCUTNwRExGRkJRVkVzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRNVUlzVDBGQlR5eEZRVUZGTEdWQlFXVTdTVUZEZUVJc1UwRkJVeXhGUVVGRkxHbENRVUZwUWp0SlFVTTFRaXhYUVVGWExFVkJRVVVzYlVKQlFXMUNPME5CUTJwRExFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN4bFFVRmxMRWRCUVRKRU8wbEJRM0pHTEZWQlFWVXNSVUZCUlN4blFrRkJaMEk3U1VGRE5VSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanRKUVVOb1F5eG5Ra0ZCWjBJc1JVRkJSU3h4UWtGQmNVSTdTVUZEZGtNc1VVRkJVU3hGUVVGRkxHTkJRV003U1VGRGVFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4bFFVRmxMRVZCUVVVc2IwSkJRVzlDTzBsQlEzSkRMR2RDUVVGblFpeEZRVUZGTEhGQ1FVRnhRanRKUVVOMlF5eFJRVUZSTEVWQlFVVXNZMEZCWXp0SlFVTjRRaXhQUVVGUExFVkJRVVVzWVVGQllUdEpRVU4wUWl4VFFVRlRMRVZCUVVVc1pVRkJaVHRKUVVNeFFpeFhRVUZYTEVWQlFVVXNhVUpCUVdsQ08wTkJReTlDTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3gxUWtGQmRVSXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRU5CUVVNc1EwRkJRenRCUVVVNVJpeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU0xUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6TkRMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNM1JDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEVsQlFVa3NTMEZCU3l4SlFVRkpMRU5CUVVNN1VVRkRXaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dEJRVU0xUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnVSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUTI1RExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNZMEZCWXl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM0pFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZETTBRc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHRRa0ZCYlVJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU14UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SFFVRkRMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUml4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRM2hFTEU5QlFVOHNlVUpCUVhsQ0xFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRekZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1pVRkJaU3hEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzUkVMRTlCUVU4c1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFZEJRVU1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOMFJDeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMGxCUXpWRExFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdGQlFXRXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOd1JDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMRzlDUVVGdlFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYTBKQlFXdENMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRGVrUXNUMEZCVHl4NVFrRkJlVUlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhOQ1FVRnpRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6ZEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRE5VTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRKUVVOb1JDeEpRVUZKTEZOQlFWTXNTVUZCU1N4RFFVRkRPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hIUVVGSExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRVFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dlFrRkJiMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXpSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnBGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2IwSkJRVzlDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRNMFFzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03U1VGRGJrUXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOV0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU16UXl4UFFVRlBMRTFCUVUwc1IwRkJSeXhIUVVGSExFTkJRVU03UVVGRGRFSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3hyUWtGQmEwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVONlJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF5OUVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzZFVKQlFYVkNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE9VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHhRa0ZCY1VJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU0xUkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4RkxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZGtRc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTTdVVUZEWml4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRNME1zVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU55UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpORUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRjRVFzVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU5zUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJRenRSUVVGRkxFOUJRVThzUjBGQlJ5eERRVUZET3p0UlFVTTFReXhQUVVGUExFMUJRVTBzUjBGQlJ5eExRVUZMTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTjRSQ3hEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEhGQ1FVRnhRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlF6VkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRVVzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4NVFrRkJlVUlzUTBGQlF5eFJRVUZuUWp0SlFVTjRSQ3hQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZGTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNM1FpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSGxDUVVGNVFpeERRVUZETEZWQlFXdENPMGxCUXpGRUxFOUJRVThzUTBGQlF5eEhRVUZITEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkROVUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eE5RVUZqTEVWQlFVVXNRMEZCVXl4RlFVRkZMRWxCUVhkRE8wbEJRMnhITEZOQlFWTXNTMEZCU3l4RFFVRkRMRTFCUVdkRExFVkJRVVVzVDBGQk9FSTdVVUZETjBVc1NVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzQkNMRWxCUVVrc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYwUWl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlJUdFpRVU0xUWl4TlFVRk5MR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hWUVVGVkxFbEJRVWtzU1VGQlNTeEpRVUZKTEdOQlFXTXNSMEZCUnl4VlFVRlZMRVZCUVVVN1owSkJRM0pFTEZGQlFWRXNSMEZCUnl4UFFVRlBMRU5CUVVNN1owSkJRMjVDTEZWQlFWVXNSMEZCUnl4alFVRmpMRU5CUVVNN1lVRkROMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUlRkQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRja0k3U1VGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRk8xRkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkRaaXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUU0UWl4RlFVTXZReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJVeXhIUVVGSExFVkJRVVVzUzBGQlN6dFpRVU40UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZEVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlExQXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkRVQ3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJwQ0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRlRUk3UzBGRFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnUW1sMFFYSnlZWGtnWm5KdmJTQW5MaTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFKYm5SOUlHWnliMjBnSnk0dmNtRnVaRzl0Snp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOcGJXbHNZWEpwZEhsTlpYUnlhV002SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2tnUFQ0Z2JuVnRZbVZ5ZlNBOUlIdGNiaUFnSjFSaGJtbHRiM1J2SnpvZ2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUkdsalpTYzZJR1JwWTJWVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUVhONWJXMWxkSEpwWXljNklHRnplVzF0WlhSeWFXTlRhVzFwYkdGeWFYUjVMRnh1SUNBblFuSmhkVzR0UW14aGJuRjFaWFFuT2lCaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RMZFd4amVubHVjMnRwSnpvZ2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa3NYRzRnSUNkTll5MURiMjV1WVhWbmFHVjVKem9nYldORGIyNXVZWFZuYUdWNVUybHRhV3hoY21sMGVTeGNiaUFnSjFKdloyOTBMVWR2YkdSaVpYSm5Kem9nY205bmIzUkhiMnhrWW1WeVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkU2RYTnpaV3duT2lCeWRYTnpaV3hUYVcxcGJHRnlhWFI1TEZ4dUlDQW5VMjlyWVd3bk9pQnpiMnRoYkZOcGJXbHNZWEpwZEhrc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMU5wYldsc1lYSnBkSGtzWEc0Z0lDZEZkV05zYVdSbFlXNG5PaUJsZFdOc2FXUmxZVzVUYVcxcGJHRnlhWFI1TEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElHUnBjM1JoYm1ObFRXVjBjbWxqY3pvZ2UxdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhKOUlEMGdlMXh1SUNBblZHRnVhVzF2ZEc4bk9pQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVJQ0FuUkdsalpTYzZJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdKMEZ6ZVcxdFpYUnlhV01uT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJQ2RDY21GMWJpMUNiR0Z1Y1hWbGRDYzZJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdKME52YzJsdVpTYzZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0FuUzNWc1kzcDVibk5yYVNjNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnSjAxakxVTnZibTVoZFdkb1pYa25PaUJ0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQW5VblZ6YzJWc0p6b2djblZ6YzJWc1JHbHpkR0Z1WTJVc1hHNGdJQ2RUYjJ0aGJDYzZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJQ2RJWVcxdGFXNW5Kem9nYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNBblJYVmpiR2xrWldGdUp6b2daWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnUTBoRlRWOVRTVTFKVEVGU1NWUlpYMDFGVkZKSlExTWdQU0JiSjFSaGJtbHRiM1J2Snl3Z0owUnBZMlVuTENBblEyOXphVzVsSnl3Z0owaGhiVzFwYm1jbkxDQW5SWFZqYkdsa1pXRnVKMTA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMFlXNXBiVzkwYjFOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnYVdZZ0tIUnZkR0ZzSUQwOUlEQXBYRzRnSUNBZ2NtVjBkWEp1SURFdU1EdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0hSdmRHRnNJQzBnWTI5dGJXOXVLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIUmhibWx0YjNSdlJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2RHRnVhVzF2ZEc5VGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FySUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkNBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SURJZ0tpQmpiMjF0YjI0Z0x5QjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1JwWTJWRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoa2FXTmxVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRTFoZEdndWMzRnlkQ2gwYjNSaGJDazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIzTnBibVZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGdzSUhrcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdWMVkyeHBaR1ZoYmxOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRk5wYldsc1lYSnBkSGxHY205dFJHbHpkR0Z1WTJVb1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VDd2dlU2twTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2g0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1NBdElESXFlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHaGhiVzFwYm1kVGFXMXBiR0Z5YVhSNUtIZzZJRUpwZEVGeWNtRjVMQ0I1T2lCQ2FYUkJjbkpoZVNrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHaGhiVzFwYm1kRWFYTjBZVzVqWlNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm9ZVzF0YVc1blJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlIZ3VkSEoxWlVOdmRXNTBLQ2tnS3lCNUxuUnlkV1ZEYjNWdWRDZ3BJQzBnTWlwNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6YjJ0aGJGTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnWTI5dGJXOXVJRDBnZUM1aGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hrc0lIUnlkV1VwTzF4dUlDQnlaWFIxY200Z1kyOXRiVzl1SUM4Z0tESWdLaUIwYjNSaGJDQXRJRE1nS2lCamIyMXRiMjRwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjMjlyWVd4RWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoemIydGhiRk5wYldsc1lYSnBkSGtvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2EzVnNZM3A1Ym5OcmFWTnBiV2xzWVhKcGRIa29lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnWTI5dWMzUWdkRzkwWVd3Z1BTQjRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LVHRjYmlBZ1kyOXVjM1FnZEc5MFlXeFFjbTlrSUQwZ2VDNTBjblZsUTI5MWJuUW9LU0FxSUhrdWRISjFaVU52ZFc1MEtDazdYRzRnSUdsbUlDaDBiM1JoYkZCeWIyUWdQVDBnTUNsY2JpQWdJQ0J5WlhSMWNtNGdNQzR3TzF4dUlDQmpiMjV6ZENCamIyMXRiMjRnUFNCNExtRnVaRmRwZEdoRGIzVnVkRUpwZEhNb2VTd2dkSEoxWlNrN1hHNGdJSEpsZEhWeWJpQW9ZMjl0Ylc5dUlDb2dkRzkwWVd3cElDOGdLRElnS2lCMGIzUmhiRkJ5YjJRcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVVScGMzUmhibU5sS0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0d0MWJHTjZlVzV6YTJsVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzFqUTI5dWJtRjFaMmhsZVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dnTFNCMGIzUmhiRkJ5YjJRcElDOGdkRzkwWVd4UWNtOWtPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29iV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM2x0YldWMGNtbGpVMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0J0YVc0Z1BTQk5ZWFJvTG0xcGJpaDRMblJ5ZFdWRGIzVnVkQ2dwTENCNUxuUnlkV1ZEYjNWdWRDZ3BLVHRjYmlBZ2FXWWdLRzFwYmlBOVBTQXdLVnh1SUNBZ0lISmxkSFZ5YmlBd0xqQTdYRzRnSUdOdmJuTjBJR052YlcxdmJpQTlJSGd1WVc1a1YybDBhRU52ZFc1MFFtbDBjeWg1TENCMGNuVmxLVHRjYmlBZ2NtVjBkWEp1SUdOdmJXMXZiaUF2SUcxcGJqdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRZWGdnUFNCTllYUm9MbTFoZUNoNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMWhlQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFoZUR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoaWNtRjFia0pzWVc1eGRXVjBVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWRYTnpaV3hUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2g0TG14bGJtZDBhQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJSGd1YkdWdVozUm9PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NuVnpjMlZzUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvY25WemMyVnNVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1amIzVnVkRUpwZEhNb2RISjFaU2tnS3lCNUxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdZMjl1YzNRZ2JHVnVJRDBnZUM1c1pXNW5kR2c3WEc0Z0lHTnZibk4wSUdScFptWWdQU0JzWlc0Z0xTQjBiM1JoYkNBcklHTnZiVzF2Ymp0Y2JpQWdhV1lnS0NoamIyMXRiMjRnUFQwZ2JHVnVLU0I4ZkNBb1pHbG1aaUE5UFNCc1pXNHBLU0J5WlhSMWNtNGdNUzR3TzF4dUlDQmxiSE5sSUhKbGRIVnliaUJqYjIxdGIyNGdMeUIwYjNSaGJDQXJJR1JwWm1ZZ0x5QW9NaUFxSUd4bGJpQXRJSFJ2ZEdGc0tUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaHliMmR2ZEVkdmJHUmlaWEpuVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJUYVcxcGJHRnlhWFI1Um5KdmJVUnBjM1JoYm1ObEtHUnBjM1JoYm1ObE9pQnVkVzFpWlhJcElIdGNiaUFnY21WMGRYSnVJREVnTHlBb0lERWdLeUJrYVhOMFlXNWpaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm5aWFJFYVhOMFlXNWpaVVp5YjIxVGFXMXBiR0Z5YVhSNUtITnBiV2xzWVhKcGRIazZJRzUxYldKbGNpa2dlMXh1SUNCeVpYUjFjbTRnTVNBdklITnBiV2xzWVhKcGRIa2dMU0F4TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJR1oxYm1OMGFXOXVJRzFoZUVKNUtIWmhiSFZsY3pvZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTENCdmNtUmxja0o1T2lBb2FUb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQnNaWFFnYldGNFZtRnNkV1VnUFNCdWRXeHNPMXh1SUNBZ0lHeGxkQ0J0WVhoUGNtUmxja0o1SUQwZ2JuVnNiRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWld4bGJXVnVkQ0J2WmlCMllXeDFaWE1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1ZzWlcxbGJuUlBjbVJsY2tKNUlEMGdiM0prWlhKQ2VTaGxiR1Z0Wlc1MEtUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhoUGNtUmxja0o1SUQwOUlHNTFiR3dnZkh3Z1pXeGxiV1Z1ZEU5eVpHVnlRbmtnUGlCdFlYaFBjbVJsY2tKNUtTQjdYRzRnSUNBZ0lDQWdJRzFoZUZaaGJIVmxJRDBnWld4bGJXVnVkRHRjYmlBZ0lDQWdJQ0FnYldGNFQzSmtaWEpDZVNBOUlHVnNaVzFsYm5SUGNtUmxja0o1TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2JXRjRWbUZzZFdVN1hHNGdJSDFjYmx4dUlDQmpiMjV6ZENCemRXSnpaWFFnUFNCYmNtRnVaRzl0U1c1MEtHeGxibWQwYUNBdElERXBYVHRjYmlBZ1kyOXVjM1FnWTI5dGNHeGxiV1Z1ZENBOUlHNWxkeUJUWlhRb0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHeGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdhV1lnS0NGemRXSnpaWFF1YVc1amJIVmtaWE1vYVNrcFhHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtRmtaQ2hwS1R0Y2JpQWdmVnh1WEc0Z0lIZG9hV3hsSUNoemRXSnpaWFF1YkdWdVozUm9JRHdnYmlrZ2UxeHVJQ0FnSUdOdmJuTjBJR2xrZUNBOUlHMWhlRUo1S0Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1MllXeDFaWE1vS1NCaGN5QkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c1hHNGdJQ0FnSUNBb2FTa2dQVDRnVFdGMGFDNXRhVzR1WVhCd2JIa29UV0YwYUN3Z2MzVmljMlYwTG0xaGNDaG1kVzVqZEdsdmJpaDJZV3dzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJrYVhOMEtHa3NJSFpoYkNrN1hHNGdJQ0FnSUNCOUtTa3BPMXh1SUNBZ0lHbG1JQ2hwWkhncElIdGNiaUFnSUNBZ0lITjFZbk5sZEM1d2RYTm9LR2xrZUNrN1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExtUmxiR1YwWlNocFpIZ3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dUlDQnlaWFIxY200Z2MzVmljMlYwTzF4dWZWeHVJbDE5IiwiLyoqXG4gKiBEZW5vdGVzIGEgdmVjdG9yIG9mIGZsb2F0aW5nIHBvaXQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JcbiAqIEBleHRlbmRzIHtGbG9hdDMyQXJyYXl9XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IgZXh0ZW5kcyBGbG9hdDMyQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGEgdHdvLWRpbWVuc2lvbmFsIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgTWF0cml4XG4gKiBAZXh0ZW5kcyB7QXJyYXk8VmVjdG9yPn1cbiAqL1xuZXhwb3J0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIENvb3JkaW5hdGVzXG4gKiBAZXh0ZW5kcyB7TWF0cml4fVxuICovXG5leHBvcnQgY2xhc3MgQ29vcmRpbmF0ZXMgZXh0ZW5kcyBNYXRyaXgge1xufVxuLyoqXG4gKiBEZW5vdGVzIGFuIGFycmF5IG9mIGFyYml0cmFyeS10eXBlZCB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBWZWN0b3JzXG4gKiBAZXh0ZW5kcyB7QXJyYXk8YW55Pn1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvcnMgZXh0ZW5kcyBBcnJheSB7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRmxCUVZrN1EwRkJSenRCUVVVelF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxFdEJRV0U3UTBGQlJ6dEJRVVUxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVjBGQldTeFRRVUZSTEUxQlFVMDdRMEZCUnp0QlFVVXhRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUMEZCVVN4VFFVRlJMRXRCUVZVN1EwRkJSeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhabFkzUnZjaUJ2WmlCbWJHOWhkR2x1WnlCd2IybDBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBWTJ4aGMzTWdWbVZqZEc5eVhHNGdLaUJBWlhoMFpXNWtjeUI3Um14dllYUXpNa0Z5Y21GNWZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdWbVZqZEc5eUlHVjRkR1Z1WkhNZ1JteHZZWFF6TWtGeWNtRjVJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUUxaGRISnBlRnh1SUNvZ1FHVjRkR1Z1WkhNZ2UwRnljbUY1UEZabFkzUnZjajU5WEc0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTllYUnlhWGdnWlhoMFpXNWtjeUJCY25KaGVUeFdaV04wYjNJK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJqWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFTnZiM0prYVc1aGRHVnpYRzRnS2lCQVpYaDBaVzVrY3lCN1RXRjBjbWw0ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyOXZjbVJwYm1GMFpYTWdaWGgwWlc1a2N5Qk5ZWFJ5YVhnZ2UzMWNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0Z1SUdGeWNtRjVJRzltSUdGeVltbDBjbUZ5ZVMxMGVYQmxaQ0IyWldOMGIzSnpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCamJHRnpjeUJXWldOMGIzSnpYRzRnS2lCQVpYaDBaVzVrY3lCN1FYSnlZWGs4WVc1NVBuMWNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRlpsWTNSdmNuTWdaWGgwWlc1a2N5QkJjbkpoZVR4aGJuaytJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElHUnBZM1JwYjI1aGNua2dZMjl1ZEdGcGJtbHVaeUJtZFc1amRHbHZiaUJ2Y0hScGIyNXpMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCMGVYQmxJRTl3ZEdsdmJuTmNiaUFxTDF4dVpYaHdiM0owSUhSNWNHVWdUM0IwYVc5dWN5QTlJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dZVzU1ZlR0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHTjFjM1J2YlNCa2FYTjBZVzVqWlNCdFpYUnlhV01nWW1WMGQyVmxiaUIwYUdVZ2RIZHZJR2RwZG1WdUlIWmxZM1J2Y25NdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSFI1Y0dVZ1JHbHpkR0Z1WTJWTlpYUnlhV05jYmlBcUlFQndZWEpoYlNCN1lXNTVmU0IyTVNCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdGhibmw5SUhZeUlGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JFYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlhObElIUjNieUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ2RIbHdaU0JFYVhOMFlXNWpaVTFsZEhKcFl5QTlJQ2gyTVRvZ1lXNTVMQ0IyTWpvZ1lXNTVLU0E5UGlBb2JuVnRZbVZ5S1R0Y2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRWdjMmx0Y0d4bElITjBjbWx1WnlCMGJ5QnpkSEpwYm1jZ1pHbGpkR2x2Ym1GeWVTNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBZEhsd1pTQlRkSEpwYm1kRWFXTjBhVzl1WVhKNVhHNGdLaTljYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjBScFkzUnBiMjVoY25rZ1BTQjdXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuZlR0Y2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4qXG4qIEBleHBvcnRcbiogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXZlcnNlPWZhbHNlXSBXaGV0aGVyIHRvIHJldHVybiByZXZlcnNlZCBvcmRlci5cbiogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRXRCUVVzc1EwRkJReXc0UTBGQk9FTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFbEJRVWtzU1VGQlNTeEhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnlRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZYTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEZUVNc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGVFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1ZVRkJhMElzUlVGQlJTeFZRVUZyUWl4RlFVRkZMRkZCUVdkQ0xFVkJRVVU3U1VGRGVrWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExGVkJRVlVzUlVGQlJTeFZRVUZWTEVOQlFVTXNRMEZCUXp0SlFVVjJSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEyNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMnBETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRja003U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3d3UWtGQk1FSXNRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVenRKUVVNM1JDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOc1F5eE5RVUZOTEZWQlFWVXNSMEZCUnl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGNFTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF5OUNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR3RDUVVGclFpeERRVUZETEVsQlFXRXNSVUZCUlN4UlFVRjNRanRKUVVONFJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRek5DTEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUld4RUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZETDBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hEUVVGRExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU14Uml4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVTnFRenRMUVVOR08wbEJRMFFzVDBGQlR5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1EwRkJRenRCUVVWRUxHdEdRVUZyUmp0QlFVTnNSaXhOUVVGTkxGVkJRVlVzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1dVRkJXU3hIUVVGSExFdEJRVXM3U1VGRGRrVXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhIUVVGSExFdEJRVXNzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eEpRVUZKTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVWMFF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTTNRaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVWNFFpeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVUU3T3pzN096czdSVUZQUlR0QlFVTklMRTFCUVUwc1ZVRkJWU3hQUVVGUExFTkJRVU1zVFVGQllTeEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNjVUpCUVhGQ08wbEJRMnhGTEUxQlFVMHNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXh0UWtGQmJVSTdTVUZEZGtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhSU3hQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNVMEZCVXl4RFFVRkRMRWxCUVZrN1NVRkRjRU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJJc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJWb3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmJFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVVTNReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlJXNURMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFJRVU5zUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzBsQlJXNURMRTlCUVU4c1NVRkJTU3hEUVVGRE8wRkJRMlFzUTBGQlF6dEJRVVZFT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGUkxFVkJRVVVzUTBGQlVUdEpRVU01UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRRaXhQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzSkZMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2UwMWhkSEpwZUN3Z1ZtVmpkRzl5TENCRGIyOXlaR2x1WVhSbGN5d2dWbVZqZEc5eWN5d2dSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSnk0dmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxR2JHOWhkQ3dnY21GdVpHOXRTVzUwZlNCbWNtOXRJQ2N1TDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1FYTnpaWEowY3lCaElHTnZibVJwZEdsdmJpQmllU0IwYUhKdmQybHVaeUJoYmlCRmNuSnZjaTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTJKdmIyeGxZVzU5SUZ0amIyNWthWFJwYjI0OVptRnNjMlZkSUVOdmJtUnBkR2x2YmlCMGJ5QmhjM05sY25RdVhHNGdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdXMjFsYzNOaFoyVTlKMEZ6YzJWeWRHbHZiaUJsY25KdmNpNG5YU0JOWlhOellXZGxJSFJ2SUc5MWRIQjFkQzVjYmlBcUlFQjBhSEp2ZDNNZ2UwVnljbTl5ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWE56WlhKMEtHTnZibVJwZEdsdmJqb2dZbTl2YkdWaGJpQTlJR1poYkhObExDQnRaWE56WVdkbE9pQnpkSEpwYm1jZ1BTQW5RWE56WlhKMGFXOXVJR1Z5Y205eUxpY3BJSHRjYmlBZ2FXWWdLQ0ZqYjI1a2FYUnBiMjRwWEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHMWxjM05oWjJVcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nYm1WM0lIUjNieTFrYVcxbGJuTnBiMjVoYkNCaGNuSmhlU0JoYm1RZ1ptbHNiSE1nYVhRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdZMjl2Y21ScGJtRjBaWE1nS0c1MWJXSmxjaUJ2WmlCeWIzZHpLUzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCa2FXMWxibk5wYjI0eUlGUm9aU0J6WldOdmJtUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUdOdmJIVnRibk1wTGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdG1hV3hzUFRCZElFRWdkbUZzZFdVZ2RHOGdabWxzYkNCMGFHVWdZMjl2Y21ScGJtRjBaWE1nZDJsMGFDNWNiaUFxSUVCeVpYUjFjbTRnZTBOdmIzSmthVzVoZEdWemZTQkJJSFIzYnkxa2FXMWxibk5wYjI1aGJDQm1hV3hzWldRZ2QybDBhQ0IwYUdVZ2RtRnNkV1VnWjJsMlpXNHVYRzRnS2lCQWRHOWtieUJOYVdkb2RDQmlaU0J6Ykc5M0lITnBibU5sSUhWelpXUWdRWEp5WVhrdWJXRndMaUJRY205aVlXSnNlU0J1WldWa2N5QndaWEptYjNKdFlXNWpaU0J5WlhacGMybHZiaTVjYmlBcUwxeHVablZ1WTNScGIyNGdhVzVwZEVOdmIzSmthVzVoZEdWektHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0JtYVd4c09pQnVkVzFpWlhJZ1BTQXdLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLR1JwYldWdWMybHZiakVwTG1acGJHd29abWxzYkNrdWJXRndLQ2dwSUQwK0lDaHVaWGNnVm1WamRHOXlLR1JwYldWdWMybHZiaklwTG1acGJHd29abWxzYkNrcEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCVWNtRnVjM0J2YzJVZ2JXRjBjbWw0TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1RXRjBjbWw0ZlNCdFlYUnlhWGdnVkdobElHMWhkSEpwZUNCMGJ5QmlaU0IwY21GdWMzQnZjMlZrTGx4dUlDb2dRSEpsZEhWeWJpQjdUV0YwY21sNGZTQlVjbUZ1YzNCdmMyVmtJRzFoZEhKcGVDNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RISmhibk53YjNObFRXRjBjbWw0S0cxaGRISnBlRG9nVFdGMGNtbDRLVG9nVFdGMGNtbDRJSHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNodFlYUnlhWGhiTUYwdWJHVnVaM1JvS1M1bWFXeHNLREFwWEc0Z0lDQWdMbTFoY0Nnb1h5d2dhU2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9iV0YwY21sNExteGxibWQwYUNrdVptbHNiQ2d3S1M1dFlYQW9LRjhzSUdvcElEMCtJQ2h0WVhSeWFYaGJhbDFiYVYwcEtTa3BPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFRmtaSE1nZEhkdklIWmxZM1J2Y25NZ2QybDBhQ0IwYUdVZ2MyVmpiMjVrSUc5dVpTQjBieUJpWlNCdGRXeDBhWEJzYVdWa0lHSjVJSFJvWlNCbmFYWmxiaUJ5WVhScGJ5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0J4SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUhSdklHRmtaQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmJYVnNkR2x3YkdsbGNqMHhYU0JCSUcxMWJIUnBjR3hwWlhJZ2RHOGdZbVVnZFhObFpDQmlaV1p2Y21VZ2RHaGxJSE5sWTI5dVpDQjJaV04wYjNJZ2FYTWdZV1JrWldRdVhHNGdLaUJBY21WMGRYSnVJSHRXWldOMGIzSjlJRTVsZHlCMlpXTjBiM0lnWTI5dWRHRnBibVZrSUhSb1pTQnlaWE4xYkhRZ2IyWWdiM0JsY21GMGFXOXVJSEFyYlhWc2RHbHdiR2xsY2lweExseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZG1WamRHOXlRV1JrS0hBNklGWmxZM1J2Y2l3Z2NUb2dWbVZqZEc5eUxDQnRkV3gwYVhCc2FXVnlPaUJ1ZFcxaVpYSWdQU0F4S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2NDNXNaVzVuZEdnN1hHNWNiaUFnWVhOelpYSjBLRzVKZEdWdGN5QTlQU0J4TG14bGJtZDBhQ3dnSjFabFkzUnZjaUJzWlc1bmRHaHpJR1J2SUc1dmRDQnRZWFJqYUM0bktUdGNibHh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSEF1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCd1cybGRJQ3NnYlhWc2RHbHdiR2xsY2lBcUlIRmJhVjA3WEc1Y2JpQWdjbVYwZFhKdUlIUnZkR0ZzTzF4dWZWeHVYRzR2S2lwY2JpQXFJRk4xYlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnWW1VZ2MzVnRiV1ZrTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQlVhR1VnZG1WamRHOXlKM01nYVhSbGJYTWdjM1Z0TGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwZEdWdGMxTjFiU2gyT2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnNaWFFnZEc5MFlXd2dQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCMGIzUmhiQ0FyUFNCMlcybGRPMXh1WEc0Z0lISmxkSFZ5YmlCMGIzUmhiRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlRkWEZoY21WeklIUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5NWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2RpQlVhR1VnZG1WamRHOXlJSFJ2SUhOeGRXRnlaUzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1FTQnVaWGNnZG1WamRHOXlJR052Ym5SaGFXNXBibWNnZEdobElHOXlhV2RwYm1Gc0ozTWdhWFJsYlhNZ2MzRjFZWEpsWkM1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnZG1WamRHOXlVM0YxWVhKbEtIWTZJRlpsWTNSdmNpazZJRlpsWTNSdmNpQjdYRzRnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSFl1YkdWdVozUm9PMXh1SUNCamIyNXpkQ0IwYjNSaGJDQTlJRzVsZHlCV1pXTjBiM0lvYmtsMFpXMXpLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnZEc5MFlXeGJhVjBnUFNCMlcybGRJQ29nZGx0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMlpXTjBiM0pNWlc1bmRHZ29kam9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ2JHVjBJSE54Y2xOMWJUb2diblZ0WW1WeUlEMGdNRHRjYmlBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdjM0Z5VTNWdElDczlJSFpiYVYwZ0tpQjJXMmxkTzF4dUlDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITnhjbE4xYlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkViM1JRY205a2RXTjBLSFl4T2lCV1pXTjBiM0lzSUhZeU9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JwWmlBb2RqRXViR1Z1WjNSb0lDRTlJSFl5TG14bGJtZDBhQ2xjYmlBZ0lDQjBhSEp2ZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUlDOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCdmNtUmxjaUJ2WmlCMllXeDFaWE1nWVhNZ2FXWWdkR2hsZVNCaGNtVWdjMjl5ZEdWa0xseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlIWmhiSFZsY3lCSmJuQjFkQ0JoY25KaGVTNWNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzNKbGRtVnljMlU5Wm1Gc2MyVmRJRmRvWlhSb1pYSWdkRzhnY21WMGRYSnVJSEpsZG1WeWMyVmtJRzl5WkdWeUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlXMTE5SUZSb1pTQnZjbVJsY2lCamIyMXdkWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z5WjFOdmNuUW9kbUZzZFdWek9pQmhibmxiWFN3Z2NtVjJaWEp6WlNBOUlHWmhiSE5sS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JqYjI1emRDQnpiM0owWm00Z1BTQnlaWFpsY25ObElEOGdLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHSmJNRjBnTFNCaFd6QmRLU0E2SUNoaE9pQmhibmxiWFN3Z1lqb2dZVzU1VzEwcElEMCtJQ2hoV3pCZElDMGdZbHN3WFNrN1hHNGdJR052Ym5OMElHUmxZMjl5SUQwZ0tIWTZJR0Z1ZVN3Z2FUb2diblZ0WW1WeUtTQTlQaUJiZGl3Z2FWMDdJQzh2SUhObGRDQnBibVJsZUNCMGJ5QjJZV3gxWlZ4dUlDQmpiMjV6ZENCMWJtUmxZMjl5SUQwZ0tHRTZJR0Z1ZVZ0ZEtTQTlQaUJoV3pGZE95QXZMeUJzWldGMlpTQnZibXg1SUdsdVpHVjRYRzRnSUdOdmJuTjBJRjloY21kemIzSjBJRDBnS0dGeWNqb2dZVzU1VzEwcElEMCtJR0Z5Y2k1dFlYQW9aR1ZqYjNJcExuTnZjblFvYzI5eWRHWnVLUzV0WVhBb2RXNWtaV052Y2lrN1hHNGdJSEpsZEhWeWJpQmZZWEpuYzI5eWRDaDJZV3gxWlhNcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZKbGRIVnlibk1nZEdobElHbHVaR1Y0WlhNZ2IyWWdkR2hsSUcxdmMzUWdaR2wyWlhKelpTQnZZbXBsWTNSeklHRmpZMjl5WkdsdVp5QjBieUIwYUdVZ1pHbHpkQ0JtZFc1amRHbHZibHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUd4bGJtZDBhQ0IwYjNSaGJDQnVkVzFpWlhJZ2IyWWdiMkpxWldOMGMxeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzRnYm5WdFltVnlJRzltSUdScGRtVnljMlVnWld4bGJXVnVkSE1nZEc4Z1ptbHVaRnh1SUNvZ1FIQmhjbUZ0SUhzb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5ZlNCa2FYTjBJR0VnWm5WdVkzUnBiMjRnZDJocFkyZ2dZMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVYRzRnS2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGR2SUc5aWFtVmpkSE1nZFhOcGJtY2dkR2hsYVhJZ2FXNWtaWGhsYzF4dUlDb2dRSEpsZEhWeWJuTWdlMjUxYldKbGNsdGRmU0JVYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhOY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVScGRtVnljMlZUZFdKelpYUW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2daR2x6ZERvZ0tHa3hPaUJ1ZFcxaVpYSXNJR2t5T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lrNklHNTFiV0psY2x0ZElIdGNiaUFnWm5WdVkzUnBiMjRnYldGNFFua29kbUZzZFdWek9pQkpkR1Z5WVdKc1pVbDBaWEpoZEc5eVBHNTFiV0psY2o0c0lHOXlaR1Z5UW5rNklDaHBPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWtnZTF4dUlDQWdJR3hsZENCdFlYaFdZV3gxWlNBOUlHNTFiR3c3WEc0Z0lDQWdiR1YwSUcxaGVFOXlaR1Z5UW5rZ1BTQnVkV3hzTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbGJHVnRaVzUwSUc5bUlIWmhiSFZsY3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWld4bGJXVnVkRTl5WkdWeVFua2dQU0J2Y21SbGNrSjVLR1ZzWlcxbGJuUXBPMXh1SUNBZ0lDQWdhV1lnS0cxaGVFOXlaR1Z5UW5rZ1BUMGdiblZzYkNCOGZDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBK0lHMWhlRTl5WkdWeVFua3BJSHRjYmlBZ0lDQWdJQ0FnYldGNFZtRnNkV1VnUFNCbGJHVnRaVzUwTzF4dUlDQWdJQ0FnSUNCdFlYaFBjbVJsY2tKNUlEMGdaV3hsYldWdWRFOXlaR1Z5UW5rN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnRZWGhXWVd4MVpUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElITjFZbk5sZENBOUlGdHlZVzVrYjIxSmJuUW9iR1Z1WjNSb0lDMGdNU2xkTzF4dUlDQmpiMjV6ZENCamIyMXdiR1Z0Wlc1MElEMGdibVYzSUZObGRDZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0JwWmlBb0lYTjFZbk5sZEM1cGJtTnNkV1JsY3locEtTbGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVZV1JrS0drcE8xeHVJQ0I5WEc1Y2JpQWdkMmhwYkdVZ0tITjFZbk5sZEM1c1pXNW5kR2dnUENCdUtTQjdYRzRnSUNBZ1kyOXVjM1FnYVdSNElEMGdiV0Y0UW5rb1hHNGdJQ0FnSUNCamIyMXdiR1Z0Wlc1MExuWmhiSFZsY3lncElHRnpJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpeGNiaUFnSUNBZ0lDaHBLU0E5UGlCTllYUm9MbTFwYmk1aGNIQnNlU2hOWVhSb0xDQnpkV0p6WlhRdWJXRndLR1oxYm1OMGFXOXVLSFpoYkN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdScGMzUW9hU3dnZG1Gc0tUdGNiaUFnSUNBZ0lIMHBLU2s3WEc0Z0lDQWdhV1lnS0dsa2VDa2dlMXh1SUNBZ0lDQWdjM1ZpYzJWMExuQjFjMmdvYVdSNEtUdGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVaR1ZzWlhSbEtHbGtlQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnpkV0p6WlhRN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUJ1YjNKdFlXeHBlbVZrSUhabFkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUdSaGRHRWdiblZ0WlhKcFkyRnNJR0Z5Y21GNVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ1YjNKdFlXeHBlbVVvWkdGMFlUb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnYkdWMElHMWxZVzRnUFNBd08xeHVJQ0JzWlhRZ2MzUmtJRDBnTUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdiV1ZoYmlBclBTQmtZWFJoVzJsZE8xeHVYRzRnSUcxbFlXNGdMejBnWkdGMFlTNXNaVzVuZEdnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSE4wWkNBclBTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDb2dLR1JoZEdGYmFWMGdMU0J0WldGdUtUdGNibHh1SUNCemRHUWdQU0JOWVhSb0xuTnhjblFvYzNSa0lDOGdaR0YwWVM1c1pXNW5kR2dwTzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQmtZWFJoVzJsZElEMGdLR1JoZEdGYmFWMGdMU0J0WldGdUtTQXZJSE4wWkR0Y2JseHVJQ0J5WlhSMWNtNGdaR0YwWVR0Y2JuMWNibHh1THlvcVhHNGdLaUJHYVc1a2N5QnpaWFFnWkdsbVptVnlaVzVqWlNCaVpYUjNaV1Z1SUhSM2J5QnNhWE4wY3k1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHRWdWR2hsSUdacGNuTjBJR3hwYzNRdVhHNGdLaUJBY0dGeVlXMGdlMkZ1ZVZ0ZGZTQmlJRlJvWlNCelpXTnZibVFnYkdsemRDNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVWdGRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyVjBSR2xtWm1WeVpXNWpaU2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwT2lCaGJubGJYU0I3WEc0Z0lHTnZibk4wSUdKVFpYUWdQU0J1WlhjZ1UyVjBLR0lwTzF4dUlDQnlaWFIxY200Z1FYSnlZWGt1Wm5KdmJTaHVaWGNnVTJWMEtHRXVabWxzZEdWeUtDaDRLU0E5UGlBaFlsTmxkQzVvWVhNb2VDa3BLUzUyWVd4MVpYTW9LU2s3WEc1OVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBwZXEgPSBuZXcgVWludDMyQXJyYXkoMHgxMDAwMCk7XG5jb25zdCBteWVyc18zMiA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IG4gPSBhLmxlbmd0aDtcbiAgY29uc3QgbSA9IGIubGVuZ3RoO1xuICBjb25zdCBsc3QgPSAxIDw8IChuIC0gMSk7XG4gIGxldCBwdiA9IC0xO1xuICBsZXQgbXYgPSAwO1xuICBsZXQgc2MgPSBuO1xuICBsZXQgaSA9IG47XG4gIHdoaWxlIChpLS0pIHtcbiAgICBwZXFbYS5jaGFyQ29kZUF0KGkpXSB8PSAxIDw8IGk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG07IGkrKykge1xuICAgIGxldCBlcSA9IHBlcVtiLmNoYXJDb2RlQXQoaSldO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBlcSB8PSAoKGVxICYgcHYpICsgcHYpIF4gcHY7XG4gICAgbXYgfD0gfihlcSB8IHB2KTtcbiAgICBwdiAmPSBlcTtcbiAgICBpZiAobXYgJiBsc3QpIHtcbiAgICAgIHNjKys7XG4gICAgfVxuICAgIGlmIChwdiAmIGxzdCkge1xuICAgICAgc2MtLTtcbiAgICB9XG4gICAgbXYgPSAobXYgPDwgMSkgfCAxO1xuICAgIHB2ID0gKHB2IDw8IDEpIHwgfih4diB8IG12KTtcbiAgICBtdiAmPSB4djtcbiAgfVxuICBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldID0gMDtcbiAgfVxuICByZXR1cm4gc2M7XG59O1xuXG5jb25zdCBteWVyc194ID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IG1oYyA9IFtdO1xuICBjb25zdCBwaGMgPSBbXTtcbiAgY29uc3QgaHNpemUgPSBNYXRoLmNlaWwobiAvIDMyKTtcbiAgY29uc3QgdnNpemUgPSBNYXRoLmNlaWwobSAvIDMyKTtcbiAgbGV0IHNjb3JlID0gbTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoc2l6ZTsgaSsrKSB7XG4gICAgcGhjW2ldID0gLTE7XG4gICAgbWhjW2ldID0gMDtcbiAgfVxuICBsZXQgaiA9IDA7XG4gIGZvciAoOyBqIDwgdnNpemUgLSAxOyBqKyspIHtcbiAgICBsZXQgbXYgPSAwO1xuICAgIGxldCBwdiA9IC0xO1xuICAgIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKDMyLCBtKSArIHN0YXJ0O1xuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gICAgfVxuICAgIHNjb3JlID0gbTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICAgIGNvbnN0IHBiID0gKHBoY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgICAgY29uc3QgeGggPSAoKCgoZXEgfCBtYikgJiBwdikgKyBwdikgXiBwdikgfCBlcSB8IG1iO1xuICAgICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICAgIGlmICgocGggPj4+IDMxKSBeIHBiKSB7XG4gICAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIGlmICgobWggPj4+IDMxKSBeIG1iKSB7XG4gICAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICAgIH1cbiAgICAgIHBoID0gKHBoIDw8IDEpIHwgcGI7XG4gICAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgICBtdiA9IHBoICYgeHY7XG4gICAgfVxuICAgIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSA9IDA7XG4gICAgfVxuICB9XG4gIGxldCBtdiA9IDA7XG4gIGxldCBwdiA9IC0xO1xuICBjb25zdCBzdGFydCA9IGogKiAzMjtcbiAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0gLSBzdGFydCkgKyBzdGFydDtcbiAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICBwZXFbYi5jaGFyQ29kZUF0KGspXSB8PSAxIDw8IGs7XG4gIH1cbiAgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGVxID0gcGVxW2EuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICBjb25zdCBtYiA9IChtaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IHh2ID0gZXEgfCBtdjtcbiAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgbGV0IHBoID0gbXYgfCB+KHhoIHwgcHYpO1xuICAgIGxldCBtaCA9IHB2ICYgeGg7XG4gICAgc2NvcmUgKz0gKHBoID4+PiAobSAtIDEpKSAmIDE7XG4gICAgc2NvcmUgLT0gKG1oID4+PiAobSAtIDEpKSAmIDE7XG4gICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgIHBoY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgIG1oY1soaSAvIDMyKSB8IDBdIF49IDEgPDwgaTtcbiAgICB9XG4gICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICBtaCA9IChtaCA8PCAxKSB8IG1iO1xuICAgIHB2ID0gbWggfCB+KHh2IHwgcGgpO1xuICAgIG12ID0gcGggJiB4djtcbiAgfVxuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgfVxuICByZXR1cm4gc2NvcmU7XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiB7XG4gIGlmIChhLmxlbmd0aCA+IGIubGVuZ3RoKSB7XG4gICAgY29uc3QgdG1wID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gdG1wO1xuICB9XG4gIGlmIChhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBiLmxlbmd0aDtcbiAgfVxuICBpZiAoYS5sZW5ndGggPD0gMzIpIHtcbiAgICByZXR1cm4gbXllcnNfMzIoYSwgYik7XG4gIH1cbiAgcmV0dXJuIG15ZXJzX3goYSwgYik7XG59O1xuXG5jb25zdCBjbG9zZXN0ID0gKHN0ciwgYXJyKSA9PiB7XG4gIGxldCBtaW5fZGlzdGFuY2UgPSBJbmZpbml0eTtcbiAgbGV0IG1pbl9pbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbl9kaXN0YW5jZSkge1xuICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdDtcbiAgICAgIG1pbl9pbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluX2luZGV4XTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjbG9zZXN0LCBkaXN0YW5jZVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG4vLyBSZWZlcmVuY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL2phcm8tYW5kLWphcm8td2lua2xlci1zaW1pbGFyaXR5L1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5qYXJvV2lua2xlciA9IGV4cG9ydHMuamFybyA9IHZvaWQgMDtcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFybyhzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gRXhpdCBlYXJseSBpZiBlaXRoZXIgYXJlIGVtcHR5LlxuICAgIGlmIChzdHIxLmxlbmd0aCA9PT0gMCB8fCBzdHIyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgLy8gQ29udmVydCB0byB1cHBlciBpZiBjYXNlLXNlbnNpdGl2ZSBpcyBmYWxzZS5cbiAgICBpZiAob3B0aW9ucyAmJiAhb3B0aW9ucy5jYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgIHN0cjEgPSBzdHIxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHN0cjIgPSBzdHIyLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIC8vIEV4YWN0IG1hdGNoXG4gICAgaWYgKHN0cjEgPT09IHN0cjIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIC8vIE51bWJlciBvZiBtYXRjaGVzXG4gICAgdmFyIG0gPSAwO1xuICAgIC8vIExlbmd0aCBvZiB0d28gU3RyaW5nc1xuICAgIHZhciBsZW4xID0gc3RyMS5sZW5ndGg7XG4gICAgdmFyIGxlbjIgPSBzdHIyLmxlbmd0aDtcbiAgICAvLyBNYXhpbXVtIGRpc3RhbmNlXG4gICAgdmFyIHdpbmRvdyA9IE1hdGguZmxvb3IoTWF0aC5tYXgobGVuMSwgbGVuMikgLyAyKSAtIDE7XG4gICAgLy8gSGFzaCBmb3IgbWF0Y2hlc1xuICAgIHZhciBzdHIxSGFzaCA9IG5ldyBBcnJheShsZW4xKTtcbiAgICB2YXIgc3RyMkhhc2ggPSBuZXcgQXJyYXkobGVuMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGkgLSB3aW5kb3cpOyBqIDw9IE1hdGgubWluKGxlbjIsIGkgKyB3aW5kb3cgKyAxKTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoIXN0cjFIYXNoW2ldICYmICFzdHIySGFzaFtqXSAmJiBzdHIxW2ldID09PSBzdHIyW2pdKSB7XG4gICAgICAgICAgICAgICAgKyttO1xuICAgICAgICAgICAgICAgIHN0cjFIYXNoW2ldID0gc3RyMkhhc2hbal0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQgZWFybHkgaWYgbm8gbWF0Y2hlcyB3ZXJlIGZvdW5kLlxuICAgIGlmIChtID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb3VudCB0aGUgdHJhbnNwb3NpdGlvbnMuXG4gICAgdmFyIHQgPSAwO1xuICAgIHZhciBwb2ludCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICAgICAgaWYgKHN0cjFIYXNoW2ldKSB7XG4gICAgICAgICAgICB3aGlsZSAoIXN0cjJIYXNoW3BvaW50XSkge1xuICAgICAgICAgICAgICAgIHBvaW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RyMS5jaGFyQXQoaSkgIT09IHN0cjIuY2hhckF0KHBvaW50KyspKSB7XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHQgLz0gMjtcbiAgICByZXR1cm4gKG0gLyBsZW4xICsgbSAvIGxlbjIgKyAobSAtIHQpIC8gbSkgLyAzO1xufVxuZXhwb3J0cy5qYXJvID0gamFybztcbi8qKlxuICpcbiAqIEBwYXJhbSBzdHIxIFN0cmluZyAxIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gc3RyMiBTdHJpbmcgMiBmb3IgY29tcGFyZVxuICogQHBhcmFtIG9wdGlvbnMgdG8gY29udHJvbCBjYXNlIHNlbnNpdGl2ZSBvciBub3RcbiAqL1xuZnVuY3Rpb24gamFyb1dpbmtsZXIoc3RyMSwgc3RyMiwgb3B0aW9ucykge1xuICAgIC8vIEphcm8gRGlzdGFuY2VcbiAgICB2YXIgamFyb0Rpc3QgPSBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpO1xuICAgIC8vIFNhbWUgcHJlZml4IGxlbmd0aCwgbWF4aXVtIGlzIDRcbiAgICB2YXIgcHJlZml4ID0gMDtcbiAgICBpZiAoamFyb0Rpc3QgPiAwLjcpIHtcbiAgICAgICAgdmFyIG1pbkluZGV4ID0gTWF0aC5taW4oc3RyMS5sZW5ndGgsIHN0cjIubGVuZ3RoKTtcbiAgICAgICAgdmFyIGkgPSAwO1xuICAgICAgICB3aGlsZSAoc3RyMVtpXSA9PT0gc3RyMltpXSAmJiBpIDwgNCAmJiBpIDwgbWluSW5kZXgpIHtcbiAgICAgICAgICAgICsrcHJlZml4O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9XG4gICAgICAgIGphcm9EaXN0ICs9IDAuMSAqIHByZWZpeCAqICgxIC0gamFyb0Rpc3QpO1xuICAgIH1cbiAgICByZXR1cm4gamFyb0Rpc3Q7XG59XG5leHBvcnRzLmphcm9XaW5rbGVyID0gamFyb1dpbmtsZXI7XG4iLCJjbGFzcyBDZWxsIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SSA9IDA7XG4gICAgICAgIHRoaXMucGFyZW50SiA9IDA7XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIEFsaWduZWQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgc2NvcmVfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5zY29yZSA9IHNjb3JlXztcbiAgICB9XG59XG47XG5leHBvcnQgY2xhc3MgU2VxdWVuY2VBbGlnbm1lbnQge1xuICAgIGNvbnN0cnVjdG9yKHNlcTFfLCBzZXEyXywgZ2FwXywgYWxpZ25HcmlkXyA9IFwiXCIpIHtcbiAgICAgICAgdGhpcy5zZXExID0gJyc7XG4gICAgICAgIHRoaXMuc2VxMiA9ICcnO1xuICAgICAgICB0aGlzLmdhcCA9IDE7XG4gICAgICAgIHRoaXMubGVuMSA9IDA7XG4gICAgICAgIHRoaXMubGVuMiA9IDA7XG4gICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgIHRoaXMuYWxpZ25HcmlkID0gW107XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB7fTtcbiAgICAgICAgdGhpcy5CTE9TVU00NSA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDcsIDAsIC0xLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMywgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgNiwgMiwgLTIsIDAsIDAsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC0yLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDIsIDcsIC0zLCAwLCAyLCAtMSwgMCwgLTQsIC0zLCAwLCAtMywgLTQsIC0xLCAwLCAtMSwgLTQsIC0yLCAtMywgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtMywgMTIsIC0zLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0yLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDYsIDIsIC0yLCAxLCAtMiwgLTIsIDEsIDAsIC00LCAtMSwgMCwgLTEsIC0yLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMiwgMCwgLTMsIC0yLCAxLCAtMiwgLTMsIDAsIDAsIC0xLCAtMywgLTIsIC0zLCAxLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNywgLTIsIC00LCAtMywgLTIsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIDAsIC0zLCAxLCAwLCAtMiwgMTAsIC0zLCAtMiwgLTEsIDAsIC0yLCAtMiwgLTEsIC0yLCAtMywgMiwgLTMsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTQsIC0zLCAtMiwgLTMsIC00LCAtMywgNSwgMiwgLTMsIDIsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAzLCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTMsIC0yLCAtMiwgLTIsIC0zLCAtMiwgMiwgNSwgLTMsIDIsIDEsIC0zLCAtMywgLTEsIC0yLCAwLCAxLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIDAsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMywgNSwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0yLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTIsIC0zLCAtMiwgMCwgLTIsIC0yLCAwLCAyLCAyLCAtMSwgNiwgMCwgLTIsIC0yLCAtMSwgLTIsIDAsIDEsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtNCwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAxLCAtMywgMCwgOCwgLTMsIC0yLCAtMSwgMSwgMywgMCwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0xLCAtNCwgLTEsIDAsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCA5LCAtMSwgLTEsIC0zLCAtMywgLTMsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0xLCA0LCAyLCAtNCwgLTIsIC0xLCAwLCAwLCAwLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDIsIDUsIC0zLCAtMSwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC00LCAtNCwgLTUsIC0yLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgMSwgLTMsIC00LCAtMywgMTUsIDMsIC0zLCAtNCwgLTIsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0zLCAyLCAwLCAwLCAtMSwgMCwgMywgLTMsIC0yLCAtMSwgMywgOCwgLTEsIC0yLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgLTMsIC0zLCAtMSwgLTMsIC0zLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0zLCAtMSwgNSwgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNCwgNSwgLTIsIDAsIDEsIC0xLCAwLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDAsIDAsIC00LCAtMiwgLTMsIDQsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA0LCAtMiwgMCwgLTMsIC0yLCAxLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU01MCA9IFtbNSwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAtMSwgLTIsIC00LCAxLCAwLCAtMywgMCwgLTQsIC0zLCAzLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgNywgMiwgLTIsIDAsIDAsIDAsIDEsIC0zLCAtNCwgMCwgLTIsIC00LCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgNCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDIsIDgsIC00LCAwLCAyLCAtMSwgLTEsIC00LCAtNCwgLTEsIC00LCAtNSwgLTEsIDAsIC0xLCAtNSwgLTMsIC00LCA1LCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTIsIC00LCAxMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTQsIC0xLCAtMSwgLTUsIC0zLCAtMSwgLTMsIC0zLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNywgMiwgLTIsIDEsIC0zLCAtMiwgMiwgMCwgLTQsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMywgMCwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTMsIDIsIDYsIC0zLCAwLCAtNCwgLTMsIDEsIC0yLCAtMywgLTEsIC0xLCAtMSwgLTMsIC0yLCAtMywgMSwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMywgMCwgLTEsIC0zLCAtMiwgLTMsIDgsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTQsIC0yLCAwLCAtMiwgLTMsIC0zLCAtNCwgLTEsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDEsIDAsIC0yLCAxMCwgLTQsIC0zLCAwLCAtMSwgLTEsIC0yLCAtMSwgLTIsIC0zLCAyLCAtNCwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0zLCAtNCwgLTIsIC0zLCAtNCwgLTQsIC00LCA1LCAyLCAtMywgMiwgMCwgLTMsIC0zLCAtMSwgLTMsIC0xLCA0LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTQsIC0yLCAtMiwgLTMsIC00LCAtMywgMiwgNSwgLTMsIDMsIDEsIC00LCAtMywgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMSwgLTMsIDIsIDEsIC0yLCAwLCAtMywgLTMsIDYsIC0yLCAtNCwgLTEsIDAsIC0xLCAtMywgLTIsIC0zLCAwLCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC00LCAtMiwgMCwgLTIsIC0zLCAtMSwgMiwgMywgLTIsIDcsIDAsIC0zLCAtMiwgLTEsIC0xLCAwLCAxLCAtMywgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTUsIC0yLCAtNCwgLTMsIC00LCAtMSwgMCwgMSwgLTQsIDAsIDgsIC00LCAtMywgLTIsIDEsIDQsIC0xLCAtNCwgLTQsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTEsIC00LCAtMSwgLTEsIC0yLCAtMiwgLTMsIC00LCAtMSwgLTMsIC00LCAxMCwgLTEsIC0xLCAtNCwgLTMsIC0zLCAtMiwgLTEsIC0yLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAtMSwgMCwgLTEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMSwgNSwgMiwgLTQsIC0yLCAtMiwgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMiwgNSwgLTMsIC0yLCAwLCAwLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtNSwgLTEsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTQsIC0zLCAxNSwgMiwgLTMsIC01LCAtMiwgLTMsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIDAsIDQsIC0zLCAtMiwgLTIsIDIsIDgsIC0xLCAtMywgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTQsIC00LCA0LCAxLCAtMywgMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC0xLCA1LCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCA0LCA1LCAtMywgMCwgMSwgLTEsIDAsIC00LCAtNCwgMCwgLTMsIC00LCAtMiwgMCwgMCwgLTUsIC0zLCAtNCwgNSwgMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDQsIDUsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTIsIC0zLCAyLCA1LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAwLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNjIgPSBbWzQsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDAsIC0zLCAtMiwgMCwgLTIsIC0xLCAwLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDUsIDAsIC0yLCAtMywgMSwgMCwgLTIsIDAsIC0zLCAtMiwgMiwgLTEsIC0zLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0zLCAtMSwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgNiwgMSwgLTMsIDAsIDAsIDAsIDEsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMSwgMCwgLTQsIC0yLCAtMywgMywgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDEsIDYsIC0zLCAwLCAyLCAtMSwgLTEsIC0zLCAtNCwgLTEsIC0zLCAtMywgLTEsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIDksIC0zLCAtNCwgLTMsIC0zLCAtMSwgLTEsIC0zLCAtMSwgLTIsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0zLCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDUsIDIsIC0yLCAwLCAtMywgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTIsIDAsIDMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC00LCAyLCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDYsIC0yLCAtNCwgLTQsIC0yLCAtMywgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAtMSwgLTMsIDAsIDAsIC0yLCA4LCAtMywgLTMsIC0xLCAtMiwgLTEsIC0yLCAtMSwgLTIsIC0yLCAyLCAtMywgMCwgMCwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0zLCAtMywgLTEsIC0zLCAtMywgLTQsIC0zLCA0LCAyLCAtMywgMSwgMCwgLTMsIC0yLCAtMSwgLTMsIC0xLCAzLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMywgLTQsIC0xLCAtMiwgLTMsIC00LCAtMywgMiwgNCwgLTIsIDIsIDAsIC0zLCAtMiwgLTEsIC0yLCAtMSwgMSwgLTQsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0yLCA1LCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTEsIDAsIC0yLCAtMywgLTIsIDEsIDIsIC0xLCA1LCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIDEsIC0zLCAtMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtMywgLTIsIC0zLCAtMywgLTMsIC0xLCAwLCAwLCAtMywgMCwgNiwgLTQsIC0yLCAtMiwgMSwgMywgLTEsIC0zLCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTQsIDcsIC0xLCAtMSwgLTQsIC0zLCAtMiwgLTIsIC0xLCAtMiwgLTRdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0yLCAtMSwgNCwgMSwgLTMsIC0yLCAtMiwgMCwgMCwgMCwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCA1LCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTMsIC0xLCAxLCAtNCwgLTMsIC0yLCAxMSwgMiwgLTMsIC00LCAtMywgLTIsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0yLCAtMywgLTIsIC0xLCAtMiwgLTMsIDIsIC0xLCAtMSwgLTIsIC0xLCAzLCAtMywgLTIsIC0yLCAyLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIC0zLCAtMywgMywgMSwgLTIsIDEsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMSwgNCwgLTMsIC0yLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMSwgMywgNCwgLTMsIDAsIDEsIC0xLCAwLCAtMywgLTQsIDAsIC0zLCAtMywgLTIsIDAsIC0xLCAtNCwgLTMsIC0zLCA0LCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgMywgNCwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNODAgPSBbWzcsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTIsIDAsIC0zLCAtMywgLTMsIC0xLCAtMiwgLTQsIC0xLCAyLCAwLCAtNSwgLTQsIC0xLCAtMywgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDksIC0xLCAtMywgLTYsIDEsIC0xLCAtNCwgMCwgLTUsIC00LCAzLCAtMywgLTUsIC0zLCAtMiwgLTIsIC01LCAtNCwgLTQsIC0yLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMSwgOSwgMiwgLTUsIDAsIC0xLCAtMSwgMSwgLTYsIC02LCAwLCAtNCwgLTYsIC00LCAxLCAwLCAtNywgLTQsIC01LCA1LCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTMsIDIsIDEwLCAtNywgLTEsIDIsIC0zLCAtMiwgLTcsIC03LCAtMiwgLTYsIC02LCAtMywgLTEsIC0yLCAtOCwgLTYsIC02LCA2LCAxLCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTUsIC03LCAxMywgLTUsIC03LCAtNiwgLTcsIC0yLCAtMywgLTYsIC0zLCAtNCwgLTYsIC0yLCAtMiwgLTUsIC01LCAtMiwgLTYsIC03LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0yLCAxLCAwLCAtMSwgLTUsIDksIDMsIC00LCAxLCAtNSwgLTQsIDIsIC0xLCAtNSwgLTMsIC0xLCAtMSwgLTQsIC0zLCAtNCwgLTEsIDUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMSwgMiwgLTcsIDMsIDgsIC00LCAwLCAtNiwgLTYsIDEsIC00LCAtNiwgLTIsIC0xLCAtMiwgLTYsIC01LCAtNCwgMSwgNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFswLCAtNCwgLTEsIC0zLCAtNiwgLTQsIC00LCA5LCAtNCwgLTcsIC03LCAtMywgLTUsIC02LCAtNSwgLTEsIC0zLCAtNiwgLTYsIC02LCAtMiwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTMsIDAsIDEsIC0yLCAtNywgMSwgMCwgLTQsIDEyLCAtNiwgLTUsIC0xLCAtNCwgLTIsIC00LCAtMiwgLTMsIC00LCAzLCAtNSwgLTEsIDAsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC01LCAtNiwgLTcsIC0yLCAtNSwgLTYsIC03LCAtNiwgNywgMiwgLTUsIDIsIC0xLCAtNSwgLTQsIC0yLCAtNSwgLTMsIDQsIC02LCAtNiwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC02LCAtNywgLTMsIC00LCAtNiwgLTcsIC01LCAyLCA2LCAtNCwgMywgMCwgLTUsIC00LCAtMywgLTQsIC0yLCAxLCAtNywgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIC0yLCAtNiwgMiwgMSwgLTMsIC0xLCAtNSwgLTQsIDgsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTYsIC00LCAtNCwgLTEsIDEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTYsIC0zLCAtMSwgLTQsIC01LCAtNCwgMiwgMywgLTMsIDksIDAsIC00LCAtMywgLTEsIC0zLCAtMywgMSwgLTUsIC0zLCAtMiwgLThdLFxuICAgICAgICAgICAgWy00LCAtNSwgLTYsIC02LCAtNCwgLTUsIC02LCAtNiwgLTIsIC0xLCAwLCAtNSwgMCwgMTAsIC02LCAtNCwgLTQsIDAsIDQsIC0yLCAtNiwgLTYsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTMsIC02LCAtMywgLTIsIC01LCAtNCwgLTUsIC01LCAtMiwgLTQsIC02LCAxMiwgLTIsIC0zLCAtNywgLTYsIC00LCAtNCwgLTIsIC0zLCAtOF0sXG4gICAgICAgICAgICBbMiwgLTIsIDEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC00LCAtNCwgLTEsIC0zLCAtNCwgLTIsIDcsIDIsIC02LCAtMywgLTMsIDAsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0zLCAtMiwgLTMsIC0xLCAtMSwgLTQsIC0zLCAyLCA4LCAtNSwgLTMsIDAsIC0xLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC03LCAtOCwgLTUsIC00LCAtNiwgLTYsIC00LCAtNSwgLTQsIC02LCAtMywgMCwgLTcsIC02LCAtNSwgMTYsIDMsIC01LCAtOCwgLTUsIC01LCAtOF0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNCwgLTYsIC01LCAtMywgLTUsIC02LCAzLCAtMywgLTIsIC00LCAtMywgNCwgLTYsIC0zLCAtMywgMywgMTEsIC0zLCAtNSwgLTQsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC00LCAtNSwgLTYsIC0yLCAtNCwgLTQsIC02LCAtNSwgNCwgMSwgLTQsIDEsIC0yLCAtNCwgLTMsIDAsIC01LCAtMywgNywgLTYsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMiwgNSwgNiwgLTYsIC0xLCAxLCAtMiwgLTEsIC02LCAtNywgLTEsIC01LCAtNiwgLTQsIDAsIC0xLCAtOCwgLTUsIC02LCA2LCAwLCAtMywgLThdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMSwgLTcsIDUsIDYsIC00LCAwLCAtNiwgLTUsIDEsIC0zLCAtNiwgLTIsIC0xLCAtMiwgLTUsIC00LCAtNCwgMCwgNiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTEsIC01LCAtMywgLTIsIC0zLCAtMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU05MCA9IFtbNSwgLTIsIC0yLCAtMywgLTEsIC0xLCAtMSwgMCwgLTIsIC0yLCAtMiwgLTEsIC0yLCAtMywgLTEsIDEsIDAsIC00LCAtMywgLTEsIC0yLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMiwgNiwgLTEsIC0zLCAtNSwgMSwgLTEsIC0zLCAwLCAtNCwgLTMsIDIsIC0yLCAtNCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgLTIsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0xLCA3LCAxLCAtNCwgMCwgLTEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTMsIDAsIDAsIC01LCAtMywgLTQsIDQsIC0xLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgMSwgNywgLTUsIC0xLCAxLCAtMiwgLTIsIC01LCAtNSwgLTEsIC00LCAtNSwgLTMsIC0xLCAtMiwgLTYsIC00LCAtNSwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTUsIC00LCAtNSwgOSwgLTQsIC02LCAtNCwgLTUsIC0yLCAtMiwgLTQsIC0yLCAtMywgLTQsIC0yLCAtMiwgLTQsIC00LCAtMiwgLTQsIC01LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAtMSwgLTQsIDcsIDIsIC0zLCAxLCAtNCwgLTMsIDEsIDAsIC00LCAtMiwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMSwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAxLCAtNiwgMiwgNiwgLTMsIC0xLCAtNCwgLTQsIDAsIC0zLCAtNSwgLTIsIC0xLCAtMSwgLTUsIC00LCAtMywgMCwgNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFswLCAtMywgLTEsIC0yLCAtNCwgLTMsIC0zLCA2LCAtMywgLTUsIC01LCAtMiwgLTQsIC01LCAtMywgLTEsIC0zLCAtNCwgLTUsIC01LCAtMiwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDAsIDAsIC0yLCAtNSwgMSwgLTEsIC0zLCA4LCAtNCwgLTQsIC0xLCAtMywgLTIsIC0zLCAtMiwgLTIsIC0zLCAxLCAtNCwgLTEsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIC0yLCAtNCwgLTQsIC01LCAtNCwgNSwgMSwgLTQsIDEsIC0xLCAtNCwgLTMsIC0xLCAtNCwgLTIsIDMsIC01LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNSwgLTIsIC0zLCAtNCwgLTUsIC00LCAxLCA1LCAtMywgMiwgMCwgLTQsIC0zLCAtMiwgLTMsIC0yLCAwLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDIsIDAsIC0xLCAtNCwgMSwgMCwgLTIsIC0xLCAtNCwgLTMsIDYsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTUsIC0zLCAtMywgLTEsIDEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMywgLTQsIC0yLCAwLCAtMywgLTQsIC0zLCAxLCAyLCAtMiwgNywgLTEsIC0zLCAtMiwgLTEsIC0yLCAtMiwgMCwgLTQsIC0yLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTQsIC01LCAtMywgLTQsIC01LCAtNSwgLTIsIC0xLCAwLCAtNCwgLTEsIDcsIC00LCAtMywgLTMsIDAsIDMsIC0yLCAtNCwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC00LCAtMiwgLTIsIC0zLCAtMywgLTQsIC00LCAtMiwgLTMsIC00LCA4LCAtMiwgLTIsIC01LCAtNCwgLTMsIC0zLCAtMiwgLTIsIC02XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAtMiwgNSwgMSwgLTQsIC0zLCAtMiwgMCwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTEsIC0xLCAtMywgLTIsIDEsIDYsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC01LCAtNiwgLTQsIC0zLCAtNSwgLTQsIC0zLCAtNCwgLTMsIC01LCAtMiwgMCwgLTUsIC00LCAtNCwgMTEsIDIsIC0zLCAtNiwgLTQsIC0zLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtMywgLTQsIC00LCAtMywgLTQsIC01LCAxLCAtMiwgLTIsIC0zLCAtMiwgMywgLTQsIC0zLCAtMiwgMiwgOCwgLTMsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC00LCAtNSwgLTIsIC0zLCAtMywgLTUsIC00LCAzLCAwLCAtMywgMCwgLTIsIC0zLCAtMiwgLTEsIC0zLCAtMywgNSwgLTQsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgNCwgNCwgLTQsIC0xLCAwLCAtMiwgLTEsIC01LCAtNSwgLTEsIC00LCAtNCwgLTMsIDAsIC0xLCAtNiwgLTQsIC00LCA0LCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMSwgMCwgLTUsIDQsIDQsIC0zLCAwLCAtNCwgLTQsIDEsIC0yLCAtNCwgLTIsIC0xLCAtMSwgLTQsIC0zLCAtMywgMCwgNCwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTIsIC0yLCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIDFdXTtcbiAgICAgICAgdGhpcy5OVUNMRU9USURFUyA9IFtbMSwgLTEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIDEsIC0xLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAxLCAtMV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTMwID0gW1s2LCAtNywgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMiwgLTcsIC01LCAtNiwgLTcsIC01LCAtOCwgLTIsIDAsIC0xLCAtMTMsIC04LCAtMiwgLTMsIC0zLCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstNywgOCwgLTYsIC0xMCwgLTgsIC0yLCAtOSwgLTksIC0yLCAtNSwgLTgsIDAsIC00LCAtOSwgLTQsIC0zLCAtNiwgLTIsIC0xMCwgLTgsIC03LCAtNCwgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTQsIC02LCA4LCAyLCAtMTEsIC0zLCAtMiwgLTMsIDAsIC01LCAtNywgLTEsIC05LCAtOSwgLTYsIDAsIC0yLCAtOCwgLTQsIC04LCA2LCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC0xMCwgMiwgOCwgLTE0LCAtMiwgMiwgLTMsIC00LCAtNywgLTEyLCAtNCwgLTExLCAtMTUsIC04LCAtNCwgLTUsIC0xNSwgLTExLCAtOCwgNiwgMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTYsIC04LCAtMTEsIC0xNCwgMTAsIC0xNCwgLTE0LCAtOSwgLTcsIC02LCAtMTUsIC0xNCwgLTEzLCAtMTMsIC04LCAtMywgLTgsIC0xNSwgLTQsIC02LCAtMTIsIC0xNCwgLTksIC0xN10sXG4gICAgICAgICAgICBbLTQsIC0yLCAtMywgLTIsIC0xNCwgOCwgMSwgLTcsIDEsIC04LCAtNSwgLTMsIC00LCAtMTMsIC0zLCAtNSwgLTUsIC0xMywgLTEyLCAtNywgLTMsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTIsIDIsIC0xNCwgMSwgOCwgLTQsIC01LCAtNSwgLTksIC00LCAtNywgLTE0LCAtNSwgLTQsIC02LCAtMTcsIC04LCAtNiwgMSwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC05LCAtMywgLTMsIC05LCAtNywgLTQsIDYsIC05LCAtMTEsIC0xMCwgLTcsIC04LCAtOSwgLTYsIC0yLCAtNiwgLTE1LCAtMTQsIC01LCAtMywgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy03LCAtMiwgMCwgLTQsIC03LCAxLCAtNSwgLTksIDksIC05LCAtNiwgLTYsIC0xMCwgLTYsIC00LCAtNiwgLTcsIC03LCAtMywgLTYsIC0xLCAtMSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTcsIC02LCAtOCwgLTUsIC0xMSwgLTksIDgsIC0xLCAtNiwgLTEsIC0yLCAtOCwgLTcsIC0yLCAtMTQsIC02LCAyLCAtNiwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTcsIC0xMiwgLTE1LCAtNSwgLTksIC0xMCwgLTYsIC0xLCA3LCAtOCwgMSwgLTMsIC03LCAtOCwgLTcsIC02LCAtNywgLTIsIC05LCAtNywgLTYsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDAsIC0xLCAtNCwgLTE0LCAtMywgLTQsIC03LCAtNiwgLTYsIC04LCA3LCAtMiwgLTE0LCAtNiwgLTQsIC0zLCAtMTIsIC05LCAtOSwgLTIsIC00LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNSwgLTQsIC05LCAtMTEsIC0xMywgLTQsIC03LCAtOCwgLTEwLCAtMSwgMSwgLTIsIDExLCAtNCwgLTgsIC01LCAtNCwgLTEzLCAtMTEsIC0xLCAtMTAsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTksIC05LCAtMTUsIC0xMywgLTEzLCAtMTQsIC05LCAtNiwgLTIsIC0zLCAtMTQsIC00LCA5LCAtMTAsIC02LCAtOSwgLTQsIDIsIC04LCAtMTAsIC0xMywgLTgsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC00LCAtNiwgLTgsIC04LCAtMywgLTUsIC02LCAtNCwgLTgsIC03LCAtNiwgLTgsIC0xMCwgOCwgLTIsIC00LCAtMTQsIC0xMywgLTYsIC03LCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC00LCAtMywgLTUsIC00LCAtMiwgLTYsIC03LCAtOCwgLTQsIC01LCAtNiwgLTIsIDYsIDAsIC01LCAtNywgLTYsIC0xLCAtNSwgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTEsIC02LCAtMiwgLTUsIC04LCAtNSwgLTYsIC02LCAtNywgLTIsIC03LCAtMywgLTQsIC05LCAtNCwgMCwgNywgLTEzLCAtNiwgLTMsIC0zLCAtNiwgLTQsIC0xN10sXG4gICAgICAgICAgICBbLTEzLCAtMiwgLTgsIC0xNSwgLTE1LCAtMTMsIC0xNywgLTE1LCAtNywgLTE0LCAtNiwgLTEyLCAtMTMsIC00LCAtMTQsIC01LCAtMTMsIDEzLCAtNSwgLTE1LCAtMTAsIC0xNCwgLTExLCAtMTddLFxuICAgICAgICAgICAgWy04LCAtMTAsIC00LCAtMTEsIC00LCAtMTIsIC04LCAtMTQsIC0zLCAtNiwgLTcsIC05LCAtMTEsIDIsIC0xMywgLTcsIC02LCAtNSwgMTAsIC03LCAtNiwgLTksIC03LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOCwgLTgsIC04LCAtNiwgLTcsIC02LCAtNSwgLTYsIDIsIC0yLCAtOSwgLTEsIC04LCAtNiwgLTYsIC0zLCAtMTUsIC03LCA3LCAtOCwgLTYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNywgNiwgNiwgLTEyLCAtMywgMSwgLTMsIC0xLCAtNiwgLTksIC0yLCAtMTAsIC0xMCwgLTcsIC0xLCAtMywgLTEwLCAtNiwgLTgsIDYsIDAsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTMsIDEsIC0xNCwgNiwgNiwgLTUsIC0xLCAtNiwgLTcsIC00LCAtNSwgLTEzLCAtNCwgLTUsIC02LCAtMTQsIC05LCAtNiwgMCwgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC02LCAtMywgLTUsIC05LCAtNSwgLTUsIC01LCAtNSwgLTUsIC02LCAtNSwgLTUsIC04LCAtNSwgLTMsIC00LCAtMTEsIC03LCAtNSwgLTUsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgMV1dO1xuICAgICAgICB0aGlzLlBBTTcwID0gW1s1LCAtNCwgLTIsIC0xLCAtNCwgLTIsIC0xLCAwLCAtNCwgLTIsIC00LCAtNCwgLTMsIC02LCAwLCAxLCAxLCAtOSwgLTUsIC0xLCAtMSwgLTEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy00LCA4LCAtMywgLTYsIC01LCAwLCAtNSwgLTYsIDAsIC0zLCAtNiwgMiwgLTIsIC03LCAtMiwgLTEsIC00LCAwLCAtNywgLTUsIC00LCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCA2LCAzLCAtNywgLTEsIDAsIC0xLCAxLCAtMywgLTUsIDAsIC01LCAtNiwgLTMsIDEsIDAsIC02LCAtMywgLTUsIDUsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTYsIDMsIDYsIC05LCAwLCAzLCAtMSwgLTEsIC01LCAtOCwgLTIsIC03LCAtMTAsIC00LCAtMSwgLTIsIC0xMCwgLTcsIC01LCA1LCAyLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgLTUsIC03LCAtOSwgOSwgLTksIC05LCAtNiwgLTUsIC00LCAtMTAsIC05LCAtOSwgLTgsIC01LCAtMSwgLTUsIC0xMSwgLTIsIC00LCAtOCwgLTksIC02LCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAwLCAtMSwgMCwgLTksIDcsIDIsIC00LCAyLCAtNSwgLTMsIC0xLCAtMiwgLTksIC0xLCAtMywgLTMsIC04LCAtOCwgLTQsIC0xLCA1LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTUsIDAsIDMsIC05LCAyLCA2LCAtMiwgLTIsIC00LCAtNiwgLTIsIC00LCAtOSwgLTMsIC0yLCAtMywgLTExLCAtNiwgLTQsIDIsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzAsIC02LCAtMSwgLTEsIC02LCAtNCwgLTIsIDYsIC02LCAtNiwgLTcsIC01LCAtNiwgLTcsIC0zLCAwLCAtMywgLTEwLCAtOSwgLTMsIC0xLCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDAsIDEsIC0xLCAtNSwgMiwgLTIsIC02LCA4LCAtNiwgLTQsIC0zLCAtNiwgLTQsIC0yLCAtMywgLTQsIC01LCAtMSwgLTQsIDAsIDEsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC01LCAtNCwgLTUsIC00LCAtNiwgLTYsIDcsIDEsIC00LCAxLCAwLCAtNSwgLTQsIC0xLCAtOSwgLTQsIDMsIC00LCAtNCwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC02LCAtNSwgLTgsIC0xMCwgLTMsIC02LCAtNywgLTQsIDEsIDYsIC01LCAyLCAtMSwgLTUsIC02LCAtNCwgLTQsIC00LCAwLCAtNiwgLTQsIC00LCAtMTFdLFxuICAgICAgICAgICAgWy00LCAyLCAwLCAtMiwgLTksIC0xLCAtMiwgLTUsIC0zLCAtNCwgLTUsIDYsIDAsIC05LCAtNCwgLTIsIC0xLCAtNywgLTcsIC02LCAtMSwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0zLCAtMiwgLTUsIC03LCAtOSwgLTIsIC00LCAtNiwgLTYsIDEsIDIsIDAsIDEwLCAtMiwgLTUsIC0zLCAtMiwgLTgsIC03LCAwLCAtNiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy02LCAtNywgLTYsIC0xMCwgLTgsIC05LCAtOSwgLTcsIC00LCAwLCAtMSwgLTksIC0yLCA4LCAtNywgLTQsIC02LCAtMiwgNCwgLTUsIC03LCAtOSwgLTUsIC0xMV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtNCwgLTUsIC0xLCAtMywgLTMsIC0yLCAtNSwgLTUsIC00LCAtNSwgLTcsIDcsIDAsIC0yLCAtOSwgLTksIC0zLCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAtMSwgLTEsIC0zLCAtMiwgMCwgLTMsIC00LCAtNiwgLTIsIC0zLCAtNCwgMCwgNSwgMiwgLTMsIC01LCAtMywgMCwgLTIsIC0xLCAtMTFdLFxuICAgICAgICAgICAgWzEsIC00LCAwLCAtMiwgLTUsIC0zLCAtMywgLTMsIC00LCAtMSwgLTQsIC0xLCAtMiwgLTYsIC0yLCAyLCA2LCAtOCwgLTQsIC0xLCAtMSwgLTMsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy05LCAwLCAtNiwgLTEwLCAtMTEsIC04LCAtMTEsIC0xMCwgLTUsIC05LCAtNCwgLTcsIC04LCAtMiwgLTksIC0zLCAtOCwgMTMsIC0zLCAtMTAsIC03LCAtMTAsIC03LCAtMTFdLFxuICAgICAgICAgICAgWy01LCAtNywgLTMsIC03LCAtMiwgLTgsIC02LCAtOSwgLTEsIC00LCAtNCwgLTcsIC03LCA0LCAtOSwgLTUsIC00LCAtMywgOSwgLTUsIC00LCAtNywgLTUsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNSwgLTUsIC00LCAtNCwgLTQsIC0zLCAtNCwgMywgMCwgLTYsIDAsIC01LCAtMywgLTMsIC0xLCAtMTAsIC01LCA2LCAtNSwgLTQsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNCwgNSwgNSwgLTgsIC0xLCAyLCAtMSwgMCwgLTQsIC02LCAtMSwgLTYsIC03LCAtNCwgMCwgLTEsIC03LCAtNCwgLTUsIDUsIDEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTEsIDIsIC05LCA1LCA1LCAtMywgMSwgLTQsIC00LCAtMiwgLTMsIC05LCAtMiwgLTIsIC0zLCAtMTAsIC03LCAtNCwgMSwgNSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMiwgLTMsIC02LCAtMiwgLTMsIC0zLCAtMywgLTMsIC00LCAtMywgLTMsIC01LCAtMywgLTEsIC0yLCAtNywgLTUsIC0yLCAtMiwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAxXV07XG4gICAgICAgIHRoaXMuUEFNMjUwID0gW1syLCAtMiwgMCwgMCwgLTIsIDAsIDAsIDEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTMsIDEsIDEsIDEsIC02LCAtMywgMCwgMCwgMCwgMCwgLThdLFxuICAgICAgICAgICAgWy0yLCA2LCAwLCAtMSwgLTQsIDEsIC0xLCAtMywgMiwgLTIsIC0zLCAzLCAwLCAtNCwgMCwgMCwgLTEsIDIsIC00LCAtMiwgLTEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMiwgMiwgLTQsIDEsIDEsIDAsIDIsIC0yLCAtMywgMSwgLTIsIC0zLCAwLCAxLCAwLCAtNCwgLTIsIC0yLCAyLCAxLCAwLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDQsIC01LCAyLCAzLCAxLCAxLCAtMiwgLTQsIDAsIC0zLCAtNiwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC00LCAtNCwgLTUsIDEyLCAtNSwgLTUsIC0zLCAtMywgLTIsIC02LCAtNSwgLTUsIC00LCAtMywgMCwgLTIsIC04LCAwLCAtMiwgLTQsIC01LCAtMywgLThdLFxuICAgICAgICAgICAgWzAsIDEsIDEsIDIsIC01LCA0LCAyLCAtMSwgMywgLTIsIC0yLCAxLCAtMSwgLTUsIDAsIC0xLCAtMSwgLTUsIC00LCAtMiwgMSwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMSwgMywgLTUsIDIsIDQsIDAsIDEsIC0yLCAtMywgMCwgLTIsIC01LCAtMSwgMCwgMCwgLTcsIC00LCAtMiwgMywgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMywgMCwgMSwgLTMsIC0xLCAwLCA1LCAtMiwgLTMsIC00LCAtMiwgLTMsIC01LCAwLCAxLCAwLCAtNywgLTUsIC0xLCAwLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAyLCAyLCAxLCAtMywgMywgMSwgLTIsIDYsIC0yLCAtMiwgMCwgLTIsIC0yLCAwLCAtMSwgLTEsIC0zLCAwLCAtMiwgMSwgMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTMsIC0yLCA1LCAyLCAtMiwgMiwgMSwgLTIsIC0xLCAwLCAtNSwgLTEsIDQsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIC0yLCAyLCA2LCAtMywgNCwgMiwgLTMsIC0zLCAtMiwgLTIsIC0xLCAyLCAtMywgLTMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDMsIDEsIDAsIC01LCAxLCAwLCAtMiwgMCwgLTIsIC0zLCA1LCAwLCAtNSwgLTEsIDAsIDAsIC0zLCAtNCwgLTIsIDEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDAsIC0yLCAtMywgLTUsIC0xLCAtMiwgLTMsIC0yLCAyLCA0LCAwLCA2LCAwLCAtMiwgLTIsIC0xLCAtNCwgLTIsIDIsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAtNiwgLTQsIC01LCAtNSwgLTUsIC0yLCAxLCAyLCAtNSwgMCwgOSwgLTUsIC0zLCAtMywgMCwgNywgLTEsIC00LCAtNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAwLCAtMSwgLTMsIDAsIC0xLCAwLCAwLCAtMiwgLTMsIC0xLCAtMiwgLTUsIDYsIDEsIDAsIC02LCAtNSwgLTEsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzEsIDAsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSwgLTEsIC0zLCAwLCAtMiwgLTMsIDEsIDIsIDEsIC0yLCAtMywgLTEsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMCwgMCwgLTIsIC0xLCAwLCAwLCAtMSwgMCwgLTIsIDAsIC0xLCAtMywgMCwgMSwgMywgLTUsIC0zLCAwLCAwLCAtMSwgMCwgLThdLFxuICAgICAgICAgICAgWy02LCAyLCAtNCwgLTcsIC04LCAtNSwgLTcsIC03LCAtMywgLTUsIC0yLCAtMywgLTQsIDAsIC02LCAtMiwgLTUsIDE3LCAwLCAtNiwgLTUsIC02LCAtNCwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTIsIC00LCAwLCAtNCwgLTQsIC01LCAwLCAtMSwgLTEsIC00LCAtMiwgNywgLTUsIC0zLCAtMywgMCwgMTAsIC0yLCAtMywgLTQsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTEsIC0yLCA0LCAyLCAtMiwgMiwgLTEsIC0xLCAtMSwgMCwgLTYsIC0yLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDIsIDMsIC00LCAxLCAzLCAwLCAxLCAtMiwgLTMsIDEsIC0yLCAtNCwgLTEsIDAsIDAsIC01LCAtMywgLTIsIDMsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgMCwgMSwgMywgLTUsIDMsIDMsIDAsIDIsIC0yLCAtMywgMCwgLTIsIC01LCAwLCAwLCAtMSwgLTYsIC00LCAtMiwgMiwgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0zLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMCwgMCwgLTQsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLThdLFxuICAgICAgICAgICAgWy04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgMV1dO1xuICAgICAgICB0aGlzLlNDSE5FSURFUiA9IFtbMTEuNiwgLTIuNywgOS43LCAtMS43LCAtMi43LCAtNi40LCAtMy45LCAtNS42LCA1LjEsIC01LjAsIDMuNiwgLTQuMiwgLTYuMywgLTEzLjAsIC03LjEsIC0xMS41LCAwLjQsIC02LjAsIC0xLjksIC01LjMsIC04LjUsIC0xMS4yLCAtOC45LCAtMTAuOCwgMi4xLCAwLjAsIDEuNCwgMC4yLCAtMTAuMiwgLTEzLjUsIC0xMy4wLCAtMTIuNSwgLTIuNiwgLTguNSwgLTUuMCwgLTguMSwgLTYuMywgLTkuOSwgLTcuNSwgLTkuMCwgLTcuMSwgLTEwLjIsIC04LjIsIC05LjIsIC04LjIsIC0xMi41LCAtMTEuMSwgLTExLjQsIC01MC4wLCAtMTQuOCwgLTUwLjAsIC0xMy44LCAtNy4zLCAtMTAuMSwgLTguNCwgLTkuMSwgLTUwLjAsIC0xMy4wLCAtMTMuNSwgLTEyLjQsIC0xMC43LCAtMTguMSwgLTExLjgsIC0xNy4yLF0sXG4gICAgICAgICAgICBbLTIuNywgMTMuMCwgLTMuMywgMTAuOSwgLTMuNSwgLTAuNCwgLTMuMywgLTEuOCwgLTUuNCwgNC42LCAtNS41LCAzLjAsIC0xMC4yLCAtNy45LCAtOS45LCAtOS42LCAtNS4wLCAwLjUsIC01LjUsIC0xLjAsIC0xMC4zLCAtOC4xLCAtOS40LCAtOS42LCAtOC4xLCAtNS4wLCAtNy4zLCAtNi4zLCAtMTMuNCwgLTExLjMsIC0xNC40LCAtMTIuOSwgLTYuMywgMC44LCAtNi40LCAtMS4xLCAtNy40LCAtNS4wLCAtNi4yLCAtNi41LCAtNS42LCAtMS42LCAtNC43LCAtMy4wLCAtMTAuOCwgLTguNywgLTExLjksIC0xMC4wLCAtNTAuMCwgLTYuMiwgLTUwLjAsIC03LjUsIC02LjMsIC00LjMsIC02LjIsIC01LjQsIC01MC4wLCAtNy4wLCAtMTYuMywgLTguMiwgLTEzLjIsIC0xMi4zLCAtMTMuMSwgLTEzLjMsXSxcbiAgICAgICAgICAgIFs5LjcsIC0zLjMsIDExLjYsIC0yLjgsIC00LjUsIC02LjcsIC0zLjEsIC02LjksIDMuMywgLTUuNSwgNC44LCAtNS4xLCAtOC45LCAtMTMuMiwgLTUuNywgLTEyLjYsIC0xLjUsIC02LjEsIC0wLjYsIC02LjEsIC0xMC4wLCAtMTEuOCwgLTguNiwgLTExLjksIDEuMiwgMC41LCAyLjIsIDAuMSwgLTExLjgsIC0xNC4wLCAtMTEuOSwgLTEzLjQsIC00LjksIC05LjEsIC0zLjQsIC04LjksIC04LjAsIC0xMC4wLCAtNy4yLCAtMTAuMCwgLTkuMSwgLTEwLjIsIC03LjEsIC05LjksIC0xMC4xLCAtMTMuMCwgLTEwLjYsIC0xMi43LCAtNTAuMCwgLTE0LjksIC01MC4wLCAtMTQuNCwgLTguOSwgLTEwLjgsIC04LjksIC0xMC40LCAtNTAuMCwgLTEzLjEsIC0xMS44LCAtMTMuMCwgLTEyLjQsIC0xOS40LCAtMTEuNSwgLTE3LjgsXSxcbiAgICAgICAgICAgIFstMS43LCAxMC45LCAtMi44LCAxMi45LCAtMi43LCAtMi4yLCAtMi44LCAwLjIsIC00LjgsIDIuOSwgLTUuMiwgNS4yLCAtOS4xLCAtOS41LCAtOS4wLCAtNy4wLCAtNC4wLCAtMS4wLCAtNS4wLCAxLjAsIC05LjAsIC04LjgsIC04LjksIC03LjcsIC03LjAsIC02LjgsIC03LjEsIC00LjMsIC0xMi40LCAtMTIuOSwgLTEzLjksIC0xMC4wLCAtNC45LCAtMC43LCAtNS42LCAxLjQsIC02LjAsIC02LjUsIC02LjIsIC00LjgsIC01LjEsIC0zLjIsIC01LjAsIC0xLjIsIC05LjgsIC05LjksIC0xMS4zLCAtOC4yLCAtNTAuMCwgLTcuNiwgLTUwLjAsIC01LjEsIC01LjUsIC01LjgsIC01LjksIC00LjIsIC01MC4wLCAtOC4zLCAtMTUuNSwgLTUuOSwgLTExLjYsIC0xNC4yLCAtMTIuMCwgLTExLjYsXSxcbiAgICAgICAgICAgIFstMi43LCAtMy41LCAtNC41LCAtMi43LCAxMS43LCA5LjAsIDEwLjYsIDkuNiwgLTMuMiwgLTAuNywgLTUuMSwgLTAuNCwgMC43LCAtNC42LCAtMC40LCAtMy42LCAtNC44LCAtOC45LCAtNi41LCAtNy44LCAtMS40LCAtNC4xLCAtMi45LCAtMy4zLCAtOC4wLCAtOS4xLCAtOC4wLCAtOC4yLCAtNi4wLCAtOS4zLCAtNy43LCAtOC41LCAtNi40LCAtMTAuMSwgLTcuNSwgLTguNiwgMi44LCAtMC43LCAwLjksIDAuMSwgLTUuOSwgLTcuMywgLTYuNSwgLTYuNSwgLTAuNCwgLTMuOSwgLTIuNiwgLTMuMSwgLTUwLjAsIC0xNC42LCAtNTAuMCwgLTEyLjYsIDIuOSwgMC4xLCAxLjgsIDEuMCwgLTUwLjAsIC05LjIsIC0xMy42LCAtNy43LCAtNC44LCAtMTIuMiwgLTYuMiwgLTExLjAsXSxcbiAgICAgICAgICAgIFstNi40LCAtMC40LCAtNi43LCAtMi4yLCA5LjAsIDEyLjMsIDkuOCwgOS42LCAtNy4xLCAyLjQsIC03LjIsIDAuMywgLTIuOSwgLTEuMiwgLTMuMCwgLTMuMywgLTcuNiwgLTYuNywgLTguMSwgLTcuOSwgLTQuOSwgLTEuOSwgLTQuNSwgLTMuOCwgLTkuNSwgLTcuOCwgLTkuMywgLTguOSwgLTkuNCwgLTcuMSwgLTkuMCwgLTkuMCwgLTkuNCwgLTcuNSwgLTkuMywgLTkuMiwgLTAuNywgMi42LCAwLjIsIC0wLjEsIC04LjAsIC00LjYsIC03LjcsIC02LjEsIC0zLjYsIC0xLjAsIC00LjEsIC0zLjEsIC01MC4wLCAtMTEuNiwgLTUwLjAsIC0xMS42LCAwLjIsIDIuMywgMC40LCAwLjUsIC01MC4wLCAtNi41LCAtMTUuMywgLTcuOCwgLTguNCwgLTkuNSwgLTguMywgLTExLjEsXSxcbiAgICAgICAgICAgIFstMy45LCAtMy4zLCAtMy4xLCAtMi44LCAxMC42LCA5LjgsIDEyLjIsIDkuOCwgLTQuOSwgMC4xLCAtMy42LCAtMC4yLCAtMS43LCAtNC4xLCAwLjksIC0zLjUsIC01LjksIC04LjksIC01LjYsIC04LjUsIC0zLjksIC0zLjksIC0yLjIsIC00LjUsIC03LjMsIC03LjUsIC02LjQsIC04LjUsIC03LjEsIC04LjIsIC02LjcsIC03LjgsIC03LjksIC05LjEsIC03LjEsIC05LjQsIDAuOSwgLTAuMiwgMi41LCAtMC4zLCAtNi45LCAtNi41LCAtNS41LCAtNi44LCAtMS43LCAtMy40LCAtMS43LCAtMi44LCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTEuNSwgMS41LCAwLjcsIDIuNywgMC42LCAtNTAuMCwgLTguOSwgLTEyLjEsIC03LjQsIC02LjEsIC0xMS41LCAtNS40LCAtMTAuNCxdLFxuICAgICAgICAgICAgWy01LjYsIC0xLjgsIC02LjksIDAuMiwgOS42LCA5LjYsIDkuOCwgMTEuNiwgLTYuNiwgMC45LCAtNy4yLCAyLjUsIC0yLjMsIC0zLjQsIC0yLjMsIC0wLjYsIC02LjUsIC04LjIsIC04LjAsIC02LjMsIC0zLjcsIC0zLjUsIC0zLjksIC0xLjYsIC05LjksIC04LjksIC05LjYsIC03LjAsIC04LjYsIC04LjksIC04LjgsIC02LjgsIC04LjYsIC04LjIsIC04LjgsIC02LjgsIDAuMywgMC4xLCAwLjIsIDIuNCwgLTcuNCwgLTYuMiwgLTYuOSwgLTQuNCwgLTIuOSwgLTIuOSwgLTMuNSwgLTAuOSwgLTUwLjAsIC0xMi4yLCAtNTAuMCwgLTEwLjEsIDEuMiwgMC42LCAxLjIsIDIuNCwgLTUwLjAsIC03LjYsIC0xNi4xLCAtNS44LCAtNy4yLCAtMTAuOCwgLTcuNCwgLTkuMCxdLFxuICAgICAgICAgICAgWzUuMSwgLTUuNCwgMy4zLCAtNC44LCAtMy4yLCAtNy4xLCAtNC45LCAtNi42LCAxMy4zLCAtMi44LCAxMS4yLCAtMS45LCAtNS43LCAtMTIuNSwgLTcuMiwgLTExLjYsIC0wLjcsIC00LjgsIC0zLjEsIC00LjMsIC0xMC4wLCAtMTEuNiwgLTguOCwgLTExLjcsIDEwLjUsIDcuNywgOS4xLCA4LjUsIC05LjgsIC0xMi43LCAtMTEuNywgLTExLjgsIC02LjMsIC0xMS40LCAtOC44LCAtMTEuMCwgLTcuNSwgLTEwLjMsIC04LjMsIC05LjksIC0xLjksIC02LjcsIC00LjEsIC02LjQsIC03LjksIC0xMi41LCAtMTEuNCwgLTExLjcsIC01MC4wLCAtMTQuMCwgLTUwLjAsIC0xMy4yLCAtOC41LCAtMTAuNCwgLTkuMSwgLTkuNiwgLTUwLjAsIC05LjgsIC03LjcsIC04LjgsIC0xMC4zLCAtMTcuOSwgLTExLjgsIC0xNi4wLF0sXG4gICAgICAgICAgICBbLTUuMCwgNC42LCAtNS41LCAyLjksIC0wLjcsIDIuNCwgMC4xLCAwLjksIC0yLjgsIDEyLjgsIC0yLjYsIDExLjAsIC04LjQsIC02LjMsIC04LjMsIC03LjcsIC02LjEsIC0yLjksIC02LjUsIC00LjIsIC04LjUsIC01LjksIC03LjUsIC03LjcsIC01LjUsIC0yLjQsIC01LjUsIC00LjEsIC0xMi45LCAtMTAuMywgLTEyLjcsIC0xMS4zLCAtNy40LCAtMy4xLCAtNy40LCAtNC45LCAtNC40LCAtMS44LCAtMy41LCAtMy41LCAtMS42LCAzLjAsIC0wLjgsIDAuOSwgLTguNCwgLTYuMywgLTkuNiwgLTcuMywgLTUwLjAsIC05LjAsIC01MC4wLCAtOS43LCAtMi4zLCAtMC4yLCAtMS4yLCAtMS41LCAtNTAuMCwgLTAuNywgLTEzLjMsIC0yLjAsIC0xMS44LCAtMTEuOSwgLTEyLjMsIC0xMi43LF0sXG4gICAgICAgICAgICBbMy42LCAtNS41LCA0LjgsIC01LjIsIC01LjEsIC03LjIsIC0zLjYsIC03LjIsIDExLjIsIC0yLjYsIDEzLjQsIC0yLjEsIC03LjcsIC0xMi41LCAtNS4zLCAtMTEuOSwgLTIuMiwgLTQuNCwgLTEuOSwgLTQuOCwgLTEwLjIsIC0xMS41LCAtOC4xLCAtMTIuMCwgOS4zLCA4LjIsIDEwLjAsIDguMCwgLTEwLjgsIC0xMS45LCAtMTAuNywgLTEyLjQsIC04LjIsIC0xMS44LCAtNi45LCAtMTEuNSwgLTguNCwgLTkuOSwgLTcuMSwgLTEwLjYsIC00LjcsIC02LjgsIC0xLjIsIC03LjAsIC05LjgsIC0xMS42LCAtOS42LCAtMTIuMSwgLTUwLjAsIC0xNC4xLCAtNTAuMCwgLTEyLjcsIC0xMC4wLCAtMTAuOCwgLTguOCwgLTEwLjUsIC01MC4wLCAtOS4yLCAtNC4yLCAtOS4zLCAtMTEuMCwgLTE4LjIsIC0xMS4xLCAtMTYuMSxdLFxuICAgICAgICAgICAgWy00LjIsIDMuMCwgLTUuMSwgNS4yLCAtMC40LCAwLjMsIC0wLjIsIDIuNSwgLTEuOSwgMTEuMCwgLTIuMSwgMTMuMiwgLTcuNiwgLTguNSwgLTguMCwgLTUuMywgLTUuNiwgLTQuNSwgLTYuOCwgLTIuNCwgLTcuOCwgLTcuOSwgLTcuOSwgLTYuMiwgLTUuNywgLTUuMSwgLTUuNCwgLTIuMSwgLTEyLjQsIC0xMi4zLCAtMTMuMSwgLTEwLjEsIC02LjYsIC00LjQsIC02LjksIC0yLjYsIC0zLjYsIC0zLjgsIC0zLjcsIC0yLjAsIC0xLjQsIDAuOCwgLTAuOSwgMy4wLCAtOC4yLCAtOC4xLCAtOS4yLCAtNS44LCAtNTAuMCwgLTEwLjEsIC01MC4wLCAtNy40LCAtMS43LCAtMi4wLCAtMS41LCAtMC41LCAtNTAuMCwgLTIuMSwgLTEyLjYsIC0wLjQsIC0xMS42LCAtMTMuOSwgLTExLjQsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTYuMywgLTEwLjIsIC04LjksIC05LjEsIDAuNywgLTIuOSwgLTEuNywgLTIuMywgLTUuNywgLTguNCwgLTcuNywgLTcuNiwgMTMuMiwgOS42LCAzLjUsIDkuNywgLTguNywgLTEyLjQsIC0xMC43LCAtMTAuNywgLTcuOCwgLTEwLjIsIC04LjgsIC05LjYsIC05LjUsIC0xMS45LCAtMTAuOSwgLTEwLjUsIDIuMywgLTAuNCwgLTAuMiwgLTAuMywgLTkuNywgLTE1LjUsIC0xMS40LCAtMTMuNywgLTMuMCwgLTYuNCwgLTQuMSwgLTUuNCwgLTkuNiwgLTExLjksIC0xMC41LCAtMTEuOCwgNi4yLCAzLjMsIDMuNywgMy42LCAtNTAuMCwgLTEzLjYsIC01MC4wLCAtMTEuOSwgLTUuNiwgLTguOCwgLTcuMiwgLTguOSwgLTUwLjAsIC0xMi40LCAtMTQuMSwgLTExLjYsIDIuOCwgLTYuNCwgMC41LCAtNS4yLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjksIC0xMy4yLCAtOS41LCAtNC42LCAtMS4yLCAtNC4xLCAtMy40LCAtMTIuNSwgLTYuMywgLTEyLjUsIC04LjUsIDkuNiwgMTIuNywgMC4yLCAxMC41LCAtMTIuNCwgLTExLjYsIC0xMy4yLCAtMTIuMCwgLTEyLjQsIC0xMC4xLCAtMTEuNiwgLTEyLjAsIC0xNS4xLCAtMTMuMSwgLTE0LjMsIC0xMy40LCAtMS40LCAxLjQsIC0xLjYsIC0wLjUsIC0xNC45LCAtMTQuMywgLTE1LjIsIC0xNi44LCAtNy43LCAtNC43LCAtNi4zLCAtNi42LCAtMTQuNiwgLTEwLjgsIC0xMi44LCAtMTMuMCwgMi4zLCA2LjAsIDIuNSwgMy42LCAtNTAuMCwgLTExLjIsIC01MC4wLCAtMTEuOSwgLTEwLjUsIC05LjIsIC0xMC41LCAtMTAuNSwgLTUwLjAsIC0xMC4zLCAtMTYuMiwgLTExLjMsIC0xLjcsIC0zLjcsIC0yLjUsIC01LjQsXSxcbiAgICAgICAgICAgIFstNy4xLCAtOS45LCAtNS43LCAtOS4wLCAtMC40LCAtMy4wLCAwLjksIC0yLjMsIC03LjIsIC04LjMsIC01LjMsIC04LjAsIDMuNSwgMC4yLCAxNC4zLCAxLjAsIC03LjMsIC0xMS4yLCAtNi45LCAtOS43LCAtOC41LCAtMTAuMiwgLTcuNywgLTkuOCwgLTEwLjAsIC0xMC40LCAtOC40LCAtMTAuMiwgMS4wLCAtMC42LCAxLjcsIC0wLjUsIC0xMS4xLCAtMTQuOCwgLTkuNywgLTE0LjUsIC0zLjcsIC01LjgsIC0zLjEsIC01LjYsIC0xMC40LCAtMTEuNSwgLTguMiwgLTExLjEsIDAuNiwgLTEuNiwgMS42LCAtMS4xLCAtNTAuMCwgLTEyLjQsIC01MC4wLCAtMTEuNSwgLTUuNSwgLTguMCwgLTQuOSwgLTcuMiwgLTUwLjAsIC0xMi40LCAtMTAuMywgLTExLjYsIDAuNywgLTYuOCwgMi40LCAtNi4wLF0sXG4gICAgICAgICAgICBbLTExLjUsIC05LjYsIC0xMi42LCAtNy4wLCAtMy42LCAtMy4zLCAtMy41LCAtMC42LCAtMTEuNiwgLTcuNywgLTExLjksIC01LjMsIDkuNywgMTAuNSwgMS4wLCAxMi42LCAtMTIuMCwgLTEyLjIsIC0xMi41LCAtOS43LCAtMTEuMSwgLTExLjIsIC0xMS45LCAtOS40LCAtMTIuOSwgLTE0LjMsIC0xNC4wLCAtMTEuOSwgLTEuMCwgLTAuNCwgLTEuNiwgMS4yLCAtMTMuOSwgLTE1LjQsIC0xMy43LCAtMTIuNiwgLTYuMiwgLTYuNywgLTYuMywgLTQuNCwgLTEzLjAsIC0xMi4yLCAtMTMuMCwgLTEwLjQsIDIuOSwgMy44LCAyLjUsIDUuOCwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTEwLjIsIC05LjYsIC05LjcsIC05LjYsIC04LjMsIC01MC4wLCAtMTEuNiwgLTE1LjQsIC05LjQsIC0xLjEsIC01LjQsIC0xLjYsIC0zLjMsXSxcbiAgICAgICAgICAgIFswLjQsIC01LjAsIC0xLjUsIC00LjAsIC00LjgsIC03LjYsIC01LjksIC02LjUsIC0wLjcsIC02LjEsIC0yLjIsIC01LjYsIC04LjcsIC0xMi40LCAtNy4zLCAtMTIuMCwgMTIuOCwgMi4zLCAxMC4yLCAzLjAsIDAuMCwgLTMuNCwgLTAuNywgLTMuMiwgMi41LCAtMC44LCAwLjksIDAuMiwgLTMuMCwgLTcuMiwgLTUuNywgLTYuMSwgLTAuMiwgLTYuNiwgLTEuOCwgLTYuMCwgLTUuMywgLTguMiwgLTUuNywgLTcuNiwgLTYuNywgLTkuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTEwLjUsIC05LjYsIC05LjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMiwgLTQuMywgLTYuOCwgLTUuNywgLTYuMywgLTUwLjAsIC05LjUsIC05LjYsIC04LjksIC02LjIsIC0xMi44LCAtNi44LCAtMTEuOCxdLFxuICAgICAgICAgICAgWy02LjAsIDAuNSwgLTYuMSwgLTEuMCwgLTguOSwgLTYuNywgLTguOSwgLTguMiwgLTQuOCwgLTIuOSwgLTQuNCwgLTQuNSwgLTEyLjQsIC0xMS42LCAtMTEuMiwgLTEyLjIsIDIuMywgMTQuNiwgMS45LCAxMi45LCAtNS41LCAtMi42LCAtNC4xLCAtNC43LCAtMS4yLCAzLjAsIC0xLjEsIDEuNiwgLTguMCwgLTQuNywgLTguNywgLTYuMCwgLTguMiwgLTQuNywgLTcuOCwgLTYuNywgLTEwLjAsIC04LjMsIC04LjksIC05LjksIC0xMC44LCAtNy4xLCAtMTAuMCwgLTkuMiwgLTExLjYsIC0xMC4xLCAtMTIuMywgLTExLjksIC01MC4wLCAyLjIsIC01MC4wLCAwLjksIC03LjksIC01LjksIC03LjQsIC02LjksIC01MC4wLCAtNC42LCAtMTEuNiwgLTUuNiwgLTkuNywgLTUuOSwgLTkuOSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xLjksIC01LjUsIC0wLjYsIC01LjAsIC02LjUsIC04LjEsIC01LjYsIC04LjAsIC0zLjEsIC02LjUsIC0xLjksIC02LjgsIC0xMC43LCAtMTMuMiwgLTYuOSwgLTEyLjUsIDEwLjIsIDEuOSwgMTEuOSwgMi4xLCAtMi4zLCAtNC4xLCAtMC41LCAtNC42LCAtMC4xLCAtMC45LCAyLjQsIC0wLjgsIC01LjEsIC02LjksIC00LjgsIC02LjcsIC0yLjMsIC03LjEsIC0wLjgsIC03LjIsIC03LjIsIC04LjAsIC01LjYsIC04LjUsIC05LjQsIC05LjcsIC03LjIsIC05LjgsIC05LjIsIC0xMS4xLCAtOS41LCAtMTAuNywgLTUwLjAsIC04LjcsIC01MC4wLCAtOC42LCAtNi4xLCAtNy41LCAtNS41LCAtNy43LCAtNTAuMCwgLTEwLjQsIC03LjcsIC0xMC4wLCAtNy4zLCAtMTMuNiwgLTYuNCwgLTEzLjMsXSxcbiAgICAgICAgICAgIFstNS4zLCAtMS4wLCAtNi4xLCAxLjAsIC03LjgsIC03LjksIC04LjUsIC02LjMsIC00LjMsIC00LjIsIC00LjgsIC0yLjQsIC0xMC43LCAtMTIuMCwgLTkuNywgLTkuNywgMy4wLCAxMi45LCAyLjEsIDE0LjcsIC00LjksIC0zLjgsIC00LjAsIC0yLjQsIC0xLjAsIDAuOCwgLTEuMywgMy40LCAtNy42LCAtNS43LCAtOC4xLCAtMy41LCAtNi44LCAtNS44LCAtNy4yLCAtNC4yLCAtOC45LCAtMTAuMiwgLTguNCwgLTguMiwgLTkuOSwgLTguNCwgLTkuNywgLTYuNCwgLTExLjEsIC0xMS4xLCAtMTEuOCwgLTEwLjAsIC01MC4wLCAwLjQsIC01MC4wLCAyLjYsIC03LjIsIC03LjAsIC03LjQsIC01LjEsIC01MC4wLCAtNS43LCAtOS44LCAtMy4yLCAtOC40LCAtNy40LCAtOC45LCAtNS45LF0sXG4gICAgICAgICAgICBbLTguNSwgLTEwLjMsIC0xMC4wLCAtOS4wLCAtMS40LCAtNC45LCAtMy45LCAtMy43LCAtMTAuMCwgLTguNSwgLTEwLjIsIC03LjgsIC03LjgsIC0xMi40LCAtOC41LCAtMTEuMSwgMC4wLCAtNS41LCAtMi4zLCAtNC45LCAxMi42LCAxMC4wLCAxMS4xLCAxMC41LCAtNi4wLCAtOC4zLCAtNi45LCAtNy41LCAtMi4yLCAtNy40LCAtNS4zLCAtNS45LCAtOC45LCAtMTIuNSwgLTkuNCwgLTExLjYsIC0wLjcsIC0zLjksIC0yLjMsIC0zLjAsIC05LjEsIC05LjgsIC05LjIsIC05LjUsIC01LjYsIC05LjAsIC04LjAsIC04LjUsIC01MC4wLCAtMTUuMywgLTUwLjAsIC0xNC4xLCAyLjMsIC0xLjQsIDAuMywgLTAuNSwgLTUwLjAsIC0xMy42LCAtMTQuMywgLTExLjUsIC01LjMsIC0xMy43LCAtNi4xLCAtMTIuNyxdLFxuICAgICAgICAgICAgWy0xMS4yLCAtOC4xLCAtMTEuOCwgLTguOCwgLTQuMSwgLTEuOSwgLTMuOSwgLTMuNSwgLTExLjYsIC01LjksIC0xMS41LCAtNy45LCAtMTAuMiwgLTEwLjEsIC0xMC4yLCAtMTEuMiwgLTMuNCwgLTIuNiwgLTQuMSwgLTMuOCwgMTAuMCwgMTMuMSwgMTAuNywgMTAuNiwgLTguMSwgLTUuMiwgLTguMCwgLTYuNywgLTYuMSwgLTMuNywgLTcuNSwgLTUuNiwgLTExLjEsIC0xMC4zLCAtMTAuNiwgLTExLjksIC0zLjIsIC0xLjAsIC0yLjIsIC0yLjgsIC0xMC41LCAtOC4xLCAtOS40LCAtOS41LCAtOC4zLCAtNi45LCAtOS40LCAtOC44LCAtNTAuMCwgLTExLjMsIC01MC4wLCAtMTIuOCwgLTAuNiwgMi4yLCAtMC4zLCAwLjEsIC01MC4wLCAtMTAuMSwgLTE3LjUsIC0xMS4xLCAtOC42LCAtOS45LCAtOC42LCAtMTEuOSxdLFxuICAgICAgICAgICAgWy04LjksIC05LjQsIC04LjYsIC04LjksIC0yLjksIC00LjUsIC0yLjIsIC0zLjksIC04LjgsIC03LjUsIC04LjEsIC03LjksIC04LjgsIC0xMS42LCAtNy43LCAtMTEuOSwgLTAuNywgLTQuMSwgLTAuNSwgLTQuMCwgMTEuMSwgMTAuNywgMTMuMiwgMTAuNCwgLTUuNywgLTUuOCwgLTMuNSwgLTYuMSwgLTMuNiwgLTYuNSwgLTMuMywgLTUuNSwgLTkuNCwgLTExLjAsIC04LjcsIC0xMS4yLCAtMS44LCAtMi43LCAwLjcsIC0zLjAsIC05LjEsIC04LjIsIC03LjMsIC05LjQsIC03LjIsIC04LjIsIC03LjIsIC04LjIsIC01MC4wLCAtMTMuMiwgLTUwLjAsIC0xMy4zLCAwLjUsIC0wLjksIDEuOCwgLTAuNiwgLTUwLjAsIC0xMS40LCAtMTEuMSwgLTEwLjUsIC02LjEsIC0xMi45LCAtNS4wLCAtMTEuOSxdLFxuICAgICAgICAgICAgWy0xMC44LCAtOS42LCAtMTEuOSwgLTcuNywgLTMuMywgLTMuOCwgLTQuNSwgLTEuNiwgLTExLjcsIC03LjcsIC0xMi4wLCAtNi4yLCAtOS42LCAtMTIuMCwgLTkuOCwgLTkuNCwgLTMuMiwgLTQuNywgLTQuNiwgLTIuNCwgMTAuNSwgMTAuNiwgMTAuNCwgMTIuNiwgLTguMiwgLTcuOSwgLTkuMCwgLTQuNywgLTYuMSwgLTYuMCwgLTcuNSwgLTIuOSwgLTEwLjksIC0xMi4yLCAtMTEuMiwgLTEwLjksIC0yLjQsIC0yLjksIC0yLjcsIC0wLjksIC0xMC40LCAtOS43LCAtMTAuMiwgLTguMCwgLTguNCwgLTkuMSwgLTkuMywgLTYuNSwgLTUwLjAsIC0xMy4zLCAtNTAuMCwgLTExLjAsIC0wLjAsIC0wLjQsIC0wLjQsIDIuMywgLTUwLjAsIC0xMC45LCAtMTcuMiwgLTguMywgLTguMywgLTEyLjcsIC03LjgsIC05LjMsXSxcbiAgICAgICAgICAgIFsyLjEsIC04LjEsIDEuMiwgLTcuMCwgLTguMCwgLTkuNSwgLTcuMywgLTkuOSwgMTAuNSwgLTUuNSwgOS4zLCAtNS43LCAtOS41LCAtMTUuMSwgLTEwLjAsIC0xMi45LCAyLjUsIC0xLjIsIC0wLjEsIC0xLjAsIC02LjAsIC04LjEsIC01LjcsIC04LjIsIDEzLjgsIDExLjMsIDExLjgsIDEyLjEsIC02LjAsIC05LjEsIC05LjAsIC05LjUsIC04LjksIC0xMy40LCAtMTAuMCwgLTEzLjEsIC05LjksIC0xMS43LCAtOS44LCAtMTIuOCwgLTUuOSwgLTkuNCwgLTYuNSwgLTguMSwgLTEwLjcsIC0xNC4wLCAtMTMuMywgLTEzLjksIC01MC4wLCAtMTEuOSwgLTUwLjAsIC05LjcsIC04LjksIC0xMC44LCAtOS4wLCAtMTEuMSwgLTUwLjAsIC02LjUsIC01LjMsIC02LjMsIC0xMC41LCAtMTYuMiwgLTEwLjQsIC0xNS4yLF0sXG4gICAgICAgICAgICBbMC4wLCAtNS4wLCAwLjUsIC02LjgsIC05LjEsIC03LjgsIC03LjUsIC04LjksIDcuNywgLTIuNCwgOC4yLCAtNS4xLCAtMTEuOSwgLTEzLjEsIC0xMC40LCAtMTQuMywgLTAuOCwgMy4wLCAtMC45LCAwLjgsIC04LjMsIC01LjIsIC01LjgsIC03LjksIDExLjMsIDE1LjAsIDExLjIsIDEyLjgsIC05LjcsIC01LjMsIC05LjIsIC03LjgsIC0xMS43LCAtMTAuNiwgLTEwLjEsIC0xMi4yLCAtMTEuNywgLTguOCwgLTguOSwgLTExLjgsIC05LjMsIC01LjAsIC04LjAsIC04LjIsIC0xMy42LCAtMTEuNCwgLTEyLjgsIC0xMy4wLCAtNTAuMCwgLTcuMiwgLTUwLjAsIC04LjQsIC0xMS4wLCAtNy43LCAtOC43LCAtMTAuMiwgLTUwLjAsIC0xLjUsIC03LjEsIC00LjksIC0xMS4yLCAtMTEuNiwgLTExLjYsIC0xNS4wLF0sXG4gICAgICAgICAgICBbMS40LCAtNy4zLCAyLjIsIC03LjEsIC04LjAsIC05LjMsIC02LjQsIC05LjYsIDkuMSwgLTUuNSwgMTAuMCwgLTUuNCwgLTEwLjksIC0xNC4zLCAtOC40LCAtMTQuMCwgMC45LCAtMS4xLCAyLjQsIC0xLjMsIC02LjksIC04LjAsIC0zLjUsIC05LjAsIDExLjgsIDExLjIsIDEzLjQsIDExLjQsIC03LjMsIC04LjgsIC02LjUsIC04LjUsIC0xMC4wLCAtMTIuNSwgLTcuOCwgLTEyLjUsIC05LjYsIC0xMS4wLCAtNy4xLCAtMTAuNywgLTcuOSwgLTguMCwgLTQuMywgLTkuNCwgLTExLjQsIC0xMi4zLCAtMTAuOSwgLTEyLjksIC01MC4wLCAtMTEuOCwgLTUwLjAsIC0xMS4yLCAtOS40LCAtOS44LCAtNy4zLCAtMTAuNSwgLTUwLjAsIC02LjIsIC0yLjIsIC02LjcsIC05LjgsIC0xNS4yLCAtOC41LCAtMTQuOSxdLFxuICAgICAgICAgICAgWzAuMiwgLTYuMywgMC4xLCAtNC4zLCAtOC4yLCAtOC45LCAtOC41LCAtNy4wLCA4LjUsIC00LjEsIDguMCwgLTIuMSwgLTEwLjUsIC0xMy40LCAtMTAuMiwgLTExLjksIDAuMiwgMS42LCAtMC44LCAzLjQsIC03LjUsIC02LjcsIC02LjEsIC00LjcsIDEyLjEsIDEyLjgsIDExLjQsIDE0LjcsIC04LjcsIC03LjQsIC05LjQsIC01LjMsIC05LjksIC0xMS44LCAtMTAuNSwgLTEwLjMsIC05LjksIC0xMC4xLCAtOS4zLCAtOS4zLCAtOC4xLCAtNy4yLCAtOC4wLCAtNS4yLCAtMTIuMCwgLTEyLjEsIC0xMi42LCAtMTAuOSwgLTUwLjAsIC03LjksIC01MC4wLCAtNS4zLCAtOS4zLCAtOC44LCAtOC45LCAtNy4wLCAtNTAuMCwgLTMuNiwgLTcuMSwgLTEuMiwgLTEwLjIsIC0xMi43LCAtOS45LCAtMTEuMCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMTMuNCwgLTExLjgsIC0xMi40LCAtNi4wLCAtOS40LCAtNy4xLCAtOC42LCAtOS44LCAtMTIuOSwgLTEwLjgsIC0xMi40LCAyLjMsIC0xLjQsIDEuMCwgLTEuMCwgLTMuMCwgLTguMCwgLTUuMSwgLTcuNiwgLTIuMiwgLTYuMSwgLTMuNiwgLTYuMSwgLTYuMCwgLTkuNywgLTcuMywgLTguNywgMTEuMiwgNy45LCA4LjksIDguMSwgLTEyLjEsIC0xNy40LCAtMTMuMiwgLTE2LjgsIC02LjMsIC05LjUsIC03LjUsIC04LjgsIC0xMi43LCAtMTUuMiwgLTEzLjEsIC0xNC4yLCAwLjAsIC0zLjEsIC0xLjgsIC0zLjEsIC01MC4wLCAtMTAuNywgLTUwLjAsIC05LjMsIC00LjYsIC04LjksIC01LjksIC04LjMsIC01MC4wLCAtMTIuOCwgLTkuNiwgLTEwLjYsIDkuNSwgLTMuMiwgOC4yLCAtMi44LF0sXG4gICAgICAgICAgICBbLTEzLjUsIC0xMS4zLCAtMTQuMCwgLTEyLjksIC05LjMsIC03LjEsIC04LjIsIC04LjksIC0xMi43LCAtMTAuMywgLTExLjksIC0xMi4zLCAtMC40LCAxLjQsIC0wLjYsIC0wLjQsIC03LjIsIC00LjcsIC02LjksIC01LjcsIC03LjQsIC0zLjcsIC02LjUsIC02LjAsIC05LjEsIC01LjMsIC04LjgsIC03LjQsIDcuOSwgMTEuOSwgNy44LCA5LjMsIC0xNS4yLCAtMTUuMSwgLTE0LjYsIC0xNy4yLCAtOS43LCAtNy4zLCAtOC4yLCAtOS4yLCAtMTUuMCwgLTEyLjgsIC0xNC4xLCAtMTQuOSwgLTIuOCwgMC4yLCAtMi45LCAtMi4zLCAtNTAuMCwgLTcuNCwgLTUwLjAsIC04LjcsIC05LjQsIC03LjMsIC05LjQsIC05LjQsIC01MC4wLCAtOC4wLCAtMTEuOSwgLTkuNywgNi41LCAwLjUsIDYuNCwgLTEuOCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtMTQuNCwgLTExLjksIC0xMy45LCAtNy43LCAtOS4wLCAtNi43LCAtOC44LCAtMTEuNywgLTEyLjcsIC0xMC43LCAtMTMuMSwgLTAuMiwgLTEuNiwgMS43LCAtMS42LCAtNS43LCAtOC43LCAtNC44LCAtOC4xLCAtNS4zLCAtNy41LCAtMy4zLCAtNy41LCAtOS4wLCAtOS4yLCAtNi41LCAtOS40LCA4LjksIDcuOCwgMTAuMSwgNy44LCAtMTQuMywgLTE3LjcsIC0xMy4wLCAtMTcuOCwgLTguMCwgLTkuNCwgLTYuMiwgLTkuMiwgLTE1LjEsIC0xNC45LCAtMTIuMiwgLTE0LjksIC0xLjgsIC0zLjIsIC0wLjgsIC0zLjIsIC01MC4wLCAtMTAuOCwgLTUwLjAsIC05LjksIC03LjMsIC05LjYsIC02LjQsIC05LjQsIC01MC4wLCAtMTIuMywgLTguNywgLTExLjMsIDcuNiwgLTMuMywgOC43LCAtMi45LF0sXG4gICAgICAgICAgICBbLTEyLjUsIC0xMi45LCAtMTMuNCwgLTEwLjAsIC04LjUsIC05LjAsIC03LjgsIC02LjgsIC0xMS44LCAtMTEuMywgLTEyLjQsIC0xMC4xLCAtMC4zLCAtMC41LCAtMC41LCAxLjIsIC02LjEsIC02LjAsIC02LjcsIC0zLjUsIC01LjksIC01LjYsIC01LjUsIC0yLjksIC05LjUsIC03LjgsIC04LjUsIC01LjMsIDguMSwgOS4zLCA3LjgsIDExLjgsIC0xNC40LCAtMTUuNywgLTE0LjUsIC0xNC42LCAtOC40LCAtOC43LCAtNy45LCAtNy4xLCAtMTQuMywgLTEzLjgsIC0xMy44LCAtMTIuMywgLTIuNCwgLTIuMiwgLTIuOSwgLTAuMiwgLTUwLjAsIC04LjksIC01MC4wLCAtNy4xLCAtOC4xLCAtOS4xLCAtOC43LCAtNi42LCAtNTAuMCwgLTkuNywgLTExLjQsIC04LjAsIDYuOCwgLTEuOCwgNi45LCAwLjQsXSxcbiAgICAgICAgICAgIFstMi42LCAtNi4zLCAtNC45LCAtNC45LCAtNi40LCAtOS40LCAtNy45LCAtOC42LCAtNi4zLCAtNy40LCAtOC4yLCAtNi42LCAtOS43LCAtMTQuOSwgLTExLjEsIC0xMy45LCAtMC4yLCAtOC4yLCAtMi4zLCAtNi44LCAtOC45LCAtMTEuMSwgLTkuNCwgLTEwLjksIC04LjksIC0xMS43LCAtMTAuMCwgLTkuOSwgLTEyLjEsIC0xNS4yLCAtMTQuMywgLTE0LjQsIDExLjEsIDIuOSwgOS4yLCAzLjUsIC0zLjAsIC03LjAsIC00LjMsIC02LjIsIC0yLjIsIC02LjYsIC0zLjcsIC01LjcsIC02LjAsIC0xMC40LCAtOC42LCAtOS41LCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTMuOSwgLTcuOCwgLTEwLjUsIC04LjcsIC05LjYsIC01MC4wLCAtMTYuNSwgLTE3LjEsIC0xNC44LCAtMTIuMSwgLTE4LjksIC0xMi40LCAtMTcuNCxdLFxuICAgICAgICAgICAgWy04LjUsIDAuOCwgLTkuMSwgLTAuNywgLTEwLjEsIC03LjUsIC05LjEsIC04LjIsIC0xMS40LCAtMy4xLCAtMTEuOCwgLTQuNCwgLTE1LjUsIC0xNC4zLCAtMTQuOCwgLTE1LjQsIC02LjYsIC00LjcsIC03LjEsIC01LjgsIC0xMi41LCAtMTAuMywgLTExLjAsIC0xMi4yLCAtMTMuNCwgLTEwLjYsIC0xMi41LCAtMTEuOCwgLTE3LjQsIC0xNS4xLCAtMTcuNywgLTE1LjcsIDIuOSwgMTIuNSwgMy4xLCAxMC4zLCAtNy43LCAtNS4yLCAtNi4yLCAtNy4zLCAtNS40LCAtMS43LCAtNS40LCAtMy43LCAtMTEuNiwgLTkuMSwgLTEzLjAsIC0xMC44LCAtNTAuMCwgLTEwLjMsIC01MC4wLCAtMTEuMiwgLTkuOCwgLTguMywgLTkuMSwgLTkuNywgLTUwLjAsIC0xMi43LCAtMjAuNiwgLTEzLjEsIC0xNi4wLCAtMTYuNiwgLTE3LjAsIC0xOC40LF0sXG4gICAgICAgICAgICBbLTUuMCwgLTYuNCwgLTMuNCwgLTUuNiwgLTcuNSwgLTkuMywgLTcuMSwgLTguOCwgLTguOCwgLTcuNCwgLTYuOSwgLTYuOSwgLTExLjQsIC0xNS4yLCAtOS43LCAtMTMuNywgLTEuOCwgLTcuOCwgLTAuOCwgLTcuMiwgLTkuNCwgLTEwLjYsIC04LjcsIC0xMS4yLCAtMTAuMCwgLTEwLjEsIC03LjgsIC0xMC41LCAtMTMuMiwgLTE0LjYsIC0xMy4wLCAtMTQuNSwgOS4yLCAzLjEsIDEwLjgsIDMuMCwgLTQuNSwgLTYuNywgLTIuNywgLTYuNywgLTUuMCwgLTYuOCwgLTIuNSwgLTYuNywgLTcuNSwgLTEwLjQsIC03LjQsIC0xMC4yLCAtNTAuMCwgLTE1LjUsIC01MC4wLCAtMTQuMiwgLTguOSwgLTEwLjIsIC04LjUsIC0xMC4wLCAtNTAuMCwgLTE1LjYsIC0xNS4zLCAtMTUuNSwgLTEzLjAsIC0xOC44LCAtMTIuNiwgLTE4LjMsXSxcbiAgICAgICAgICAgIFstOC4xLCAtMS4xLCAtOC45LCAxLjQsIC04LjYsIC05LjIsIC05LjQsIC02LjgsIC0xMS4wLCAtNC45LCAtMTEuNSwgLTIuNiwgLTEzLjcsIC0xNi44LCAtMTQuNSwgLTEyLjYsIC02LjAsIC02LjcsIC03LjIsIC00LjIsIC0xMS42LCAtMTEuOSwgLTExLjIsIC0xMC45LCAtMTMuMSwgLTEyLjIsIC0xMi41LCAtMTAuMywgLTE2LjgsIC0xNy4yLCAtMTcuOCwgLTE0LjYsIDMuNSwgMTAuMywgMy4wLCAxMi40LCAtNi45LCAtNy41LCAtNi44LCAtNC45LCAtNS40LCAtNC4yLCAtNS40LCAtMS4zLCAtMTAuOCwgLTExLjUsIC0xMi40LCAtOC4yLCAtNTAuMCwgLTEyLjUsIC01MC4wLCAtOC45LCAtOS4yLCAtMTAuMCwgLTkuNCwgLTcuOSwgLTUwLjAsIC0xNC4zLCAtMTkuOSwgLTExLjQsIC0xNi4yLCAtMTkuMiwgLTE1LjgsIC0xNS45LF0sXG4gICAgICAgICAgICBbLTYuMywgLTcuNCwgLTguMCwgLTYuMCwgMi44LCAtMC43LCAwLjksIDAuMywgLTcuNSwgLTQuNCwgLTguNCwgLTMuNiwgLTMuMCwgLTcuNywgLTMuNywgLTYuMiwgLTUuMywgLTEwLjAsIC03LjIsIC04LjksIC0wLjcsIC0zLjIsIC0xLjgsIC0yLjQsIC05LjksIC0xMS43LCAtOS42LCAtOS45LCAtNi4zLCAtOS43LCAtOC4wLCAtOC40LCAtMy4wLCAtNy43LCAtNC41LCAtNi45LCAxMS4zLCA4LjIsIDkuNCwgOS4xLCAtMS4wLCAtMy4zLCAtMS44LCAtMi40LCAxLjUsIC0yLjEsIC0wLjQsIC0xLjEsIC01MC4wLCAtMTQuNSwgLTUwLjAsIC0xMi45LCAyLjgsIC0wLjAsIDEuNCwgMC43LCAtNTAuMCwgLTguNywgLTE0LjEsIC03LjUsIC01LjIsIC0xMi41LCAtNi41LCAtMTAuNyxdLFxuICAgICAgICAgICAgWy05LjksIC01LjAsIC0xMC4wLCAtNi41LCAtMC43LCAyLjYsIC0wLjIsIDAuMSwgLTEwLjMsIC0xLjgsIC05LjksIC0zLjgsIC02LjQsIC00LjcsIC01LjgsIC02LjcsIC04LjIsIC04LjMsIC04LjAsIC0xMC4yLCAtMy45LCAtMS4wLCAtMi43LCAtMi45LCAtMTEuNywgLTguOCwgLTExLjAsIC0xMC4xLCAtOS41LCAtNy4zLCAtOS40LCAtOC43LCAtNy4wLCAtNS4yLCAtNi43LCAtNy41LCA4LjIsIDExLjYsIDguOCwgOS4xLCAtMy43LCAtMC45LCAtMy4xLCAtMy4wLCAtMi4wLCAxLjIsIC0yLjMsIC0xLjMsIC01MC4wLCAtMTIuMSwgLTUwLjAsIC0xMi42LCAwLjEsIDIuNSwgMC43LCAwLjYsIC01MC4wLCAtNi4wLCAtMTQuOCwgLTcuNSwgLTguNiwgLTkuNCwgLTguNSwgLTExLjIsXSxcbiAgICAgICAgICAgIFstNy41LCAtNi4yLCAtNy4yLCAtNi4yLCAwLjksIDAuMiwgMi41LCAwLjIsIC04LjMsIC0zLjUsIC03LjEsIC0zLjcsIC00LjEsIC02LjMsIC0zLjEsIC02LjMsIC01LjcsIC04LjksIC01LjYsIC04LjQsIC0yLjMsIC0yLjIsIDAuNywgLTIuNywgLTkuOCwgLTguOSwgLTcuMSwgLTkuMywgLTcuNSwgLTguMiwgLTYuMiwgLTcuOSwgLTQuMywgLTYuMiwgLTIuNywgLTYuOCwgOS40LCA4LjgsIDEyLjEsIDguOCwgLTIuMSwgLTIuMCwgMC4xLCAtMi40LCAwLjAsIC0xLjEsIDEuMywgLTAuOCwgLTUwLjAsIC0xMS45LCAtNTAuMCwgLTEyLjYsIDEuMiwgMC43LCAzLjUsIDAuOCwgLTUwLjAsIC03LjEsIC0xMi40LCAtNy4xLCAtNy4xLCAtMTAuNiwgLTUuMCwgLTEwLjYsXSxcbiAgICAgICAgICAgIFstOS4wLCAtNi41LCAtMTAuMCwgLTQuOCwgMC4xLCAtMC4xLCAtMC4zLCAyLjQsIC05LjksIC0zLjUsIC0xMC42LCAtMi4wLCAtNS40LCAtNi42LCAtNS42LCAtNC40LCAtNy42LCAtOS45LCAtOC41LCAtOC4yLCAtMy4wLCAtMi44LCAtMy4wLCAtMC45LCAtMTIuOCwgLTExLjgsIC0xMC43LCAtOS4zLCAtOC44LCAtOS4yLCAtOS4yLCAtNy4xLCAtNi4yLCAtNy4zLCAtNi43LCAtNC45LCA5LjEsIDkuMSwgOC44LCAxMS4yLCAtMy4xLCAtMy4wLCAtMy4zLCAtMS4wLCAtMS4xLCAtMS40LCAtMi4wLCAxLjIsIC01MC4wLCAtMTIuOCwgLTUwLjAsIC0xMC45LCAwLjgsIDAuNSwgMC43LCAyLjMsIC01MC4wLCAtNy41LCAtMTYuNSwgLTUuOSwgLTcuOCwgLTExLjEsIC03LjgsIC05LjAsXSxcbiAgICAgICAgICAgIFstNy4xLCAtNS42LCAtOS4xLCAtNS4xLCAtNS45LCAtOC4wLCAtNi45LCAtNy40LCAtMS45LCAtMS42LCAtNC43LCAtMS40LCAtOS42LCAtMTQuNiwgLTEwLjQsIC0xMy4wLCAtNi43LCAtMTAuOCwgLTkuNCwgLTkuOSwgLTkuMSwgLTEwLjUsIC05LjEsIC0xMC40LCAtNS45LCAtOS4zLCAtNy45LCAtOC4xLCAtMTIuNywgLTE1LjAsIC0xNS4xLCAtMTQuMywgLTIuMiwgLTUuNCwgLTUuMCwgLTUuNCwgLTEuMCwgLTMuNywgLTIuMSwgLTMuMSwgMTIuOCwgOS42LCAxMS4xLCAxMC4xLCAtNC44LCAtOS40LCAtOC4xLCAtOC42LCAtNTAuMCwgLTE4LjMsIC01MC4wLCAtMTUuNCwgLTUuOSwgLTcuNSwgLTYuNiwgLTcuMSwgLTUwLjAsIC05LjUsIC0xMS43LCAtOC40LCAtMTIuNSwgLTE3LjMsIC0xMy4yLCAtMTUuNCxdLFxuICAgICAgICAgICAgWy0xMC4yLCAtMS42LCAtMTAuMiwgLTMuMiwgLTcuMywgLTQuNiwgLTYuNSwgLTYuMiwgLTYuNywgMy4wLCAtNi44LCAwLjgsIC0xMS45LCAtMTAuOCwgLTExLjUsIC0xMi4yLCAtOS42LCAtNy4xLCAtOS43LCAtOC40LCAtOS44LCAtOC4xLCAtOC4yLCAtOS43LCAtOS40LCAtNS4wLCAtOC4wLCAtNy4yLCAtMTUuMiwgLTEyLjgsIC0xNC45LCAtMTMuOCwgLTYuNiwgLTEuNywgLTYuOCwgLTQuMiwgLTMuMywgLTAuOSwgLTIuMCwgLTMuMCwgOS42LCAxMi44LCA5LjcsIDEwLjUsIC04LjUsIC01LjYsIC05LjMsIC03LjgsIC01MC4wLCAtMTIuNywgLTUwLjAsIC0xMy44LCAtNi44LCAtNS4xLCAtNS4zLCAtNi41LCAtNTAuMCwgLTQuMSwgLTEyLjgsIC01LjgsIC0xNC40LCAtMTQuMSwgLTEzLjYsIC0xNC44LF0sXG4gICAgICAgICAgICBbLTguMiwgLTQuNywgLTcuMSwgLTUuMCwgLTYuNSwgLTcuNywgLTUuNSwgLTYuOSwgLTQuMSwgLTAuOCwgLTEuMiwgLTAuOSwgLTEwLjUsIC0xMi44LCAtOC4yLCAtMTMuMCwgLTcuNSwgLTEwLjAsIC03LjIsIC05LjcsIC05LjIsIC05LjQsIC03LjMsIC0xMC4yLCAtNi41LCAtOC4wLCAtNC4zLCAtOC4wLCAtMTMuMSwgLTE0LjEsIC0xMi4yLCAtMTMuOCwgLTMuNywgLTUuNCwgLTIuNSwgLTUuNCwgLTEuOCwgLTMuMSwgMC4xLCAtMy4zLCAxMS4xLCA5LjcsIDEyLjksIDkuOCwgLTUuNSwgLTguMSwgLTUuNCwgLTcuOCwgLTUwLjAsIC0xNi40LCAtNTAuMCwgLTE0LjgsIC01LjksIC03LjEsIC00LjcsIC03LjIsIC01MC4wLCAtOC40LCAtNi40LCAtOC4xLCAtMTIuMSwgLTE2LjIsIC0xMC4zLCAtMTUuOCxdLFxuICAgICAgICAgICAgWy05LjIsIC0zLjAsIC05LjksIC0xLjIsIC02LjUsIC02LjEsIC02LjgsIC00LjQsIC02LjQsIDAuOSwgLTcuMCwgMy4wLCAtMTEuOCwgLTEzLjAsIC0xMS4xLCAtMTAuNCwgLTkuMywgLTkuMiwgLTkuOCwgLTYuNCwgLTkuNSwgLTkuNSwgLTkuNCwgLTguMCwgLTguMSwgLTguMiwgLTkuNCwgLTUuMiwgLTE0LjIsIC0xNC45LCAtMTQuOSwgLTEyLjMsIC01LjcsIC0zLjcsIC02LjcsIC0xLjMsIC0yLjQsIC0zLjAsIC0yLjQsIC0xLjAsIDEwLjEsIDEwLjUsIDkuOCwgMTMuMSwgLTcuMiwgLTguMCwgLTguNCwgLTUuMCwgLTUwLjAsIC0xNC43LCAtNTAuMCwgLTExLjQsIC02LjMsIC02LjcsIC01LjgsIC01LjAsIC01MC4wLCAtNi4xLCAtMTMuNCwgLTMuNiwgLTEzLjAsIC0xNi4wLCAtMTMuNywgLTEzLjMsXSxcbiAgICAgICAgICAgIFstOC4yLCAtMTAuOCwgLTEwLjEsIC05LjgsIC0wLjQsIC0zLjYsIC0xLjcsIC0yLjksIC03LjksIC04LjQsIC05LjgsIC04LjIsIDYuMiwgMi4zLCAwLjYsIDIuOSwgLTcuMSwgLTExLjYsIC05LjIsIC0xMS4xLCAtNS42LCAtOC4zLCAtNy4yLCAtOC40LCAtMTAuNywgLTEzLjYsIC0xMS40LCAtMTIuMCwgMC4wLCAtMi44LCAtMS44LCAtMi40LCAtNi4wLCAtMTEuNiwgLTcuNSwgLTEwLjgsIDEuNSwgLTIuMCwgMC4wLCAtMS4xLCAtNC44LCAtOC41LCAtNS41LCAtNy4yLCAxMS45LCA4LjYsIDEwLjAsIDkuMCwgLTUwLjAsIC0xNC4yLCAtNTAuMCwgLTEyLjgsIC00LjEsIC03LjQsIC01LjcsIC02LjUsIC01MC4wLCAtMTEuMCwgLTE0LjMsIC05LjksIDEuNCwgLTcuOSwgLTAuNywgLTYuOCxdLFxuICAgICAgICAgICAgWy0xMi41LCAtOC43LCAtMTMuMCwgLTkuOSwgLTMuOSwgLTEuMCwgLTMuNCwgLTIuOSwgLTEyLjUsIC02LjMsIC0xMS42LCAtOC4xLCAzLjMsIDYuMCwgLTEuNiwgMy44LCAtMTAuNSwgLTEwLjEsIC0xMS4xLCAtMTEuMSwgLTkuMCwgLTYuOSwgLTguMiwgLTkuMSwgLTE0LjAsIC0xMS40LCAtMTIuMywgLTEyLjEsIC0zLjEsIDAuMiwgLTMuMiwgLTIuMiwgLTEwLjQsIC05LjEsIC0xMC40LCAtMTEuNSwgLTIuMSwgMS4yLCAtMS4xLCAtMS40LCAtOS40LCAtNS42LCAtOC4xLCAtOC4wLCA4LjYsIDEyLjQsIDguNiwgOS41LCAtNTAuMCwgLTEwLjQsIC01MC4wLCAtMTEuNiwgLTcuMiwgLTUuNywgLTcuNSwgLTcuNCwgLTUwLjAsIC04LjYsIC0xNS43LCAtOS43LCAtMy4wLCAtMy43LCAtMy4yLCAtNS45LF0sXG4gICAgICAgICAgICBbLTExLjEsIC0xMS45LCAtMTAuNiwgLTExLjMsIC0yLjYsIC00LjEsIC0xLjcsIC0zLjUsIC0xMS40LCAtOS42LCAtOS42LCAtOS4yLCAzLjcsIDIuNSwgMS42LCAyLjUsIC05LjYsIC0xMi4zLCAtOS41LCAtMTEuOCwgLTguMCwgLTkuNCwgLTcuMiwgLTkuMywgLTEzLjMsIC0xMi44LCAtMTAuOSwgLTEyLjYsIC0xLjgsIC0yLjksIC0wLjgsIC0yLjksIC04LjYsIC0xMy4wLCAtNy40LCAtMTIuNCwgLTAuNCwgLTIuMywgMS4zLCAtMi4wLCAtOC4xLCAtOS4zLCAtNS40LCAtOC40LCAxMC4wLCA4LjYsIDExLjQsIDguOSwgLTUwLjAsIC0xMy43LCAtNTAuMCwgLTEzLjIsIC02LjEsIC04LjEsIC01LjUsIC03LjUsIC01MC4wLCAtMTEuMywgLTEyLjcsIC0xMC4xLCAtMS42LCAtNy44LCAtMC4zLCAtNy4yLF0sXG4gICAgICAgICAgICBbLTExLjQsIC0xMC4wLCAtMTIuNywgLTguMiwgLTMuMSwgLTMuMSwgLTIuOCwgLTAuOSwgLTExLjcsIC03LjMsIC0xMi4xLCAtNS44LCAzLjYsIDMuNiwgLTEuMSwgNS44LCAtOS40LCAtMTEuOSwgLTEwLjcsIC0xMC4wLCAtOC41LCAtOC44LCAtOC4yLCAtNi41LCAtMTMuOSwgLTEzLjAsIC0xMi45LCAtMTAuOSwgLTMuMSwgLTIuMywgLTMuMiwgLTAuMiwgLTkuNSwgLTEwLjgsIC0xMC4yLCAtOC4yLCAtMS4xLCAtMS4zLCAtMC44LCAxLjIsIC04LjYsIC03LjgsIC03LjgsIC01LjAsIDkuMCwgOS41LCA4LjksIDEyLjAsIC01MC4wLCAtMTMuMCwgLTUwLjAsIC0xMC4zLCAtNi4yLCAtNy4wLCAtNy4xLCAtNS40LCAtNTAuMCwgLTkuMywgLTE0LjAsIC04LjIsIC0yLjQsIC02LjMsIC0yLjQsIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgMzAuNiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xNC44LCAtNi4yLCAtMTQuOSwgLTcuNiwgLTE0LjYsIC0xMS42LCAtMTMuMCwgLTEyLjIsIC0xNC4wLCAtOS4wLCAtMTQuMSwgLTEwLjEsIC0xMy42LCAtMTEuMiwgLTEyLjQsIC0xMi41LCAtOC4xLCAyLjIsIC04LjcsIDAuNCwgLTE1LjMsIC0xMS4zLCAtMTMuMiwgLTEzLjMsIC0xMS45LCAtNy4yLCAtMTEuOCwgLTcuOSwgLTEwLjcsIC03LjQsIC0xMC44LCAtOC45LCAtMTUuNSwgLTEwLjMsIC0xNS41LCAtMTIuNSwgLTE0LjUsIC0xMi4xLCAtMTEuOSwgLTEyLjgsIC0xOC4zLCAtMTIuNywgLTE2LjQsIC0xNC43LCAtMTQuMiwgLTEwLjQsIC0xMy43LCAtMTMuMCwgLTUwLjAsIDE1LjEsIC01MC4wLCAxMy4zLCAtOS45LCAtNS44LCAtOC45LCAtNy42LCAtNTAuMCwgLTEuNSwgLTcuOCwgLTMuMCwgLTguMSwgMy42LCAtOS40LCAyLjAsXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMC42LCAtNTAuMCwgMzUuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy44LCAtNy41LCAtMTQuNCwgLTUuMSwgLTEyLjYsIC0xMS42LCAtMTEuNSwgLTEwLjEsIC0xMy4yLCAtOS43LCAtMTIuNywgLTcuNCwgLTExLjksIC0xMS45LCAtMTEuNSwgLTEwLjIsIC03LjIsIDAuOSwgLTguNiwgMi42LCAtMTQuMSwgLTEyLjgsIC0xMy4zLCAtMTEuMCwgLTkuNywgLTguNCwgLTExLjIsIC01LjMsIC05LjMsIC04LjcsIC05LjksIC03LjEsIC0xMy45LCAtMTEuMiwgLTE0LjIsIC04LjksIC0xMi45LCAtMTIuNiwgLTEyLjYsIC0xMC45LCAtMTUuNCwgLTEzLjgsIC0xNC44LCAtMTEuNCwgLTEyLjgsIC0xMS42LCAtMTMuMiwgLTEwLjMsIC01MC4wLCAxMy4zLCAtNTAuMCwgMTUuMiwgLTguNiwgLTcuMCwgLTguNCwgLTQuOCwgLTUwLjAsIC0zLjAsIC03LjEsIC0wLjEsIC03LjMsIDIuMywgLTguNywgMy45LF0sXG4gICAgICAgICAgICBbLTcuMywgLTYuMywgLTguOSwgLTUuNSwgMi45LCAwLjIsIDEuNSwgMS4yLCAtOC41LCAtMi4zLCAtMTAuMCwgLTEuNywgLTUuNiwgLTEwLjUsIC01LjUsIC05LjYsIC00LjMsIC03LjksIC02LjEsIC03LjIsIDIuMywgLTAuNiwgMC41LCAtMC4wLCAtOC45LCAtMTEuMCwgLTkuNCwgLTkuMywgLTQuNiwgLTkuNCwgLTcuMywgLTguMSwgLTcuOCwgLTkuOCwgLTguOSwgLTkuMiwgMi44LCAwLjEsIDEuMiwgMC44LCAtNS45LCAtNi44LCAtNS45LCAtNi4zLCAtNC4xLCAtNy4yLCAtNi4xLCAtNi4yLCAtNTAuMCwgLTkuOSwgLTUwLjAsIC04LjYsIDEyLjUsIDkuNCwgMTEuMCwgOS44LCAtNTAuMCwgLTQuOCwgLTguNywgLTMuNSwgLTAuMCwgLTguNiwgLTIuMSwgLTcuMCxdLFxuICAgICAgICAgICAgWy0xMC4xLCAtNC4zLCAtMTAuOCwgLTUuOCwgMC4xLCAyLjMsIDAuNywgMC42LCAtMTAuNCwgLTAuMiwgLTEwLjgsIC0yLjAsIC04LjgsIC05LjIsIC04LjAsIC05LjcsIC02LjgsIC01LjksIC03LjUsIC03LjAsIC0xLjQsIDIuMiwgLTAuOSwgLTAuNCwgLTEwLjgsIC03LjcsIC05LjgsIC04LjgsIC04LjksIC03LjMsIC05LjYsIC05LjEsIC0xMC41LCAtOC4zLCAtMTAuMiwgLTEwLjAsIC0wLjAsIDIuNSwgMC43LCAwLjUsIC03LjUsIC01LjEsIC03LjEsIC02LjcsIC03LjQsIC01LjcsIC04LjEsIC03LjAsIC01MC4wLCAtNS44LCAtNTAuMCwgLTcuMCwgOS40LCAxMi43LCAxMC4xLCAxMC4wLCAtNTAuMCwgLTEuNSwgLTExLjMsIC0zLjMsIC01LjQsIC00LjIsIC01LjYsIC02LjgsXSxcbiAgICAgICAgICAgIFstOC40LCAtNi4yLCAtOC45LCAtNS45LCAxLjgsIDAuNCwgMi43LCAxLjIsIC05LjEsIC0xLjIsIC04LjgsIC0xLjUsIC03LjIsIC0xMC41LCAtNC45LCAtOS42LCAtNS43LCAtNy40LCAtNS41LCAtNy40LCAwLjMsIC0wLjMsIDEuOCwgLTAuNCwgLTkuMCwgLTguNywgLTcuMywgLTguOSwgLTUuOSwgLTkuNCwgLTYuNCwgLTguNywgLTguNywgLTkuMSwgLTguNSwgLTkuNCwgMS40LCAwLjcsIDMuNSwgMC43LCAtNi42LCAtNS4zLCAtNC43LCAtNS44LCAtNS43LCAtNy41LCAtNS41LCAtNy4xLCAtNTAuMCwgLTguOSwgLTUwLjAsIC04LjQsIDExLjAsIDEwLjEsIDEzLjIsIDEwLjIsIC01MC4wLCAtNC4yLCAtNi4xLCAtMy42LCAtMy41LCAtOC40LCAtMS4yLCAtNi44LF0sXG4gICAgICAgICAgICBbLTkuMSwgLTUuNCwgLTEwLjQsIC00LjIsIDEuMCwgMC41LCAwLjYsIDIuNCwgLTkuNiwgLTEuNSwgLTEwLjUsIC0wLjUsIC04LjksIC0xMC41LCAtNy4yLCAtOC4zLCAtNi4zLCAtNi45LCAtNy43LCAtNS4xLCAtMC41LCAwLjEsIC0wLjYsIDIuMywgLTExLjEsIC0xMC4yLCAtMTAuNSwgLTcuMCwgLTguMywgLTkuNCwgLTkuNCwgLTYuNiwgLTkuNiwgLTkuNywgLTEwLjAsIC03LjksIDAuNywgMC42LCAwLjgsIDIuMywgLTcuMSwgLTYuNSwgLTcuMiwgLTUuMCwgLTYuNSwgLTcuNCwgLTcuNSwgLTUuNCwgLTUwLjAsIC03LjYsIC01MC4wLCAtNC44LCA5LjgsIDEwLjAsIDEwLjIsIDEyLjEsIC01MC4wLCAtMy4xLCAtMTEuNCwgLTAuNywgLTQuNiwgLTYuNiwgLTQuOSwgLTMuOSxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI5LjIsIC01MC4wLCAyOC41LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMzLjMsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTEzLjAsIC03LjAsIC0xMy4xLCAtOC4zLCAtOS4yLCAtNi41LCAtOC45LCAtNy42LCAtOS44LCAtMC43LCAtOS4yLCAtMi4xLCAtMTIuNCwgLTEwLjMsIC0xMi40LCAtMTEuNiwgLTkuNSwgLTQuNiwgLTEwLjQsIC01LjcsIC0xMy42LCAtMTAuMSwgLTExLjQsIC0xMC45LCAtNi41LCAtMS41LCAtNi4yLCAtMy42LCAtMTIuOCwgLTguMCwgLTEyLjMsIC05LjcsIC0xNi41LCAtMTIuNywgLTE1LjYsIC0xNC4zLCAtOC43LCAtNi4wLCAtNy4xLCAtNy41LCAtOS41LCAtNC4xLCAtOC40LCAtNi4xLCAtMTEuMCwgLTguNiwgLTExLjMsIC05LjMsIC01MC4wLCAtMS41LCAtNTAuMCwgLTMuMCwgLTQuOCwgLTEuNSwgLTQuMiwgLTMuMSwgLTUwLjAsIDE2LjQsIC01LjEsIDE0LjIsIC0xMC4xLCAtNC4zLCAtMTAuMCwgLTUuNCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTYuMywgLTExLjgsIC0xNS41LCAtMTMuNiwgLTE1LjMsIC0xMi4xLCAtMTYuMSwgLTcuNywgLTEzLjMsIC00LjIsIC0xMi42LCAtMTQuMSwgLTE2LjIsIC0xMC4zLCAtMTUuNCwgLTkuNiwgLTExLjYsIC03LjcsIC05LjgsIC0xNC4zLCAtMTcuNSwgLTExLjEsIC0xNy4yLCAtNS4zLCAtNy4xLCAtMi4yLCAtNy4xLCAtOS42LCAtMTEuOSwgLTguNywgLTExLjQsIC0xNy4xLCAtMjAuNiwgLTE1LjMsIC0xOS45LCAtMTQuMSwgLTE0LjgsIC0xMi40LCAtMTYuNSwgLTExLjcsIC0xMi44LCAtNi40LCAtMTMuNCwgLTE0LjMsIC0xNS43LCAtMTIuNywgLTE0LjAsIC01MC4wLCAtNy44LCAtNTAuMCwgLTcuMSwgLTguNywgLTExLjMsIC02LjEsIC0xMS40LCAtNTAuMCwgLTUuMSwgMTguNiwgLTQuOCwgLTguNiwgLTguMSwgLTQuNSwgLTcuMyxdLFxuICAgICAgICAgICAgWy0xMi40LCAtOC4yLCAtMTMuMCwgLTUuOSwgLTcuNywgLTcuOCwgLTcuNCwgLTUuOCwgLTguOCwgLTIuMCwgLTkuMywgLTAuNCwgLTExLjYsIC0xMS4zLCAtMTEuNiwgLTkuNCwgLTguOSwgLTUuNiwgLTEwLjAsIC0zLjIsIC0xMS41LCAtMTEuMSwgLTEwLjUsIC04LjMsIC02LjMsIC00LjksIC02LjcsIC0xLjIsIC0xMC42LCAtOS43LCAtMTEuMywgLTguMCwgLTE0LjgsIC0xMy4xLCAtMTUuNSwgLTExLjQsIC03LjUsIC03LjUsIC03LjEsIC01LjksIC04LjQsIC01LjgsIC04LjEsIC0zLjYsIC05LjksIC05LjcsIC0xMC4xLCAtOC4yLCAtNTAuMCwgLTMuMCwgLTUwLjAsIC0wLjEsIC0zLjUsIC0zLjMsIC0zLjYsIC0wLjcsIC01MC4wLCAxNC4yLCAtNC44LCAxNi40LCAtOC45LCAtNS44LCAtOC45LCAtMy40LF0sXG4gICAgICAgICAgICBbLTEwLjcsIC0xMy4yLCAtMTIuNCwgLTExLjYsIC00LjgsIC04LjQsIC02LjEsIC03LjIsIC0xMC4zLCAtMTEuOCwgLTExLjAsIC0xMS42LCAyLjgsIC0xLjcsIDAuNywgLTEuMSwgLTYuMiwgLTkuNywgLTcuMywgLTguNCwgLTUuMywgLTguNiwgLTYuMSwgLTguMywgLTEwLjUsIC0xMS4yLCAtOS44LCAtMTAuMiwgOS41LCA2LjUsIDcuNiwgNi44LCAtMTIuMSwgLTE2LjAsIC0xMy4wLCAtMTYuMiwgLTUuMiwgLTguNiwgLTcuMSwgLTcuOCwgLTEyLjUsIC0xNC40LCAtMTIuMSwgLTEzLjAsIDEuNCwgLTMuMCwgLTEuNiwgLTIuNCwgLTUwLjAsIC04LjEsIC01MC4wLCAtNy4zLCAtMC4wLCAtNS40LCAtMy41LCAtNC42LCAtNTAuMCwgLTEwLjEsIC04LjYsIC04LjksIDEzLjIsIC0wLjksIDkuNywgLTAuMyxdLFxuICAgICAgICAgICAgWy0xOC4xLCAtMTIuMywgLTE5LjQsIC0xNC4yLCAtMTIuMiwgLTkuNSwgLTExLjUsIC0xMC44LCAtMTcuOSwgLTExLjksIC0xOC4yLCAtMTMuOSwgLTYuNCwgLTMuNywgLTYuOCwgLTUuNCwgLTEyLjgsIC01LjksIC0xMy42LCAtNy40LCAtMTMuNywgLTkuOSwgLTEyLjksIC0xMi43LCAtMTYuMiwgLTExLjYsIC0xNS4yLCAtMTIuNywgLTMuMiwgMC41LCAtMy4zLCAtMS44LCAtMTguOSwgLTE2LjYsIC0xOC44LCAtMTkuMiwgLTEyLjUsIC05LjQsIC0xMC42LCAtMTEuMSwgLTE3LjMsIC0xNC4xLCAtMTYuMiwgLTE2LjAsIC03LjksIC0zLjcsIC03LjgsIC02LjMsIC01MC4wLCAzLjYsIC01MC4wLCAyLjMsIC04LjYsIC00LjIsIC04LjQsIC02LjYsIC01MC4wLCAtNC4zLCAtOC4xLCAtNS44LCAtMC45LCAxNC4yLCAtMS44LCAxMS42LF0sXG4gICAgICAgICAgICBbLTExLjgsIC0xMy4xLCAtMTEuNSwgLTEyLjAsIC02LjIsIC04LjMsIC01LjQsIC03LjQsIC0xMS44LCAtMTIuMywgLTExLjEsIC0xMS40LCAwLjUsIC0yLjUsIDIuNCwgLTEuNiwgLTYuOCwgLTkuOSwgLTYuNCwgLTguOSwgLTYuMSwgLTguNiwgLTUuMCwgLTcuOCwgLTEwLjQsIC0xMS42LCAtOC41LCAtOS45LCA4LjIsIDYuNCwgOC43LCA2LjksIC0xMi40LCAtMTcuMCwgLTEyLjYsIC0xNS44LCAtNi41LCAtOC41LCAtNS4wLCAtNy44LCAtMTMuMiwgLTEzLjYsIC0xMC4zLCAtMTMuNywgLTAuNywgLTMuMiwgLTAuMywgLTIuNCwgLTUwLjAsIC05LjQsIC01MC4wLCAtOC43LCAtMi4xLCAtNS42LCAtMS4yLCAtNC45LCAtNTAuMCwgLTEwLjAsIC00LjUsIC04LjksIDkuNywgLTEuOCwgMTEuMywgLTAuOSxdLFxuICAgICAgICAgICAgWy0xNy4yLCAtMTMuMywgLTE3LjgsIC0xMS42LCAtMTEuMCwgLTExLjEsIC0xMC40LCAtOS4wLCAtMTYuMCwgLTEyLjcsIC0xNi4xLCAtMTEuMSwgLTUuMiwgLTUuNCwgLTYuMCwgLTMuMywgLTExLjgsIC03LjMsIC0xMy4zLCAtNS45LCAtMTIuNywgLTExLjksIC0xMS45LCAtOS4zLCAtMTUuMiwgLTE1LjAsIC0xNC45LCAtMTEuMCwgLTIuOCwgLTEuOCwgLTIuOSwgMC40LCAtMTcuNCwgLTE4LjQsIC0xOC4zLCAtMTUuOSwgLTEwLjcsIC0xMS4yLCAtMTAuNiwgLTkuMCwgLTE1LjQsIC0xNC44LCAtMTUuOCwgLTEzLjMsIC02LjgsIC01LjksIC03LjIsIC0zLjksIC01MC4wLCAyLjAsIC01MC4wLCAzLjksIC03LjAsIC02LjgsIC02LjgsIC0zLjksIC01MC4wLCAtNS40LCAtNy4zLCAtMy40LCAtMC4zLCAxMS42LCAtMC45LCAxNC4xLF1dO1xuICAgICAgICB0aGlzLlRSQU5TID0gW1s1LCAwLCAwLCA0XSxcbiAgICAgICAgICAgIFswLCA1LCA0LCAwXSxcbiAgICAgICAgICAgIFswLCA0LCA1LCAwXSxcbiAgICAgICAgICAgIFs0LCAwLCAwLCA1XV07XG4gICAgICAgIHRoaXMuQ09OQkxPID0geyAnQSc6IDAsICdSJzogMSwgJ04nOiAyLCAnRCc6IDMsICdDJzogNCwgJ1EnOiA1LCAnRSc6IDYsICdHJzogNywgJ0gnOiA4LCAnSSc6IDksICdMJzogMTAsICdLJzogMTEsICdNJzogMTIsICdGJzogMTMsICdQJzogMTQsICdTJzogMTUsICdUJzogMTYsICdXJzogMTcsICdZJzogMTgsICdWJzogMTksICdCJzogMjAsICdaJzogMjEsICdYJzogMjIsICcqJzogMjMgfTtcbiAgICAgICAgdGhpcy5DT05OVUNMID0geyAnQSc6IDAsICdUJzogMSwgJ0MnOiAyLCAnRyc6IDMgfTtcbiAgICAgICAgdGhpcy5DT05TQ0hOID0geyAnQUFBJzogMCwgJ0FBQyc6IDEsICdBQUcnOiAyLCAnQUFUJzogMywgJ0FDQSc6IDQsICdBQ0MnOiA1LCAnQUNHJzogNiwgJ0FDVCc6IDcsICdBR0EnOiA4LCAnQUdDJzogOSwgJ0FHRyc6IDEwLCAnQUdUJzogMTEsICdBVEEnOiAxMiwgJ0FUQyc6IDEzLCAnQVRHJzogMTQsICdBVFQnOiAxNSwgJ0NBQSc6IDE2LCAnQ0FDJzogMTcsICdDQUcnOiAxOCwgJ0NBVCc6IDE5LCAnQ0NBJzogMjAsICdDQ0MnOiAyMSwgJ0NDRyc6IDIyLCAnQ0NUJzogMjMsICdDR0EnOiAyNCwgJ0NHQyc6IDI1LCAnQ0dHJzogMjYsICdDR1QnOiAyNywgJ0NUQSc6IDI4LCAnQ1RDJzogMjksICdDVEcnOiAzMCwgJ0NUVCc6IDMxLCAnR0FBJzogMzIsICdHQUMnOiAzMywgJ0dBRyc6IDM0LCAnR0FUJzogMzUsICdHQ0EnOiAzNiwgJ0dDQyc6IDM3LCAnR0NHJzogMzgsICdHQ1QnOiAzOSwgJ0dHQSc6IDQwLCAnR0dDJzogNDEsICdHR0cnOiA0MiwgJ0dHVCc6IDQzLCAnR1RBJzogNDQsICdHVEMnOiA0NSwgJ0dURyc6IDQ2LCAnR1RUJzogNDcsICdUQUEnOiA0OCwgJ1RBQyc6IDQ5LCAnVEFHJzogNTAsICdUQVQnOiA1MSwgJ1RDQSc6IDUyLCAnVENDJzogNTMsICdUQ0cnOiA1NCwgJ1RDVCc6IDU1LCAnVEdBJzogNTYsICdUR0MnOiA1NywgJ1RHRyc6IDU4LCAnVEdUJzogNTksICdUVEEnOiA2MCwgJ1RUQyc6IDYxLCAnVFRHJzogNjIsICdUVFQnOiA2MyB9O1xuICAgICAgICB0aGlzLnNldE1ldGhvZChhbGlnbkdyaWRfKTtcbiAgICAgICAgdGhpcy5zZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKTtcbiAgICAgICAgdGhpcy5zZXRHYXAoZ2FwXyk7XG4gICAgfVxuICAgIGZpbGxOZWVkbGVtYW4oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS52YWx1ZSA9IC1pICogdGhpcy5nYXA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVswXS5wYXJlbnRKID0gMDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjI7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS5wYXJlbnRKID0gaSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmlsbE9uZShpLCBqKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gTWF0aC5tYXgodGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0sIE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqXS52YWx1ZSAtIHRoaXMuZ2FwLCB0aGlzLmRwR3JpZFtpXVtqIC0gMV0udmFsdWUgLSB0aGlzLmdhcCkpO1xuICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2ogLSAxXS52YWx1ZSArIHRoaXMuc2NvcmVzW2kgLSAxXVtqIC0gMV0pIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9PSB0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCkge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGo7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBncmlkRnJvbU5hbWUocGF0aCkge1xuICAgICAgICBzd2l0Y2ggKHBhdGgpIHtcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTQ1JzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNDU7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU01MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNjInOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU02MjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTgwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNODA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU05MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTkwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMzAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0zMDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTcwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNNzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU0yNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU0yNTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdOVUNMRU9USURFUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLk5VQ0xFT1RJREVTO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RSQU5TJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuVFJBTlM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OTlVDTDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU0NITkVJREVSJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuU0NITkVJREVSO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTlNDSE47XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxTY29yZXMoKTtcbiAgICB9XG4gICAgY29uc3RydWN0UmVzdWx0KGksIGopIHtcbiAgICAgICAgbGV0IHJlczEgPSBcIlwiLCByZXMyID0gXCJcIiwgZ2FwUyA9IFwiXCI7XG4gICAgICAgIGxldCB0b3RhbCA9IHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcDsgaSsrKSB7XG4gICAgICAgICAgICBnYXBTICs9ICd8JztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaSA+IDAgfHwgaiA+IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID09IGkpIHtcbiAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgcmVzMiA9IHRoaXMuc2VxMi5zdWJzdHIoKGogLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID09IGopIHtcbiAgICAgICAgICAgICAgICByZXMyID0gZ2FwUyArIHJlczI7XG4gICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaSAtIDEgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IHRoaXMuc2VxMS5zdWJzdHIoKGkgLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczE7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXMxID0gZ2FwUyArIHJlczE7XG4gICAgICAgICAgICAgICAgaWYgKGogLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRlbXBJID0gaTtcbiAgICAgICAgICAgIGkgPSB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJO1xuICAgICAgICAgICAgaiA9IHRoaXMuZHBHcmlkW3RlbXBJXVtqXS5wYXJlbnRKO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQWxpZ25lZChyZXMxLCByZXMyLCB0b3RhbCk7XG4gICAgfVxuICAgIGZpbGxTY29yZXMoKSB7XG4gICAgICAgIHRoaXMuc2NvcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2NvcmVzLnB1c2goW10pO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2NvcmVzW2ldLnB1c2godGhpcy5hbGlnbkdyaWRbdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTEuc3Vic3RyKGkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXVt0aGlzLmNvbm5lY3Rpb25zW3RoaXMuc2VxMi5zdWJzdHIoaiAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0eXBlUmVjKCkge1xuICAgICAgICBpZiAoL1tBVEdDXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FUR0NdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiTlVDTEVPVElERVNcIjtcbiAgICAgICAgaWYgKC9bQVJORENRRUdISUxLTUZQU1RXWVZCWlgqXSovLnRlc3QodGhpcy5zZXExKSAmJiAvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMikpXG4gICAgICAgICAgICByZXR1cm4gXCJCTE9TVU02MlwiO1xuICAgICAgICB0aHJvdyBFcnJvcihcIkNhbid0IHJlY29nbml6ZSBzZXF1ZW5jZSB0eXBlXCIpO1xuICAgIH1cbiAgICBuZWVkbGVtYW5XdW5jaCgpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbE5lZWRsZW1hbigpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0UmVzdWx0KHRoaXMubGVuMSwgdGhpcy5sZW4yKTtcbiAgICB9XG4gICAgc21pdGhXYXRlcm1hbigpIHtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjEgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yICsgMTsgaisrKVxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKG5ldyBDZWxsKCkpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWQucHVzaChyb3cpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBiZXN0VmFsID0gMDtcbiAgICAgICAgbGV0IGJlc3RJID0gMCwgYmVzdEogPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPD0gdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGxPbmUoaSwgaik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEldW3RoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEpdLnZhbHVlID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPiBiZXN0VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RWYWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEkgPSBpO1xuICAgICAgICAgICAgICAgICAgICBiZXN0SiA9IGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdChiZXN0SSwgYmVzdEopO1xuICAgIH1cbiAgICBzZXRTZXF1ZW5jZXMoc2VxMV8sIHNlcTJfKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9IHNlcTFfO1xuICAgICAgICB0aGlzLnNlcTIgPSBzZXEyXztcbiAgICAgICAgdGhpcy5sZW4xID0gdGhpcy5zZXExLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5sZW4yID0gdGhpcy5zZXEyLmxlbmd0aCAvIHRoaXMuc3RlcDtcbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIHNldEdhcChnYXBfKSB7XG4gICAgICAgIHRoaXMuZ2FwID0gZ2FwXztcbiAgICB9XG4gICAgc2V0TWV0aG9kKGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIGlmIChhbGlnbkdyaWRfID09IFwiQVVUT1wiKSB7XG4gICAgICAgICAgICBhbGlnbkdyaWRfID0gdGhpcy50eXBlUmVjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkRnJvbU5hbWUoYWxpZ25HcmlkXyk7XG4gICAgfVxufVxuIiwiaW1wb3J0ICogYXMgT0NMIGZyb20gJ29wZW5jaGVtbGliL2Z1bGwuanMnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hY3JvTW9sKG1vbEJsb2Nrcykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9sQmxvY2tzLmxlbmd0aDsgaSsrKVxuICAgICAgICBtb2xCbG9ja3NbaV0gPSByb3RhdGVCYWNrYm9uZVYzMDAwKG1vbEJsb2Nrc1tpXSk7XG4gICAgcmV0dXJuIGxpbmtWMzAwMChtb2xCbG9ja3MpO1xufVxuZnVuY3Rpb24gcm90YXRlQmFja2JvbmVWMzAwMChtb2xlY3VsZSkge1xuICAgIGxldCBtb2xCbG9jayA9IE9DTC5Nb2xlY3VsZS5mcm9tTW9sZmlsZShtb2xlY3VsZSkudG9Nb2xmaWxlVjMoKTtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKTtcbiAgICBjb25zdCBuYXRvbSA9IGNvb3JkaW5hdGVzLmF0b21JbmRleC5sZW5ndGg7XG4gICAgY29uc3QgaW5kZXhGaXZlUHJpbWUgPSBjb29yZGluYXRlcy5hdG9tSW5kZXguaW5kZXhPZigxKTtcbiAgICBjb25zdCBpbmRleFRocmVlUHJpbWUgPSBjb29yZGluYXRlcy5hdG9tSW5kZXguaW5kZXhPZihuYXRvbSk7XG4gICAgY29uc3QgeENlbnRlciA9IChjb29yZGluYXRlcy54W2luZGV4VGhyZWVQcmltZV0gKyBjb29yZGluYXRlcy54W2luZGV4Rml2ZVByaW1lXSkgLyAyO1xuICAgIGNvbnN0IHlDZW50ZXIgPSAoY29vcmRpbmF0ZXMueVtpbmRleFRocmVlUHJpbWVdICsgY29vcmRpbmF0ZXMueVtpbmRleEZpdmVQcmltZV0pIC8gMjtcbiAgICAvL3BsYWNlIHRvIGNlbnRlclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICBjb29yZGluYXRlcy54W2ldIC09IHhDZW50ZXI7XG4gICAgICAgIGNvb3JkaW5hdGVzLnlbaV0gLT0geUNlbnRlcjtcbiAgICB9XG4gICAgbGV0IGFuZ2xlID0gMDtcbiAgICBpZiAoY29vcmRpbmF0ZXMueFtpbmRleEZpdmVQcmltZV0gPT0gMClcbiAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy55W2luZGV4Rml2ZVByaW1lXSA+IGNvb3JkaW5hdGVzLnlbaW5kZXhUaHJlZVByaW1lXSA/IE1hdGguUEkgLyAyIDogMyAqIE1hdGguUEkgLyAyO1xuICAgIGVsc2UgaWYgKGNvb3JkaW5hdGVzLnlbaW5kZXhGaXZlUHJpbWVdID09IDApXG4gICAgICAgIGFuZ2xlID0gY29vcmRpbmF0ZXMueFtpbmRleEZpdmVQcmltZV0gPiBjb29yZGluYXRlcy54W2luZGV4VGhyZWVQcmltZV0gPyBNYXRoLlBJIDogMDtcbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgZGVyaXZhdGl2ZSA9IGNvb3JkaW5hdGVzLnlbaW5kZXhGaXZlUHJpbWVdIC8gY29vcmRpbmF0ZXMueFtpbmRleEZpdmVQcmltZV07XG4gICAgICAgIGFuZ2xlID0gZGVyaXZhdGl2ZSA+IDAgPyBNYXRoLlBJIC0gTWF0aC5hdGFuKGRlcml2YXRpdmUpIDogTWF0aC5hdGFuKGRlcml2YXRpdmUpO1xuICAgIH1cbiAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG4gICAgY29uc3Qgc2luID0gTWF0aC5zaW4oYW5nbGUpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICBjb25zdCB4QWRkID0gY29vcmRpbmF0ZXMueFtpXTtcbiAgICAgICAgY29vcmRpbmF0ZXMueFtpXSA9IHhBZGQgKiBjb3MgLSBjb29yZGluYXRlcy55W2ldICogc2luO1xuICAgICAgICBjb29yZGluYXRlcy55W2ldID0geEFkZCAqIHNpbiArIGNvb3JkaW5hdGVzLnlbaV0gKiBjb3M7XG4gICAgfVxuICAgIC8vcGxhY2UgdG8gcmlnaHRcbiAgICBjb25zdCB4U2hpZnQgPSBjb29yZGluYXRlcy54W2luZGV4Rml2ZVByaW1lXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdG9tOyBpKyspXG4gICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geFNoaWZ0O1xuICAgIC8vcmV3cml0ZSBtb2xCbG9ja1xuICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgIGxldCBpbmRleEVuZCA9IGluZGV4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKykge1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4RW5kKTtcbiAgICAgICAgbW9sQmxvY2sgPSBtb2xCbG9jay5zbGljZSgwLCBpbmRleCkgK1xuICAgICAgICAgICAgY29vcmRpbmF0ZXMueFtpXSArICcgJyArIGNvb3JkaW5hdGVzLnlbaV0gK1xuICAgICAgICAgICAgbW9sQmxvY2suc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgfVxuICAgIHJldHVybiBtb2xCbG9jaztcbn1cbmZ1bmN0aW9uIGV4dHJhY3RBdG9tRGF0YVYzMDAwKG1vbEJsb2NrKSB7XG4gICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2NrKTtcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KTtcbiAgICBsZXQgaW5kZXhFbmQgPSBpbmRleDtcbiAgICBjb25zdCBpbmRleGVzID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgdHlwZXMgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB4ID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgY29uc3QgeSA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtYmVycy5uYXRvbTsgaSsrKSB7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICBpbmRleGVzW2ldID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB0eXBlc1tpXSA9IG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpO1xuICAgICAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICB4W2ldID0gcGFyc2VGbG9hdChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHlbaV0gPSBwYXJzZUZsb2F0KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgIH1cbiAgICByZXR1cm4geyBhdG9tSW5kZXg6IGluZGV4ZXMsIGF0b21UeXBlOiB0eXBlcywgeDogeCwgeTogeSB9O1xufVxuZnVuY3Rpb24gbGlua1YzMDAwKG1vbEJsb2Nrcykge1xuICAgIGxldCBtYWNyb01vbEJsb2NrID0gJ1xcbkRhdGFncm9rIG1hY3JvbW9sZWN1bGUgaGFuZGxlclxcblxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnICAwICAwICAwICAwICAwICAwICAgICAgICAgICAgOTk5IFYzMDAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ1RBQlxcbic7XG4gICAgbGV0IGF0b21CbG9jayA9ICcnO1xuICAgIGxldCBib25kQmxvY2sgPSAnJztcbiAgICBsZXQgY29sbGVjdGlvbkJsb2NrID0gJyc7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xuICAgIGxldCBuYXRvbSA9IDA7XG4gICAgbGV0IG5ib25kID0gMDtcbiAgICBsZXQgeFNoaWZ0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vbEJsb2Nrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtb2xCbG9ja3NbaV0gPSBtb2xCbG9ja3NbaV0ucmVwbGFjZUFsbCgnKC1cXG5NICBWMzAgJywgJygnKVxuICAgICAgICAgICAgLnJlcGxhY2VBbGwoJy1cXG5NICBWMzAgJywgJycpLnJlcGxhY2VBbGwoJyApJywgJyknKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2Nrc1tpXSk7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2tzW2ldKTtcbiAgICAgICAgbGV0IGluZGV4QXRvbXMgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgICAgIGluZGV4QXRvbXMgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignXFxuJywgaW5kZXhBdG9tcyk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4QXRvbXM7XG4gICAgICAgIGxldCBpbmRleEVuZCA9IGluZGV4QXRvbXM7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYXRvbTsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXMuYXRvbUluZGV4W2pdICE9IDEgfHwgaSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGF0b20gbnVtYmVyXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xCbG9ja3NbaV0uc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpICsgbmF0b207XG4gICAgICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIC8vcmV3cml0ZSBjb29yZGluYXRlc1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWxTaGlmdCA9IHhTaGlmdCAtIGNvb3JkaW5hdGVzLnhbMF07XG4gICAgICAgICAgICAgICAgbGV0IGNvb3JkaW5hdGUgPSBNYXRoLnJvdW5kKDEwMDAwICogKHBhcnNlRmxvYXQobW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIHRvdGFsU2hpZnQpKSAvIDEwMDAwO1xuICAgICAgICAgICAgICAgIG1vbEJsb2Nrc1tpXSA9IG1vbEJsb2Nrc1tpXS5zbGljZSgwLCBpbmRleCkgKyBjb29yZGluYXRlICsgbW9sQmxvY2tzW2ldLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGUgPSBNYXRoLnJvdW5kKDEwMDAwICogKHBhcnNlRmxvYXQobW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAnLCBpbmRleCkgLSAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ1xcbicsIGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIG1vbEJsb2Nrc1tpXS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXhBdG9tc0VuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAgRU5EIEFUT00nKTtcbiAgICAgICAgYXRvbUJsb2NrICs9IG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXhBdG9tcyArIDEsIGluZGV4QXRvbXNFbmQpO1xuICAgICAgICBsZXQgaW5kZXhCb25kcyA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQk9ORCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgYm9uZHNcbiAgICAgICAgaW5kZXhCb25kcyA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdcXG4nLCBpbmRleEJvbmRzKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEJvbmRzO1xuICAgICAgICBpbmRleEVuZCA9IGluZGV4Qm9uZHM7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtYmVycy5uYm9uZDsgaisrKSB7XG4gICAgICAgICAgICAvL3Jld3JpdGUgYm9uZCBudW1iZXJcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ1YzMCcsIGluZGV4KSArIDQ7XG4gICAgICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgICAgICAgICAgY29uc3QgYm9uZE51bWJlciA9IHBhcnNlSW50KG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSkgKyBuYm9uZDtcbiAgICAgICAgICAgIG1vbEJsb2Nrc1tpXSA9IG1vbEJsb2Nrc1tpXS5zbGljZSgwLCBpbmRleCkgKyBib25kTnVtYmVyICsgbW9sQmxvY2tzW2ldLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBhdG9tIHBhaXIgaW4gYm9uZFxuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBsZXQgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSkgKyBuYXRvbTtcbiAgICAgICAgICAgIG1vbEJsb2Nrc1tpXSA9IG1vbEJsb2Nrc1tpXS5zbGljZSgwLCBpbmRleCkgKyBhdG9tTnVtYmVyICsgbW9sQmxvY2tzW2ldLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBNYXRoLm1pbihtb2xCbG9ja3NbaV0uaW5kZXhPZignXFxuJywgaW5kZXgpLCBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KSk7XG4gICAgICAgICAgICBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIG5hdG9tO1xuICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEJvbmRFbmQgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignTSAgVjMwIEVORCBCT05EJyk7XG4gICAgICAgIGJvbmRCbG9jayArPSBtb2xCbG9ja3NbaV0uc3Vic3RyaW5nKGluZGV4Qm9uZHMgKyAxLCBpbmRleEJvbmRFbmQpO1xuICAgICAgICBsZXQgaW5kZXhDb2xsZWN0aW9uID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnKTsgLy8gVjMwMDAgaW5kZXggZm9yIGNvbGxlY3Rpb25zXG4gICAgICAgIHdoaWxlIChpbmRleENvbGxlY3Rpb24gIT0gLTEpIHtcbiAgICAgICAgICAgIGluZGV4Q29sbGVjdGlvbiArPSAyODtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25FbmQgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignKScsIGluZGV4Q29sbGVjdGlvbik7XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uRW50cmllcyA9IG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXhDb2xsZWN0aW9uLCBjb2xsZWN0aW9uRW5kKS5zcGxpdCgnICcpLnNsaWNlKDEpO1xuICAgICAgICAgICAgY29sbGVjdGlvbkVudHJpZXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChwYXJzZUludChlKSArIG5hdG9tKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaW5kZXhDb2xsZWN0aW9uID0gY29sbGVjdGlvbkVuZDtcbiAgICAgICAgICAgIGluZGV4Q29sbGVjdGlvbiA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJywgaW5kZXhDb2xsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBuYXRvbSArPSBudW1iZXJzLm5hdG9tIC0gMTtcbiAgICAgICAgbmJvbmQgKz0gbnVtYmVycy5uYm9uZDtcbiAgICAgICAgeFNoaWZ0ICs9IGNvb3JkaW5hdGVzLnhbbnVtYmVycy5uYXRvbSAtIDFdIC0gY29vcmRpbmF0ZXMueFswXTtcbiAgICB9XG4gICAgY29uc3QgZW50cmllcyA9IDQ7XG4gICAgY29uc3QgY29sbE51bWJlciA9IE1hdGguY2VpbChjb2xsZWN0aW9uLmxlbmd0aCAvIGVudHJpZXMpO1xuICAgIGNvbGxlY3Rpb25CbG9jayArPSAnTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcgKyBjb2xsZWN0aW9uLmxlbmd0aCArICcgLVxcbic7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xsTnVtYmVyOyBpKyspIHtcbiAgICAgICAgY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgJztcbiAgICAgICAgY29uc3QgZW50cmllc0N1cnJlbnQgPSBpICsgMSA9PSBjb2xsTnVtYmVyID8gY29sbGVjdGlvbi5sZW5ndGggLSAoY29sbE51bWJlciAtIDEpICogZW50cmllcyA6IGVudHJpZXM7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZW50cmllc0N1cnJlbnQ7IGorKykge1xuICAgICAgICAgICAgY29sbGVjdGlvbkJsb2NrICs9IChqICsgMSA9PSBlbnRyaWVzQ3VycmVudCkgP1xuICAgICAgICAgICAgICAgIChpID09IGNvbGxOdW1iZXIgLSAxID8gY29sbGVjdGlvbltlbnRyaWVzICogaSArIGpdICsgJylcXG4nIDogY29sbGVjdGlvbltlbnRyaWVzICogaSArIGpdICsgJyAtXFxuJykgOlxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25bZW50cmllcyAqIGkgKyBqXSArICcgJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL2dlbmVyYXRlIGZpbGVcbiAgICBuYXRvbSsrO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBDT1VOVFMgJyArIG5hdG9tICsgJyAnICsgbmJvbmQgKyAnIDAgMCAwXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQVRPTVxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBhdG9tQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBBVE9NXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQk9ORFxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBib25kQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBCT05EXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgQkVHSU4gQ09MTEVDVElPTlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSBjb2xsZWN0aW9uQmxvY2s7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIEVORCBDT0xMRUNUSU9OXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIENUQUJcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIEVORFxcbic7XG4gICAgcmV0dXJuIG1hY3JvTW9sQmxvY2s7XG59XG5mdW5jdGlvbiBleHRyYWN0QXRvbXNCb25kc051bWJlcnNWMzAwMChtb2xCbG9jaykge1xuICAgIG1vbEJsb2NrID0gbW9sQmxvY2sucmVwbGFjZUFsbCgnXFxyJywgJycpOyAvL2VxdWFsaXplIG9sZCBhbmQgbmV3IHNkZiBzdGFuZGFyZHNcbiAgICBsZXQgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdDT1VOVFMnKSArIDc7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBhbmQgYm9uZHMgbnVtYmVyXG4gICAgbGV0IGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICBjb25zdCBhdG9tc051bWJlciA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICBpbmRleCA9IGluZGV4RW5kICsgMTtcbiAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgY29uc3QgYm9uZHNOdW1iZXIgPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgcmV0dXJuIHsgbmF0b206IGF0b21zTnVtYmVyLCBuYm9uZDogYm9uZHNOdW1iZXIgfTtcbn1cbiIsImV4cG9ydCB2YXIgQ09MVU1OU19OQU1FUztcbihmdW5jdGlvbiAoQ09MVU1OU19OQU1FUykge1xuICAgIENPTFVNTlNfTkFNRVNbXCJTUExJVF9DT0xcIl0gPSBcIn5zcGxpdFwiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJBQ1RJVklUWVwiXSA9IFwifmFjdGl2aXR5XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlfc2NhbGVkXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcIn5hbGlnbmVkX3NlcXVlbmNlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFNSU5PX0FDSURfUkVTSURVRVwiXSA9IFwiQUFSXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUF9WQUxVRVwiXSA9IFwicFZhbHVlXCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIk1FQU5fRElGRkVSRU5DRVwiXSA9IFwiTWVhbiBkaWZmZXJlbmNlXCI7XG59KShDT0xVTU5TX05BTUVTIHx8IChDT0xVTU5TX05BTUVTID0ge30pKTtcbmV4cG9ydCB2YXIgQ0FURUdPUklFUztcbihmdW5jdGlvbiAoQ0FURUdPUklFUykge1xuICAgIENBVEVHT1JJRVNbXCJPVEhFUlwiXSA9IFwiT3RoZXJcIjtcbiAgICBDQVRFR09SSUVTW1wiQUxMXCJdID0gXCJBbGxcIjtcbn0pKENBVEVHT1JJRVMgfHwgKENBVEVHT1JJRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBUQUdTO1xuKGZ1bmN0aW9uIChUQUdTKSB7XG4gICAgVEFHU1tcIkFBUlwiXSA9IFwiQUFSXCI7XG4gICAgVEFHU1tcIlBPU0lUSU9OXCJdID0gXCJQb3NcIjtcbiAgICBUQUdTW1wiU0VQQVJBVE9SXCJdID0gXCJtb25vbWVyLXNlcGFyYXRvclwiO1xuICAgIFRBR1NbXCJTRUxFQ1RJT05cIl0gPSBcInNlbGVjdGlvblwiO1xufSkoVEFHUyB8fCAoVEFHUyA9IHt9KSk7XG5leHBvcnQgdmFyIFNFTV9UWVBFUztcbihmdW5jdGlvbiAoU0VNX1RZUEVTKSB7XG4gICAgU0VNX1RZUEVTW1wiQU1JTk9fQUNJRFNcIl0gPSBcImFtaW5vQWNpZHNcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFXCJdID0gXCJhbGlnbmVkU2VxdWVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBTElHTkVEX1NFUVVFTkNFX0RJRkZFUkVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZURpZmZlcmVuY2VcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWVwiXSA9IFwiYWN0aXZpdHlcIjtcbiAgICBTRU1fVFlQRVNbXCJBQ1RJVklUWV9TQ0FMRURcIl0gPSBcImFjdGl2aXR5U2NhbGVkXCI7XG4gICAgU0VNX1RZUEVTW1wiTWFjcm9fTW9sZWN1bGVcIl0gPSBcIk1hY3JvbW9sZWN1bGVcIjtcbn0pKFNFTV9UWVBFUyB8fCAoU0VNX1RZUEVTID0ge30pKTtcbmV4cG9ydCBjb25zdCBTVEFUUyA9ICdzdGF0cyc7XG5leHBvcnQgY29uc3QgRU1CRURESU5HX1NUQVRVUyA9ICdlbWJlZGRpbmdTdGF0dXMnO1xuZXhwb3J0IGNvbnN0IFBFUFRJREVTX0FOQUxZU0lTID0gJ2lzUGVwdGlkZXNBbmFseXNpcyc7XG5leHBvcnQgdmFyIEZMQUdTO1xuKGZ1bmN0aW9uIChGTEFHUykge1xuICAgIEZMQUdTW1wiQ0VMTF9DSEFOR0lOR1wiXSA9IFwiaXNDZWxsQ2hhbmdpbmdcIjtcbn0pKEZMQUdTIHx8IChGTEFHUyA9IHt9KSk7XG5leHBvcnQgY29uc3QgYWFyR3JvdXBzID0ge1xuICAgICdSJzogJ1BDJywgJ0gnOiAnUEMnLCAnSyc6ICdQQycsXG4gICAgJ0QnOiAnTkMnLCAnRSc6ICdOQycsXG4gICAgJ1MnOiAnVScsICdUJzogJ1UnLCAnTic6ICdVJywgJ1EnOiAnVScsXG4gICAgJ0MnOiAnU0MnLCAnVSc6ICdTQycsICdHJzogJ1NDJywgJ1AnOiAnU0MnLFxuICAgICdBJzogJ0gnLCAnVic6ICdIJywgJ0knOiAnSCcsICdMJzogJ0gnLCAnTSc6ICdIJywgJ0YnOiAnSCcsICdZJzogJ0gnLCAnVyc6ICdIJyxcbiAgICAnLSc6ICctJyxcbn07XG5leHBvcnQgY29uc3QgZ3JvdXBEZXNjcmlwdGlvbiA9IHtcbiAgICAnUEMnOiB7ICdkZXNjcmlwdGlvbic6ICdQb3NpdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydSJywgJ0gnLCAnSyddIH0sXG4gICAgJ05DJzogeyAnZGVzY3JpcHRpb24nOiAnTmVnYXRpdmUgQW1pbm8gQWNpZHMsIHdpdGggRWxlY3RyaWNhbGx5IENoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnRCcsICdFJ10gfSxcbiAgICAnVSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggUG9sYXIgVW5jaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1MnLCAnVCcsICdOJywgJ1EnXSB9LFxuICAgICdTQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1NwZWNpYWwgQ2FzZXMnLCAnYW1pbm9BY2lkcyc6IFsnQycsICdVJywgJ0cnLCAnUCddIH0sXG4gICAgJ0gnOiB7XG4gICAgICAgICdkZXNjcmlwdGlvbic6ICdBbWlubyBBY2lkcyB3aXRoIEh5ZHJvcGhvYmljIFNpZGUgQ2hhaW4nLFxuICAgICAgICAnYW1pbm9BY2lkcyc6IFsnQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sXG4gICAgfSxcbiAgICAnLSc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Vua25vd24gQW1pbm8gQWNpZCcsICdhbWlub0FjaWRzJzogWyctJ10gfSxcbn07XG4iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCB7IE5vdGF0aW9uQ29udmVydGVyIH0gZnJvbSAnLi9ub3RhdGlvbi1jb252ZXJ0ZXInO1xuLyoqXG4gKiBDb252ZXJ0cyBub3RhdGlvbnMgb2YgYSBNYWNyb21vbGVjdWxlIGNvbHVtblxuICpcbiAqIEBwYXJhbSB7REcuY29sdW1ufSBjb2wgQ29sdW1uIHdpdGggJ01hY3JvbW9sZWN1bGUnIHNlbWFudGljIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnQoY29sKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgIC8vVE9ETzogcmVhZCBhbGwgbm90YXRpb25zXG4gICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICAgICdmYXN0YScsXG4gICAgICAgICdzZXBhcmF0b3InLFxuICAgICAgICAnSEVMTSdcbiAgICBdO1xuICAgIGNvbnN0IGNob2ljZXMgPSB1aS5jaG9pY2VJbnB1dCgnY29udmVydCB0bycsICcnLCB1bml0cy5maWx0ZXIoKGUpID0+IGUgIT09IGN1cnJlbnQpKTtcbiAgICB1aS5kaWFsb2coJ0NvbnZlcnQgc2VxdWVuY2UnKVxuICAgICAgICAuYWRkKHVpLmRpdihbXG4gICAgICAgIHVpLmgxKCdjdXJyZW50IG5vdGF0aW9uJyksXG4gICAgICAgIHVpLmRpdihjdXJyZW50KSxcbiAgICAgICAgY2hvaWNlcy5yb290XG4gICAgXSkpXG4gICAgICAgIC5vbk9LKCgpID0+IHtcbiAgICAgICAgLy9UT0RPOiBjcmVhdGUgbmV3IGNvbnZlcnRlZCBjb2x1bW5cbiAgICAgICAgY29uc3QgY29udmVydGVyID0gbmV3IE5vdGF0aW9uQ29udmVydGVyKGNvbCwgY2hvaWNlcy52YWx1ZSk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IGNvbnZlcnRlci5jb252ZXJ0KCk7XG4gICAgICAgIGNvbC5kYXRhRnJhbWUuY29sdW1ucy5hZGQobmV3Q29sdW1uKTtcbiAgICB9KVxuICAgICAgICAuc2hvdygpO1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuLy9AdHMtaWdub3JlXG5pbXBvcnQgQWlvbGkgZnJvbSAnQGJpb3dhc20vYWlvbGknO1xuaW1wb3J0IHsgQWxpZ25lZFNlcXVlbmNlRW5jb2RlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXF1ZW5jZS1lbmNvZGVyJztcbmltcG9ydCAqIGFzIEMgZnJvbSAnLi9jb25zdGFudHMnO1xuLyoqXG4gKiBDb252ZXJ0cyBhcnJheSBvZiBzZXF1ZW5jZXMgaW50byBzaW1wbGUgZmFzdGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nW119IHNlcXVlbmNlcyBJbnB1dCBsaXN0IG9mIHNlcXVlbmNlcy5cbiAqIEByZXR1cm4ge3N0cmluZ30gRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcykge1xuICAgIHJldHVybiBzZXF1ZW5jZXMucmVkdWNlKChhLCB2LCBpKSA9PiBhICsgYD5zYW1wbGUke2kgKyAxfVxcbiR7dn1cXG5gLCAnJyk7XG59XG4vKipcbiAqIEV4dHJhY3RzIGFycmF5IG9mIHNlcXVlbmNlcyBmcm9tIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhIEZhc3RhLWZvcm1hdHRlZCBzdHJpbmcuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gT3V0cHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICovXG5mdW5jdGlvbiBfZmFzdGFUb1N0cmluZ3MoZmFzdGEpIHtcbiAgICByZXR1cm4gZmFzdGEucmVwbGFjZSgvPnNhbXBsZVxcZCsoXFxyXFxufFxccnxcXG4pL2csICcnKS5zcGxpdCgnXFxuJyk7XG59XG4vKipcbiAqIFJ1bnMgQWlvbGkgZW52aXJvbm1lbnQgd2l0aCBrYWxpZ24gdG9vbC5cbiAqXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc3JjQ29sIENvbHVtbiB3aXRoIHNlcXVlbmNlcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBbGlnbmVkIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBhbGlnbmVkLlxuICogQHJldHVybiB7UHJvbWlzZTxERy5Db2x1bW4+fSBBbGlnbmVkIHNlcXVlbmNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkthbGlnbihzcmNDb2wsIGlzQWxpZ25lZCA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHNlcXVlbmNlcyA9IHNyY0NvbC50b0xpc3QoKTtcbiAgICAgICAgaWYgKGlzQWxpZ25lZClcbiAgICAgICAgICAgIHNlcXVlbmNlcyA9IHNlcXVlbmNlcy5tYXAoKHYsIF8pID0+IEFsaWduZWRTZXF1ZW5jZUVuY29kZXIuY2xlYW4odikucmVwbGFjZSgvXFwtL2csICcnKSk7XG4gICAgICAgIGNvbnN0IGZhc3RhID0gX3N0cmluZ3NUb0Zhc3RhKHNlcXVlbmNlcyk7XG4gICAgICAgIGNvbnN0IENMSSA9IHlpZWxkIG5ldyBBaW9saSh7XG4gICAgICAgICAgICB0b29sOiAna2FsaWduJyxcbiAgICAgICAgICAgIHZlcnNpb246ICczLjMuMScsXG4gICAgICAgICAgICByZWluaXQ6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZyhbJ2Zhc3RhLmxlbmd0aCA9JywgZmFzdGEubGVuZ3RoXSk7XG4gICAgICAgIHlpZWxkIENMSS5mcy53cml0ZUZpbGUoJ2lucHV0LmZhJywgZmFzdGEpO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB5aWVsZCBDTEkuZXhlYygna2FsaWduIGlucHV0LmZhIC1mIGZhc3RhIC1vIHJlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zdCBidWYgPSB5aWVsZCBDTEkuY2F0KCdyZXN1bHQuZmFzdGEnKTtcbiAgICAgICAgY29uc29sZS53YXJuKG91dHB1dCk7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBfZmFzdGFUb1N0cmluZ3MoYnVmKS5zbGljZSgwLCBzZXF1ZW5jZXMubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdGd0Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKGBtc2EoJHtzcmNDb2wubmFtZX0pYCwgYWxpZ25lZCk7XG4gICAgICAgIC8vIHVuaXRzXG4gICAgICAgIGNvbnN0IHNyY1VuaXRzID0gc3JjQ29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgY29uc3QgdGd0VW5pdHMgPSBzcmNVbml0cy5zcGxpdCgnOicpLm1hcCgocCwgaSkgPT4gaSA9PSAxID8gcCArICcuTVNBJyA6IHApLmpvaW4oJzonKTtcbiAgICAgICAgdGd0Q29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0Z3RVbml0cyk7XG4gICAgICAgIHRndENvbC5zZW1UeXBlID0gQy5TRU1fVFlQRVMuTWFjcm9fTW9sZWN1bGU7XG4gICAgICAgIHJldHVybiB0Z3RDb2w7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdGVzdE1TQUVub3VnaE1lbW9yeShjb2wpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBzZXF1ZW5jZXNDb3VudCA9IGNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRlbHRhID0gc2VxdWVuY2VzQ291bnQgLyAxMDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBkZWx0YTsgaSA8IHNlcXVlbmNlc0NvdW50OyBpICs9IGRlbHRhKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJ1bkthbGlnbihERy5Db2x1bW4uZnJvbVN0cmluZ3MoY29sLm5hbWUsIGNvbC50b0xpc3QoKS5zbGljZSgwLCBNYXRoLnJvdW5kKGkpKSkpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBydW5LYWxpZ24gc3VjY2VlZGVkIG9uICR7aX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBydW5LYWxpZ24gZmFpbGVkIG9uICR7aX0gd2l0aCAnJHtlcnJvcn0nYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vLyBleHBvcnQgY29uc3QgZW51bSBOT1RBVElPTiB7XG4vLyAgIC8vIHRoZXNlIHZhbHVlcyBjYW4gYmUgY2hhbmdlZCB0byBcInVzZXItZnJpZW5kbHlcIiBvbmVzIGxhdGVyIG9uXG4vLyAgIEZBU1RBID0gJ2Zhc3RhJyxcbi8vICAgU0VQQVJBVE9SID0gJ3NlcGFyYXRvcicsXG4vLyAgIEhFTE0gPSAnaGVsbSdcbi8vIH1cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciB7XG4gICAgY29uc3RydWN0b3IoY29sLCB0YXJnZXQpIHtcbiAgICAgICAgLy8gdGhlc2UgdmFsdWVzIGNhbiBiZSBjaGFuZ2VkIHRvIFwidXNlci1mcmllbmRseVwiIG9uZXMgbGF0ZXIgb25cbiAgICAgICAgdGhpcy5fZmFzdGEgPSAnZmFzdGEnO1xuICAgICAgICB0aGlzLl9zZXBhcmF0b3IgPSAnc2VwYXJhdG9yJztcbiAgICAgICAgdGhpcy5faGVsbSA9ICdoZWxtJztcbiAgICAgICAgdGhpcy5fc291cmNlQ29sdW1uID0gY29sO1xuICAgICAgICB0aGlzLl9jdXJyZW50VW5pdHMgPSB0aGlzLl9zb3VyY2VDb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICAgICAgdGhpcy5fc291cmNlTm90YXRpb24gPSB0aGlzLmRldGVybWluZVNvdXJjZU5vdGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3RhcmdldE5vdGF0aW9uID0gdGFyZ2V0O1xuICAgIH1cbiAgICBnZXQgc291cmNlQ29sdW1uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29sdW1uOyB9XG4gICAgZ2V0IGN1cnJlbnRVbml0cygpIHsgcmV0dXJuIHRoaXMuX2N1cnJlbnRVbml0czsgfVxuICAgIGdldCBzb3VyY2VOb3RhdGlvbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZU5vdGF0aW9uOyB9XG4gICAgZ2V0IHRhcmdldE5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0Tm90YXRpb247IH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PSB0aGlzLl9mYXN0YTsgfVxuICAgIGlzU2VwYXJhdG9yKCkgeyByZXR1cm4gdGhpcy5zb3VyY2VOb3RhdGlvbiA9PSB0aGlzLl9zZXBhcmF0b3I7IH1cbiAgICBpc0hlbG0oKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09IHRoaXMuX2hlbG07IH1cbiAgICBkZXRlcm1pbmVTb3VyY2VOb3RhdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnZmFzdGEnKSlcbiAgICAgICAgICAgIHJldHVybiAnZmFzdGEnO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmN1cnJlbnRVbml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ3NlcGFyYXRvcicpKVxuICAgICAgICAgICAgcmV0dXJuICdzZXBhcmF0b3InO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcG9zc2libGUgZXhjZXB0aW9uc1xuICAgICAgICAgICAgcmV0dXJuICdIRUxNJztcbiAgICB9XG4gICAgY29udmVydEZhc3RhVG9TZXBhcmF0b3IoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuc291cmNlQ29sdW1uLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9ICdjb252ZXJ0ZWQnO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJ2Zhc3RhMnNlcCcpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRGYXN0YVRvSGVsbSgpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5zb3VyY2VDb2x1bW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gJ2NvbnZlcnRlZCc7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnZmFzdGEyaGVsbScpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLnNvdXJjZUNvbHVtbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSAnY29udmVydGVkJztcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCBuZXdDb2xOYW1lLCBuZXcgQXJyYXkobGVuKS5maWxsKCdzZXAyZmFzdGEnKSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZW1UeXBlID0gJ01hY3JvbW9sZWN1bGUnO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICBjb252ZXJ0U2VwYXJhdG9yVG9IZWxtKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLnNvdXJjZUNvbHVtbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSAnY29udmVydGVkJztcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCBuZXdDb2xOYW1lLCBuZXcgQXJyYXkobGVuKS5maWxsKCdzZXAyaGVsbScpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9GYXN0YSgpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5zb3VyY2VDb2x1bW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gJ2NvbnZlcnRlZCc7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnaGVsbTJmYXN0YScpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuc291cmNlQ29sdW1uLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9ICdjb252ZXJ0ZWQnO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJ2hlbG0yc2VwJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLy8gVE9ETzogd3JpdGUgdGhlIGJvZGllcyBvZiBjb252ZXJ0ZXIgbWV0aG9kc1xuICAgIGNvbnZlcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNvdXJjZU5vdGF0aW9uID09IHRoaXMuX2Zhc3RhICYmXG4gICAgICAgICAgICB0aGlzLnRhcmdldE5vdGF0aW9uID09IHRoaXMuX3NlcGFyYXRvcilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5fZmFzdGEgJiZcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Tm90YXRpb24gPT0gdGhpcy5faGVsbSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvSGVsbSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNvdXJjZU5vdGF0aW9uID09IHRoaXMuX3NlcGFyYXRvciAmJlxuICAgICAgICAgICAgdGhpcy50YXJnZXROb3RhdGlvbiA9PSB0aGlzLl9mYXN0YSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5fc2VwYXJhdG9yICYmXG4gICAgICAgICAgICB0aGlzLnRhcmdldE5vdGF0aW9uID09IHRoaXMuX2hlbG0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9IZWxtKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5faGVsbSAmJlxuICAgICAgICAgICAgdGhpcy50YXJnZXROb3RhdGlvbiA9PSB0aGlzLl9mYXN0YSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtVG9GYXN0YSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCk7XG4gICAgfVxufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCB7IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MnO1xuaW1wb3J0IHsgQXZhaWxhYmxlTWV0cmljcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzKGNvbCwgc2VxKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nQXJyYXkgPSBjb2wudG9MaXN0KCk7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlcyA9IG5ldyBBcnJheShzdHJpbmdBcnJheS5sZW5ndGgpLmZpbGwoMC4wKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdBcnJheS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgIGRpc3RhbmNlc1tpXSA9IGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoQXZhaWxhYmxlTWV0cmljc1snU3RyaW5nJ11bJ0xldmVuc2h0ZWluJ10oc3RyaW5nQXJyYXlbaV0sIHNlcSkpO1xuICAgICAgICByZXR1cm4gREcuQ29sdW1uLmZyb21MaXN0KERHLkNPTFVNTl9UWVBFLkZMT0FULCAnZGlzdGFuY2VzJywgZGlzdGFuY2VzKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkcmF3VG9vbHRpcChwYXJhbXMpIHtcbiAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdID0gdWkuZGl2SChbXSk7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSB1aS5kaXZWKFtcbiAgICAgICAgdWkuZGl2VGV4dCgnc2VxdWVuc2UnKSxcbiAgICAgICAgdWkuZGl2VGV4dChwYXJhbXMuYWN0aXZpdHkubmFtZSksXG4gICAgXSk7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuZm9udFdlaWdodCA9ICdib2xkJztcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ3NwYWNlLWJldHdlZW4nO1xuICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0uYXBwZW5kKGNvbHVtbk5hbWVzKTtcbiAgICBwYXJhbXMubGluZS5tb2xzLmZvckVhY2goKG1vbCkgPT4ge1xuICAgICAgICBjb25zdCBzZXEgPSB1aS5kaXZUZXh0KHBhcmFtcy5kZi5nZXQocGFyYW1zLnNlcUNvbC5uYW1lLCBtb2wpKTtcbiAgICAgICAgY29uc3QgYWN0aXZpdHkgPSB1aS5kaXZUZXh0KHBhcmFtcy5kZi5nZXQocGFyYW1zLmFjdGl2aXR5Lm5hbWUsIG1vbCkudG9GaXhlZCgyKSk7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2xlZnQnO1xuICAgICAgICBhY3Rpdml0eS5zdHlsZS5wYWRkaW5nTGVmdCA9ICczMHB4JztcbiAgICAgICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXS5hcHBlbmQodWkuZGl2VihbXG4gICAgICAgICAgICBzZXEsXG4gICAgICAgICAgICBhY3Rpdml0eSxcbiAgICAgICAgXSwgeyBzdHlsZTogeyBwYWRkaW5nTGVmdDogJzVweCcgfSB9KSk7XG4gICAgfSk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBBdmFpbGFibGVNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgeyByZWR1Y2VEaW1lbnNpbmFsaXR5V2l0aE5vcm1hbGl6YXRpb24gfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zZXF1ZW5jZS1zcGFjZSc7XG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VTcGFjZShzcGFjZVBhcmFtcykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBwcmVwYXJlZERhdGE7XG4gICAgICAgIGlmICghKHNwYWNlUGFyYW1zLnNlcUNvbC50YWdzW0RHLlRBR1MuVU5JVFNdID09PSAnSEVMTScpKSB7XG4gICAgICAgICAgICBjb25zdCBzZXAgPSBzcGFjZVBhcmFtcy5zZXFDb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcEZpbmFsID0gc2VwID8gc2VwID09PSAnLicgPyAnXFxcXFxcLicgOiBzZXAgOiAnLSc7XG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc2VwRmluYWwsICdnJyk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1snU3RyaW5nJ10pLmluY2x1ZGVzKHNwYWNlUGFyYW1zLnNpbWlsYXJpdHlNZXRyaWMpKVxuICAgICAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKS5tYXAoKHYpID0+IHYucmVwbGFjZShyZWdleCwgJycpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCkubWFwKCh2KSA9PiB2LnJlcGxhY2UocmVnZXgsICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwcmVwYXJlZERhdGEgPSBzcGFjZVBhcmFtcy5zZXFDb2wudG9MaXN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VxdWVuY2VTcGFjZVJlc3VsdCA9IHlpZWxkIHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbihwcmVwYXJlZERhdGEsIHNwYWNlUGFyYW1zLm1ldGhvZE5hbWUsIHNwYWNlUGFyYW1zLnNpbWlsYXJpdHlNZXRyaWMsIHNwYWNlUGFyYW1zLm9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb2xzID0gc3BhY2VQYXJhbXMuZW1iZWRBeGVzTmFtZXMubWFwKChuYW1lLCBpbmRleCkgPT4gREcuQ29sdW1uLmZyb21GbG9hdDMyQXJyYXkobmFtZSwgc2VxdWVuY2VTcGFjZVJlc3VsdC5lbWJlZGRpbmdbaW5kZXhdKSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBzZXF1ZW5jZVNwYWNlUmVzdWx0LmRpc3RhbmNlLCBjb29yZGluYXRlczogbmV3IERHLkNvbHVtbkxpc3QoY29scykgfTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWJlZGRpbmdDb2xzTmFtZXMoZGYpIHtcbiAgICBjb25zdCBheGVzID0gWydFbWJlZF9YJywgJ0VtYmVkX1knXTtcbiAgICBjb25zdCBjb2xOYW1lSW5kID0gZGYuY29sdW1ucy5uYW1lcygpLmZpbHRlcigoaXQpID0+IGl0LmluY2x1ZGVzKGF4ZXNbMF0pKS5sZW5ndGggKyAxO1xuICAgIHJldHVybiBheGVzLm1hcCgoaXQpID0+IGAke2l0fV8ke2NvbE5hbWVJbmR9YCk7XG59XG4iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfTU9OT01FUl9DT0wgPSAnc3ltYm9sJztcbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX01PTEZJTEVfQ09MID0gJ21vbGZpbGUnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfRklMRU5BTUUgPSAnL3NhbXBsZXMvSEVMTUNvcmVMaWJyYXJ5Lmpzb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2wsIG1vbm9tZXJzTGliKSB7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgICBjb25zdCBzcGxpdHRlckZ1bmMgPSBXZWJMb2dvLmdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICAgIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYik7XG4gICAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5sZW5ndGg7ICsraSkge1xuICAgICAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICAgICAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXJzW2pdKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2xGaWxlc0ZvclNlcS5wdXNoKG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICAgIH1cbiAgICByZXR1cm4gbW9sRmlsZXM7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9tb21lcnNNb2xEaWN0KGxpYikge1xuICAgIGNvbnN0IGRpY3QgPSB7fTtcbiAgICBjb25zdCBtb25tZXJzQ29sID0gbGliLmNvbChIRUxNX0NPUkVfTElCX01PTk9NRVJfQ09MKTtcbiAgICBjb25zdCBtb2xDb2wgPSBsaWIuY29sKEhFTE1fQ09SRV9MSUJfTU9MRklMRV9DT0wpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGliLnJvd0NvdW50OyArK2kpIHtcbiAgICAgICAgZGljdFttb25tZXJzQ29sLmdldChpKV0gPSBtb2xDb2wuZ2V0KGkpO1xuICAgIH1cbiAgICByZXR1cm4gZGljdDtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBWZFJlZ2lvblR5cGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmQtcmVnaW9ucyc7XG5jb25zdCB2cnQgPSBWZFJlZ2lvblR5cGU7XG4vLyBQb3NpdGlvbnMgb2YgcmVnaW9ucyBmb3IgbnVtYmVyaW5nIHNjaGVtZXNcbi8vIGh0dHA6Ly93d3cuYmlvaW5mLm9yZy51ay9hYnMvaW5mby5odG1sXG4vLyBjb25zdCBpbWd0UmVnaW9uczogVmRSZWdpb25bXSA9IFtcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMScsICdMaWdodCcsIDEsICcxJywgJzI2JyksXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjEnLCAnSGVhdnknLCAxLCAnMScsICcyNicpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIxJywgJ0xpZ2h0JywgMiwgJzI3JywgJzM4JyksIC8vIDI3LTMyXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuQ0RSLCAnQ0RSMScsICdIZWF2eScsIDIsICcyNycsICczOCcpLCAvLyAyNy0zMlxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5GUiwgJ0ZSMicsICdMaWdodCcsIDMsICczOScsICc1NScpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIyJywgJ0hlYXZ5JywgMywgJzM5JywgJzU1JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkNEUiwgJ0NEUjInLCAnTGlnaHQnLCA0LCAnNTYnLCAnNjUnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIyJywgJ0hlYXZ5JywgNCwgJzU2JywgJzY1JyksXG4vL1xuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIzJywgJ0xpZ2h0JywgNSwgJzY2JywgJzEwNCcpLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlIzJywgJ0hlYXZ5JywgNSwgJzY2JywgJzEwNCcpLFxuLy9cbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIzJywgJ0xpZ2h0JywgNiwgJzEwNScsICcxMTcnKSxcbi8vICAgbmV3IFZkUmVnaW9uKHZydC5DRFIsICdDRFIzJywgJ0hlYXZ5JywgNiwgJzEwNScsICcxMTcnKSxcbi8vXG4vLyAgIG5ldyBWZFJlZ2lvbih2cnQuRlIsICdGUjQnLCAnTGlnaHQnLCA3LCAnMTE4JywgbnVsbC8qMTI3Ki8pLFxuLy8gICBuZXcgVmRSZWdpb24odnJ0LkZSLCAnRlI0JywgJ0hlYXZ5JywgNywgJzExOCcsIG51bGwvKjEyOCovKSxcbi8vIF07XG4vKiogVmlld2VyIHdpdGggdGFicyBiYXNlZCBvbiBkZXNjcmlwdGlvbiBvZiBjaGFpbiByZWdpb25zLlxuICogIFVzZWQgdG8gZGVmaW5lIHJlZ2lvbnMgb2YgYW4gaW1tdW5vZ2xvYnVsaW4gTEMuXG4gKi9cbmV4cG9ydCBjbGFzcyBWZFJlZ2lvbnNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIC8vIHByaXZhdGUgcmVnaW9uc0RmOiBERy5EYXRhRnJhbWU7XG4gICAgICAgIHRoaXMucmVnaW9uc0ZnID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSByZWdpb25zVFY6IERHLlRhYmxlVmlldztcbiAgICAgICAgdGhpcy5yZWdpb25zUm9vdCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wYW5lbE5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLnJlZ2lvbnMgPSBbXTtcbiAgICAgICAgLy8gI3JlZ2lvbiAtLSBIYW5kbGUgY29udHJvbHMnIGV2ZW50cyAtLVxuICAgICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgIC8vICNlbmRyZWdpb25cbiAgICAgICAgLy8jcmVnaW9uIC0tIFZpZXcgLS1cbiAgICAgICAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5tYWluTGF5b3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sb2dvcyA9IFtdO1xuICAgICAgICAvLyBUbyBwcmV2ZW50IGFtYmlndW91cyBudW1iZXJpbmcgc2NoZW1lIGluIE1MQlxuICAgICAgICB0aGlzLnJlZ2lvblR5cGVzID0gdGhpcy5zdHJpbmdMaXN0KCdyZWdpb25UeXBlcycsIFt2cnQuQ0RSXSwgeyBjaG9pY2VzOiBPYmplY3QudmFsdWVzKHZydCkuZmlsdGVyKCh0KSA9PiB0ICE9IHZydC5Vbmtub3duKSB9KTtcbiAgICAgICAgdGhpcy5jaGFpbnMgPSB0aGlzLnN0cmluZ0xpc3QoJ2NoYWlucycsIFsnSGVhdnknLCAnTGlnaHQnXSwgeyBjaG9pY2VzOiBbJ0hlYXZ5JywgJ0xpZ2h0J10gfSk7XG4gICAgICAgIHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeCA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4JywgJ2NoYWluIHNlcXVlbmNlJyk7XG4gICAgfVxuICAgIGdldCBkZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZyYW1lO1xuICAgIH1cbiAgICAvLyBUT0RPOiAub25UYWJsZUF0dGFjaGVkIGlzIG5vdCBjYWxsaW5nIG9uIGRhdGFGcmFtZSBzZXQsIG9uUHJvcGVydHlDaGFuZ2VkICBhbHNvIG5vdCBjYWxsaW5nXG4gICAgc2V0RGYodmFsdWUsIHJlZ2lvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5zZXREZigpJyk7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmRlc3Ryb3lWaWV3KCk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbnMgPSByZWdpb25zO1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuYnVpbGRWaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgLy8jcmVnaW9uIHJlZ2lvbnNERiB3aXRoIGZpbHRlclxuICAgICAgICAgICAgLy8gdGhpcy5yZWdpb25zRGYgPSBERy5EYXRhRnJhbWUuZnJvbU9iamVjdHModGhpcy5yZWdpb25zKTtcbiAgICAgICAgICAgIC8vIHRoaXMucmVnaW9uc0RmLnJvd3MuZmlsdGVyKChyb3cpID0+IHJvdy5uYW1lID09ICdDRFIxJyk7XG4gICAgICAgICAgICAvLyAvLyBUbyBhdmFpbGFibGUgb3B0aW9ucyAvXG4gICAgICAgICAgICAvLyB0aGlzLnJlZ2lvbnNGZyA9IChhd2FpdCB0aGlzLnJlZ2lvbnNEZi5wbG90LmZyb21UeXBlKERHLlZJRVdFUi5GSUxURVJTLCB7XG4gICAgICAgICAgICAvLyAgIC8vIGNvbHVtbk5hbWVzOiBbJ25hbWUnLF0sXG4gICAgICAgICAgICAvLyAgIHNob3dGaWx0ZXJDb3VudHNJbmRpY2F0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIC8vICAgc2hvd0hlYWRlcjogZmFsc2UsXG4gICAgICAgICAgICAvLyAgIHNob3dTZWFyY2hCb3g6IGZhbHNlLFxuICAgICAgICAgICAgLy8gICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAvLyAgICAge3R5cGU6IERHLkZJTFRFUl9UWVBFLkNBVEVHT1JJQ0FMLCBjb2x1bW46ICd0eXBlJywgbGFiZWw6ICdSZWdpb24gbmFtZScsIHNob3dIaXN0b2dyYW06IGZhbHNlfSxcbiAgICAgICAgICAgIC8vICAgICB7dHlwZTogREcuRklMVEVSX1RZUEUuQ0FURUdPUklDQUwsIGNvbHVtbjogJ25hbWUnLCBsYWJlbDogJ1JlZ2lvbiB0eXBlJywgc2hvd0hpc3RvZ3JhbTogZmFsc2V9LFxuICAgICAgICAgICAgLy8gICBdLFxuICAgICAgICAgICAgLy8gICB0aXRsZTogJ1JlZ2lvbnMgZmlsdGVyJyxcbiAgICAgICAgICAgIC8vICAgc2hvd1RpdGxlOiB0cnVlLFxuICAgICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogJ0ZpbHRlciBmb3IgcmVnaW9ucyBvZiBtdWx0aXBsZSBhbGlnbm1lbnQgYnkgSU1HVCBub21lbmNsYXR1cmUnLFxuICAgICAgICAgICAgLy8gICBzb21lUHJvcGVydHk6ICdIZWxsbycsXG4gICAgICAgICAgICAvLyB9KSkgYXMgREcuRmlsdGVyR3JvdXA7XG4gICAgICAgICAgICAvLyNlbmRyZWdpb24gcmVnaW9uc0RGIHdpdGggZmlsdGVyXG4gICAgICAgICAgICAvLyB0aGlzLm1sYlZpZXcuZG9ja01hbmFnZXIuZG9jayh0aGlzLnJlZ2lvbnNGZy5yb290LCBERy5ET0NLX1RZUEUuTEVGVCwgcm9vdE5vZGUsICdGaWx0ZXIgcmVnaW9ucycsIDAuMik7XG4gICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh1aS5vblNpemVDaGFuZ2VkKHRoaXMucm9vdCkuc3Vic2NyaWJlKHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQuYmluZCh0aGlzKSkpO1xuICAgICAgICAgICAgLy8gcnhqcy5mcm9tRXZlbnQodGhpcy5yb290LCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKHRoaXMub25Nb3VzZU1vdmVSb290LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5yb290LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMub25Nb3VzZU1vdmVSb290LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgeWllbGQgdGhpcy5idWlsZFZpZXcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHlpZWxkIHRoaXMuaW5pdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHkpIHtcbiAgICAgICAgY29uc3QgX3N1cGVyID0gT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICAgICAgICBvblByb3BlcnR5Q2hhbmdlZDogeyBnZXQ6ICgpID0+IHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBfc3VwZXIub25Qcm9wZXJ0eUNoYW5nZWQuY2FsbCh0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAocHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVnaW9uVHlwZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NoYWlucyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lUG9zdGZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9wZW4obWxiVmlldykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wYW5lbE5vZGUgPSBtbGJWaWV3LmRvY2tNYW5hZ2VyLmRvY2sodGhpcy5yb290LCBERy5ET0NLX1RZUEUuVE9QLCBudWxsLCAnUmVnaW9ucycsIDAuMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaG93KG1sYlZpZXcpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5jYWxjU2l6ZSgpO1xuICAgIH1cbiAgICBkZXN0cm95VmlldygpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IFVuc3Vic2NyaWJlIGZyb20gYW5kIHJlbW92ZSBhbGwgdmlldyBlbGVtZW50c1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgVmRSZWdpb25zVmlld2VyLmRlc3Ryb3lWaWV3KCBtYWluTGF5b3V0ID0gJHshdGhpcy5tYWluTGF5b3V0ID8gJ25vbmUnIDogJ3ZhbHVlJ30gKWApO1xuICAgICAgICAgICAgaWYgKHRoaXMubWFpbkxheW91dCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5yb290LnJlbW92ZUNoaWxkKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYWluTGF5b3V0LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3QgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMubWFpbkxheW91dCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBidWlsZFZpZXcoKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdWZFJlZ2lvbnNWaWV3ZXIuYnVpbGRWaWV3KCkgc3RhcnQnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbE5hbWVzID0gT2JqZWN0LmFzc2lnbih7fSwgLi4udGhpcy5jaGFpbnMubWFwKChjaGFpbikgPT4gKHsgW2NoYWluXTogYCR7Y2hhaW59ICR7dGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWVQb3N0Zml4fWAgfSkpKTtcbiAgICAgICAgICAgIGNvbnN0IHJlZ2lvbnNGaWx0ZXJlZCA9IHRoaXMucmVnaW9ucy5maWx0ZXIoKHIpID0+IHRoaXMucmVnaW9uVHlwZXMuaW5jbHVkZXMoci50eXBlKSk7XG4gICAgICAgICAgICBjb25zdCBvcmRlckxpc3QgPSBBcnJheS5mcm9tKG5ldyBTZXQocmVnaW9uc0ZpbHRlcmVkLm1hcCgocikgPT4gci5vcmRlcikpKS5zb3J0KCk7XG4gICAgICAgICAgICB0aGlzLmxvZ29zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBvcmRlckkgPSAwOyBvcmRlckkgPCBvcmRlckxpc3QubGVuZ3RoOyBvcmRlckkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lvbkNoYWlucyA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hhaW4gb2YgdGhpcy5jaGFpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnaW9uID0gcmVnaW9uc0ZpbHRlcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgocikgPT4gci5vcmRlciA9PSBvcmRlckxpc3Rbb3JkZXJJXSAmJiByLmNoYWluID09IGNoYWluKTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uQ2hhaW5zW2NoYWluXSA9ICh5aWVsZCB0aGlzLmRhdGFGcmFtZS5wbG90LmZyb21UeXBlKCdXZWJMb2dvJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VDb2x1bW5OYW1lOiBjb2xOYW1lc1tjaGFpbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uTmFtZTogcmVnaW9uLnBvc2l0aW9uU3RhcnROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kUG9zaXRpb25OYW1lOiByZWdpb24ucG9zaXRpb25FbmROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZml4V2lkdGg6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2ViTG9nbyBjcmVhdGlvbiBmaXJlcyBvblJvb3RTaXplQ2hhbmdlZCBldmVudCBldmVuIGJlZm9yZSBjb250cm9sIGJlaW5nIGFkZGVkIHRvIHRoaXMubG9nb3NcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ29zW29yZGVySV0gPSByZWdpb25DaGFpbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB1aS50YWJsZUZyb21NYXAoKVxuICAgICAgICAgICAgLy8gREcuSHRtbFRhYmxlLmNyZWF0ZSgpXG4gICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQgPSB1aS50YWJsZSh0aGlzLmNoYWlucywgKGNoYWluKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY2hhaW4gbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgLi4uKG9yZGVyTGlzdC5sZW5ndGggPiAwID8gW3VpLmRpdihjaGFpbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgtOTBkZWcpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJzEycHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzE2cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICcyNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogJzZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSldIDogW10pLFxuICAgICAgICAgICAgICAgICAgICAvLyBMaXN0IHdpdGggY29udHJvbHMgZm9yIHJlZ2lvbnNcbiAgICAgICAgICAgICAgICAgICAgLi4uWy4uLkFycmF5KG9yZGVyTGlzdC5sZW5ndGgpLmtleXMoKV0ubWFwKChvcmRlckkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdsID0gdGhpcy5sb2dvc1tvcmRlckldW2NoYWluXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdsLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzRGl2ID0gdWkuZGl2KFt3bC5yb290XSAvKmAke2NoYWlufSAke3JlZ2lvbnNGaWx0ZXJlZFtySV19YCovLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzRGl2O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgfSwgWycnLCAuLi5bLi4uQXJyYXkob3JkZXJMaXN0Lmxlbmd0aCkua2V5cygpXS5tYXAoKG9yZGVySSkgPT4gcmVnaW9uc0ZpbHRlcmVkLmZpbmQoKHIpID0+IHIub3JkZXIgPT0gb3JkZXJMaXN0W29yZGVySV0gJiYgci5jaGFpbiA9PSB0aGlzLmNoYWluc1swXSkubmFtZSB8fCAnTmFtZScpXSk7XG4gICAgICAgICAgICB0aGlzLm1haW5MYXlvdXQuY2xhc3NOYW1lID0gJ21sYi12ZC1yZWdpb25zLXZpZXdlci10YWJsZTInO1xuICAgICAgICAgICAgLy8gdGhpcy5tYWluTGF5b3V0LnN0eWxlLmJhY2tncm91bmQgPSAnI0VFRUVGRic7XG4gICAgICAgICAgICAvLyB0aGlzLm1haW5MYXlvdXQuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgICAgICAgICAgLy8gdGhpcy5tYWluTGF5b3V0LnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgYmxhY2snO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBgI2ZmYmIke01hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KS50b1N0cmluZygxNil9YDtcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVpLmJveCh0aGlzLm1haW5MYXlvdXQsIHsgLypzdHlsZToge2JhY2tncm91bmRDb2xvcjogY29sb3J9Ki99KTtcbiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmhvc3QpO1xuICAgICAgICAgICAgdGhpcy5yb290LnN0eWxlLm92ZXJmbG93WCA9ICdhdXRvJztcbiAgICAgICAgICAgIHRoaXMuY2FsY1NpemUoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1ZkUmVnaW9uc1ZpZXdlci5idWlsZFZpZXcoKSBlbmQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBjb25zdCBsb2dvSGVpZ2h0ID0gKHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSA1NCkgLyB0aGlzLmNoYWlucy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWluKGxvZ29IZWlnaHQsIE1hdGgubWF4KC4uLnRoaXMubG9nb3MubWFwKCh3bERpY3QpID0+IE1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMod2xEaWN0KS5tYXAoKHdsKSA9PiB3bC5tYXhIZWlnaHQpKSkpKTtcbiAgICAgICAgZm9yIChsZXQgb3JkZXJJID0gMDsgb3JkZXJJIDwgdGhpcy5sb2dvcy5sZW5ndGg7IG9yZGVySSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjaGFpbkkgPSAwOyBjaGFpbkkgPCB0aGlzLmNoYWlucy5sZW5ndGg7IGNoYWluSSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhaW4gPSB0aGlzLmNoYWluc1tjaGFpbkldO1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3Nbb3JkZXJJXVtjaGFpbl0ucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvbiAtLSBWaWV3IC0tXG4gICAgb25Nb3VzZU1vdmVSb290KGUpIHtcbiAgICAgICAgLy8gdWkudG9vbHRpcC5zaG93KCd0ZXh0JywgZS54ICsgOCwgZS55ICsgOCwpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgb25Nb3VzZU1vdmVSb290LiggeDogJHtlLnh9LCB5OiAke2UueX0gKWApO1xuICAgIH1cbn1cbiIsIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInd1XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInd1XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtcblxuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cblxuXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdHZhciBfdG9Db25zdW1hYmxlQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX3NsaWNlZFRvQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9TeW1ib2wkaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9nZXRJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNDApW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX3JlZ2VuZXJhdG9yUnVudGltZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX09iamVjdCRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfU2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgd3UgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHd1KGl0ZXJhYmxlKSB7XG5cdCAgaWYgKCFpc0l0ZXJhYmxlKGl0ZXJhYmxlKSkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKFwid3U6IGBcIiArIGl0ZXJhYmxlICsgXCJgIGlzIG5vdCBpdGVyYWJsZSFcIik7XG5cdCAgfVxuXHQgIHJldHVybiBuZXcgV3UoaXRlcmFibGUpO1xuXHR9O1xuXG5cdGZ1bmN0aW9uIFd1KGl0ZXJhYmxlKSB7XG5cdCAgdmFyIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUpO1xuXHQgIHRoaXMubmV4dCA9IGl0ZXJhdG9yLm5leHQuYmluZChpdGVyYXRvcik7XG5cdH1cblx0d3UucHJvdG90eXBlID0gV3UucHJvdG90eXBlO1xuXG5cdHd1LnByb3RvdHlwZVtfU3ltYm9sJGl0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gdGhpcztcblx0fTtcblxuXHQvKlxuXHQgKiBJbnRlcm5hbCB1dGlsaXRpZXNcblx0ICovXG5cblx0Ly8gQW4gaW50ZXJuYWwgcGxhY2Vob2xkZXIgdmFsdWUuXG5cdHZhciBNSVNTSU5HID0ge307XG5cblx0Ly8gUmV0dXJuIHdoZXRoZXIgYSB0aGluZyBpcyBpdGVyYWJsZS5cblx0dmFyIGlzSXRlcmFibGUgPSBmdW5jdGlvbiBpc0l0ZXJhYmxlKHRoaW5nKSB7XG5cdCAgcmV0dXJuIHRoaW5nICYmIHR5cGVvZiB0aGluZ1tfU3ltYm9sJGl0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xuXHR9O1xuXG5cdC8vIEdldCB0aGUgaXRlcmF0b3IgZm9yIHRoZSB0aGluZyBvciB0aHJvdyBhbiBlcnJvci5cblx0dmFyIGdldEl0ZXJhdG9yID0gZnVuY3Rpb24gZ2V0SXRlcmF0b3IodGhpbmcpIHtcblx0ICBpZiAoaXNJdGVyYWJsZSh0aGluZykpIHtcblx0ICAgIHJldHVybiBfZ2V0SXRlcmF0b3IodGhpbmcpO1xuXHQgIH1cblx0ICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTm90IGl0ZXJhYmxlOiBcIiArIHRoaW5nKTtcblx0fTtcblxuXHQvLyBEZWZpbmUgYSBzdGF0aWMgbWV0aG9kIG9uIGB3dWAgYW5kIHNldCBpdHMgcHJvdG90eXBlIHRvIHRoZSBzaGFyZWRcblx0Ly8gYFd1LnByb3RvdHlwZWAuXG5cdHZhciBzdGF0aWNNZXRob2QgPSBmdW5jdGlvbiBzdGF0aWNNZXRob2QobmFtZSwgZm4pIHtcblx0ICBmbi5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cdCAgd3VbbmFtZV0gPSBmbjtcblx0fTtcblxuXHQvLyBEZWZpbmUgYSBmdW5jdGlvbiB0aGF0IGlzIGF0dGFjaGVkIGFzIGJvdGggYSBgV3UucHJvdG90eXBlYCBtZXRob2QgYW5kIGFcblx0Ly8gY3VycnlhYmxlIHN0YXRpYyBtZXRob2Qgb24gYHd1YCBkaXJlY3RseSB0aGF0IHRha2VzIGFuIGl0ZXJhYmxlIGFzIGl0cyBsYXN0XG5cdC8vIHBhcmFtZXRlci5cblx0dmFyIHByb3RvdHlwZUFuZFN0YXRpYyA9IGZ1bmN0aW9uIHByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCBmbikge1xuXHQgIHZhciBleHBlY3RlZEFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBmbi5sZW5ndGggOiBhcmd1bWVudHNbMl07XG5cdCAgcmV0dXJuIChmdW5jdGlvbiAoKSB7XG5cdCAgICBmbi5wcm90b3R5cGUgPSBXdS5wcm90b3R5cGU7XG5cdCAgICBXdS5wcm90b3R5cGVbbmFtZV0gPSBmbjtcblxuXHQgICAgLy8gKzEgZm9yIHRoZSBpdGVyYWJsZSwgd2hpY2ggaXMgdGhlIGB0aGlzYCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gc28gaXRcblx0ICAgIC8vIGlzbid0IHJlZmxlY3RlZCBieSB0aGUgbGVuZ3RoIHByb3BlcnR5LlxuXHQgICAgZXhwZWN0ZWRBcmdzICs9IDE7XG5cblx0ICAgIHd1W25hbWVdID0gd3UuY3VycnlhYmxlKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgdmFyIF93dTtcblxuXHQgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgaXRlcmFibGUgPSBhcmdzLnBvcCgpO1xuXHQgICAgICByZXR1cm4gKF93dSA9IHd1KGl0ZXJhYmxlKSlbbmFtZV0uYXBwbHkoX3d1LCBhcmdzKTtcblx0ICAgIH0sIGV4cGVjdGVkQXJncyk7XG5cdCAgfSkoKTtcblx0fTtcblxuXHQvLyBBIGRlY29yYXRvciBmb3IgcmV3cmFwcGluZyBhIG1ldGhvZCdzIHJldHVybmVkIGl0ZXJhYmxlIGluIHd1IHRvIG1haW50YWluXG5cdC8vIGNoYWluYWJpbGl0eS5cblx0dmFyIHJld3JhcCA9IGZ1bmN0aW9uIHJld3JhcChmbikge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiB3dShmbi5jYWxsLmFwcGx5KGZuLCBbdGhpc10uY29uY2F0KGFyZ3MpKSk7XG5cdCAgfTtcblx0fTtcblxuXHR2YXIgcmV3cmFwU3RhdGljTWV0aG9kID0gZnVuY3Rpb24gcmV3cmFwU3RhdGljTWV0aG9kKG5hbWUsIGZuKSB7XG5cdCAgcmV0dXJuIHN0YXRpY01ldGhvZChuYW1lLCByZXdyYXAoZm4pKTtcblx0fTtcblx0dmFyIHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyA9IGZ1bmN0aW9uIHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCBmbiwgZXhwZWN0ZWRBcmdzKSB7XG5cdCAgcmV0dXJuIHByb3RvdHlwZUFuZFN0YXRpYyhuYW1lLCByZXdyYXAoZm4pLCBleHBlY3RlZEFyZ3MpO1xuXHR9O1xuXG5cdC8vIFJldHVybiBhIHdyYXBwZWQgdmVyc2lvbiBvZiBgZm5gIGJvdW5kIHdpdGggdGhlIGluaXRpYWwgYXJndW1lbnRzXG5cdC8vIGAuLi5hcmdzYC5cblx0ZnVuY3Rpb24gY3VycnkoZm4sIGFyZ3MpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gKCkge1xuXHQgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBtb3JlQXJncyA9IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG5cdCAgICAgIG1vcmVBcmdzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBmbi5jYWxsLmFwcGx5KGZuLCBbdGhpc10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShhcmdzKSwgbW9yZUFyZ3MpKTtcblx0ICB9O1xuXHR9XG5cblx0Lypcblx0ICogUHVibGljIHV0aWxpdGllc1xuXHQgKi9cblxuXHRzdGF0aWNNZXRob2QoXCJjdXJyeWFibGVcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIGV4cGVjdGVkID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gZm4ubGVuZ3RoIDogYXJndW1lbnRzWzFdO1xuXHQgIHJldHVybiAoZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGYoKSB7XG5cdCAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW40KSwgX2tleTQgPSAwOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG5cdCAgICAgICAgYXJnc1tfa2V5NF0gPSBhcmd1bWVudHNbX2tleTRdO1xuXHQgICAgICB9XG5cblx0ICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID49IGV4cGVjdGVkID8gZm4uYXBwbHkodGhpcywgYXJncykgOiBjdXJyeShmLCBhcmdzKTtcblx0ICAgIH07XG5cdCAgfSkoKTtcblx0fSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiZW50cmllc1wiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChvYmopIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiwgX2RpZEl0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvckVycm9yLCBfaXRlcmF0b3IsIF9zdGVwLCBrO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yID0gX2dldEl0ZXJhdG9yKF9PYmplY3Qka2V5cyhvYmopKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSAoX3N0ZXAgPSBfaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBrID0gX3N0ZXAudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgcmV0dXJuIFtrLCBvYmpba11dO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxODtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNDtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uICYmIF9pdGVyYXRvcltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcikge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImtleXNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAob2JqKSB7XG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF9PYmplY3Qka2V5cyhvYmopLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ2YWx1ZXNcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAob2JqKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yLCBfZGlkSXRlcmF0b3JFcnJvcjIsIF9pdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yMiwgX3N0ZXAyLCBrO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMiA9IF9nZXRJdGVyYXRvcihfT2JqZWN0JGtleXMob2JqKSk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgayA9IF9zdGVwMi52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gb2JqW2tdO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMiA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiAmJiBfaXRlcmF0b3IyW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOCk7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuXHR9KSk7XG5cblx0Lypcblx0ICogSW5maW5pdGUgaXRlcmF0b3JzXG5cdCAqL1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImN5Y2xlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzYXZlZCwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMsIF9kaWRJdGVyYXRvckVycm9yMywgX2l0ZXJhdG9yRXJyb3IzLCBfaXRlcmF0b3IzLCBfc3RlcDMsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgc2F2ZWQgPSBbXTtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjMgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IChfc3RlcDMgPSBfaXRlcmF0b3IzLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMy52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBzYXZlZC5wdXNoKHgpO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjMgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgJiYgX2l0ZXJhdG9yM1tcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yM1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIzKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjApO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgaWYgKCFzYXZlZCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoc2F2ZWQsIFwidDFcIiwgMzApO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTYsIDIwLCAyOF0sIFsyMSwsIDIzLCAyN11dKTtcblx0fSkpO1xuXG5cdHJld3JhcFN0YXRpY01ldGhvZChcImNvdW50XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBzdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IDAgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIHN0ZXAgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyAxIDogYXJndW1lbnRzWzFdO1xuXHQgIHZhciBuO1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBuID0gc3RhcnQ7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDtcblx0ICAgICAgICByZXR1cm4gbjtcblxuXHQgICAgICBjYXNlIDQ6XG5cdCAgICAgICAgbiArPSBzdGVwO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJyZXBlYXRcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAodGhpbmcpIHtcblx0ICB2YXIgdGltZXMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IGFyZ3VtZW50c1sxXTtcblx0ICB2YXIgaTtcblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKCEodGltZXMgPT09IEluZmluaXR5KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDtcblx0ICAgICAgICByZXR1cm4gdGhpbmc7XG5cblx0ICAgICAgY2FzZSA0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSA4OlxuXHQgICAgICAgIGkgPSAwO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBpZiAoIShpIDwgdGltZXMpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIHRoaW5nO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgaSsrO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0Lypcblx0ICogSXRlcmF0b3JzIHRoYXQgdGVybWluYXRlIG9uY2UgdGhlIGlucHV0IHNlcXVlbmNlIGhhcyBiZWVuIGV4aGF1c3RlZFxuXHQgKi9cblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJjaGFpblwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQsXG5cdCAgICAgIF9kaWRJdGVyYXRvckVycm9yNCxcblx0ICAgICAgX2l0ZXJhdG9yRXJyb3I0LFxuXHQgICAgICBfbGVuNSxcblx0ICAgICAgaXRlcmFibGVzLFxuXHQgICAgICBfa2V5NSxcblx0ICAgICAgX2l0ZXJhdG9yNCxcblx0ICAgICAgX3N0ZXA0LFxuXHQgICAgICBpdCxcblx0ICAgICAgYXJncyQxJDAgPSBhcmd1bWVudHM7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblxuXHQgICAgICAgIGZvciAoX2xlbjUgPSBhcmdzJDEkMC5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW41KSwgX2tleTUgPSAwOyBfa2V5NSA8IF9sZW41OyBfa2V5NSsrKSB7XG5cdCAgICAgICAgICBpdGVyYWJsZXNbX2tleTVdID0gYXJncyQxJDBbX2tleTVdO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvcjQgPSBfZ2V0SXRlcmF0b3IoaXRlcmFibGVzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gKF9zdGVwNCA9IF9pdGVyYXRvcjQubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdCA9IF9zdGVwNC52YWx1ZTtcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChpdCwgXCJ0MFwiLCA5KTtcblxuXHQgICAgICBjYXNlIDk6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNCA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMTg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxOTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgJiYgX2l0ZXJhdG9yNFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yNFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I0KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjQ7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImNodW5rXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBpdGVtcywgaW5kZXgsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241LCBfZGlkSXRlcmF0b3JFcnJvcjUsIF9pdGVyYXRvckVycm9yNSwgX2l0ZXJhdG9yNSwgX3N0ZXA1LCBpdGVtO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGl0ZW1zID0gW107XG5cdCAgICAgICAgaW5kZXggPSAwO1xuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjUgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjUgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yNSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDc6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb241ID0gKF9zdGVwNSA9IF9pdGVyYXRvcjUubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdGVtID0gX3N0ZXA1LnZhbHVlO1xuXG5cdCAgICAgICAgaXRlbXNbaW5kZXgrK10gPSBpdGVtO1xuXG5cdCAgICAgICAgaWYgKCEoaW5kZXggPT09IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaXRlbXMgPSBbXTtcblx0ICAgICAgICBpbmRleCA9IDA7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDc7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDUpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yNSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I1ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI1O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNSAmJiBfaXRlcmF0b3I1W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3I1W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI3O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yNTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjcpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNCk7XG5cblx0ICAgICAgY2FzZSAzMjpcblx0ICAgICAgICBpZiAoIWluZGV4KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzU7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zO1xuXG5cdCAgICAgIGNhc2UgMzU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNSwgMjAsIDI0LCAzMl0sIFsyNSwsIDI3LCAzMV1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImNvbmNhdE1hcFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChmbikge1xuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiwgX2RpZEl0ZXJhdG9yRXJyb3I2LCBfaXRlcmF0b3JFcnJvcjYsIF9pdGVyYXRvcjYsIF9zdGVwNiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I2ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjYgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNiA9IChfc3RlcDYgPSBfaXRlcmF0b3I2Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwNi52YWx1ZTtcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChmbih4KSwgXCJ0MFwiLCA4KTtcblxuXHQgICAgICBjYXNlIDg6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDEzO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjYgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yNiA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjYgJiYgX2l0ZXJhdG9yNltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yNltcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIwOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I2KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjY7XG5cblx0ICAgICAgY2FzZSAyMzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTcpO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTMsIDE3LCAyNV0sIFsxOCwsIDIwLCAyNF1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImRyb3BcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobikge1xuXHQgIHZhciBpLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNywgX2RpZEl0ZXJhdG9yRXJyb3I3LCBfaXRlcmF0b3JFcnJvcjcsIF9pdGVyYXRvcjcsIF9zdGVwNywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpID0gMDtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I3ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3I3ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0O1xuXHQgICAgICAgIF9pdGVyYXRvcjcgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNyA9IChfc3RlcDcgPSBfaXRlcmF0b3I3Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwNy52YWx1ZTtcblxuXHQgICAgICAgIGlmICghKGkrKyA8IG4pKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTMpO1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE2KTtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE2OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oNCk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I3ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjcgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb243ICYmIF9pdGVyYXRvcjdbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjdbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yNykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I3O1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNSk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKHRoaXMsIFwidDFcIiwgMzEpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNCwgMTgsIDIyLCAzMF0sIFsyMywsIDI1LCAyOV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImRyb3BXaGlsZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244LCBfZGlkSXRlcmF0b3JFcnJvcjgsIF9pdGVyYXRvckVycm9yOCwgX2l0ZXJhdG9yOCwgX3N0ZXA4LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjggPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjggPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yOCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb244ID0gKF9zdGVwOCA9IF9pdGVyYXRvcjgubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA4LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiY29udGludWVcIiwgMTIpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTUpO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjggPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOCA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjggJiYgX2l0ZXJhdG9yOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yOFtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDI0OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyNDtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I4KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjg7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI0KTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjEpO1xuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQodGhpcywgXCJ0MVwiLCAzMCk7XG5cblx0ICAgICAgY2FzZSAzMDpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNywgMjEsIDI5XSwgWzIyLCwgMjQsIDI4XV0pO1xuXHR9KSwgMSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwiZW51bWVyYXRlXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZGVsZWdhdGVZaWVsZChfemlwKFt0aGlzLCB3dS5jb3VudCgpXSksIFwidDBcIiwgMSk7XG5cblx0ICAgICAgY2FzZSAxOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImZpbHRlclwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245LCBfZGlkSXRlcmF0b3JFcnJvcjksIF9pdGVyYXRvckVycm9yOSwgX2l0ZXJhdG9yOSwgX3N0ZXA5LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjkgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjkgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yOSA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb245ID0gKF9zdGVwOSA9IF9pdGVyYXRvcjkubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTM7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXA5LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjkgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yOSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjkgJiYgX2l0ZXJhdG9yOVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yOVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3I5KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIyKTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTkpO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTUsIDE5LCAyN10sIFsyMCwsIDIyLCAyNl1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImZsYXR0ZW5cIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNoYWxsb3cgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAsIF9kaWRJdGVyYXRvckVycm9yMTAsIF9pdGVyYXRvckVycm9yMTAsIF9pdGVyYXRvcjEwLCBfc3RlcDEwLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTAgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTAgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTAgPSAoX3N0ZXAxMCA9IF9pdGVyYXRvcjEwLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE2O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTAudmFsdWU7XG5cblx0ICAgICAgICBpZiAoISh0eXBlb2YgeCAhPT0gXCJzdHJpbmdcIiAmJiBpc0l0ZXJhYmxlKHgpKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoc2hhbGxvdyA/IHggOiB3dSh4KS5mbGF0dGVuKCksIFwidDBcIiwgOSk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDExOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDEgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTAgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTAgPSBjb250ZXh0JDEkMC50MTtcblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjM7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMCAmJiBfaXRlcmF0b3IxMFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTBbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjU7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTApIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTA7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI1KTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTgsIDIyLCAzMF0sIFsyMywsIDI1LCAyOV1dKTtcblx0fSksIDEpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcImludm9rZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChuYW1lKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMSxcblx0ICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSxcblx0ICAgICAgX2l0ZXJhdG9yRXJyb3IxMSxcblx0ICAgICAgX2xlbjYsXG5cdCAgICAgIGFyZ3MsXG5cdCAgICAgIF9rZXk2LFxuXHQgICAgICBfaXRlcmF0b3IxMSxcblx0ICAgICAgX3N0ZXAxMSxcblx0ICAgICAgeCxcblx0ICAgICAgYXJncyQxJDAgPSBhcmd1bWVudHM7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjExID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblxuXHQgICAgICAgIGZvciAoX2xlbjYgPSBhcmdzJDEkMC5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuNiA+IDEgPyBfbGVuNiAtIDEgOiAwKSwgX2tleTYgPSAxOyBfa2V5NiA8IF9sZW42OyBfa2V5NisrKSB7XG5cdCAgICAgICAgICBhcmdzW19rZXk2IC0gMV0gPSBhcmdzJDEkMFtfa2V5Nl07XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX2l0ZXJhdG9yMTEgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTEgPSAoX3N0ZXAxMSA9IF9pdGVyYXRvcjExLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTEudmFsdWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEwO1xuXHQgICAgICAgIHJldHVybiB4W25hbWVdLmFwcGx5KHgsIGFyZ3MpO1xuXG5cdCAgICAgIGNhc2UgMTA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExID0gdHJ1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNjtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICBicmVhaztcblxuXHQgICAgICBjYXNlIDE1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxNTtcblx0ICAgICAgICBjb250ZXh0JDEkMC50MCA9IGNvbnRleHQkMSQwW1wiY2F0Y2hcIl0oMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxMSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMSA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMTk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMDtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjExICYmIF9pdGVyYXRvcjExW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxMVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMjtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxMSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI1O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxMTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjIpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgxOSk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1szLCAxNSwgMTksIDI3XSwgWzIwLCwgMjIsIDI2XV0pO1xuXHR9KSk7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwibWFwXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiwgX2RpZEl0ZXJhdG9yRXJyb3IxMiwgX2l0ZXJhdG9yRXJyb3IxMiwgX2l0ZXJhdG9yMTIsIF9zdGVwMTIsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEyID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEyID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IxMiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IChfc3RlcDEyID0gX2l0ZXJhdG9yMTIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAxMi52YWx1ZTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gOTtcblx0ICAgICAgICByZXR1cm4gZm4oeCk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTIgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTIgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xMiAmJiBfaXRlcmF0b3IxMltcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTJbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTIpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTI7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInBsdWNrXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKG5hbWUpIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzLCBfZGlkSXRlcmF0b3JFcnJvcjEzLCBfaXRlcmF0b3JFcnJvcjEzLCBfaXRlcmF0b3IxMywgX3N0ZXAxMywgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTMgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEzID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjEzID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjEzID0gKF9zdGVwMTMgPSBfaXRlcmF0b3IxMy5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDEzLnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiB4W25hbWVdO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjEzID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjEzID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxODpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTg7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE5O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTMgJiYgX2l0ZXJhdG9yMTNbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjEzW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjE6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjEzKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjEzO1xuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMSk7XG5cblx0ICAgICAgY2FzZSAyNTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE4KTtcblxuXHQgICAgICBjYXNlIDI2OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE0LCAxOCwgMjZdLCBbMTksLCAyMSwgMjVdXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJyZWR1Y3Rpb25zXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgdmFsLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQsIF9kaWRJdGVyYXRvckVycm9yMTQsIF9pdGVyYXRvckVycm9yMTQsIF9pdGVyYXRvcjE0LCBfc3RlcDE0LCB4LCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTUsIF9kaWRJdGVyYXRvckVycm9yMTUsIF9pdGVyYXRvckVycm9yMTUsIF9pdGVyYXRvcjE1LCBfc3RlcDE1O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHZhbCA9IGluaXRpYWw7XG5cblx0ICAgICAgICBpZiAoISh2YWwgPT09IHVuZGVmaW5lZCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyODtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNCA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNCA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTQgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTQgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSAoX3N0ZXAxNCA9IF9pdGVyYXRvcjE0Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMTQudmFsdWU7XG5cblx0ICAgICAgICB2YWwgPSB4O1xuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAxNCk7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg1KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE0ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE0ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTQgJiYgX2l0ZXJhdG9yMTRbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE0KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE0O1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzMDtcblx0ICAgICAgICByZXR1cm4gdmFsO1xuXG5cdCAgICAgIGNhc2UgMzA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE1ID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMzM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTUgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSAzNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ID0gKF9zdGVwMTUgPSBfaXRlcmF0b3IxNS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA0Mjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE1LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAzOTtcblx0ICAgICAgICByZXR1cm4gdmFsID0gZm4odmFsLCB4KTtcblxuXHQgICAgICBjYXNlIDM5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDI6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ4O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ0O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQxID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzMyk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNSA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IxNSA9IGNvbnRleHQkMSQwLnQxO1xuXG5cdCAgICAgIGNhc2UgNDg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDQ4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA0OTtcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE1ICYmIF9pdGVyYXRvcjE1W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IxNVtcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDUxOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA1MTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IxNSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IxNTtcblxuXHQgICAgICBjYXNlIDU0OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goNTEpO1xuXG5cdCAgICAgIGNhc2UgNTU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCg0OCk7XG5cblx0ICAgICAgY2FzZSA1Njpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIsIHZhbCk7XG5cblx0ICAgICAgY2FzZSA1Nzpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcywgW1s1LCAxNiwgMjAsIDI4XSwgWzIxLCwgMjMsIDI3XSwgWzMzLCA0NCwgNDgsIDU2XSwgWzQ5LCwgNTEsIDU1XV0pO1xuXHR9KSwgMik7XG5cblx0cmV3cmFwUHJvdG90eXBlQW5kU3RhdGljKFwicmVqZWN0XCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2LCBfZGlkSXRlcmF0b3JFcnJvcjE2LCBfaXRlcmF0b3JFcnJvcjE2LCBfaXRlcmF0b3IxNiwgX3N0ZXAxNiwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTYgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE2ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjE2ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE2ID0gKF9zdGVwMTYgPSBfaXRlcmF0b3IxNi5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE2LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE2ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE2ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTYgJiYgX2l0ZXJhdG9yMTZbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE2W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE2KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE2O1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJzbGljZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgc3RhcnQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAwIDogYXJndW1lbnRzWzBdO1xuXHQgIHZhciBzdG9wID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gSW5maW5pdHkgOiBhcmd1bWVudHNbMV07XG5cblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE3LCBfZGlkSXRlcmF0b3JFcnJvcjE3LCBfaXRlcmF0b3JFcnJvcjE3LCBfaXRlcmF0b3IxNywgX3N0ZXAxNywgX3N0ZXAxNyR2YWx1ZSwgeCwgaTtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBpZiAoIShzdG9wIDwgc3RhcnQpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwicGFyYW1ldGVyIGBzdG9wYCAoPSBcIiArIHN0b3AgKyBcIikgbXVzdCBiZSA+PSBgc3RhcnRgICg9IFwiICsgc3RhcnQgKyBcIilcIik7XG5cblx0ICAgICAgY2FzZSAyOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xNyA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IxNyA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDU7XG5cdCAgICAgICAgX2l0ZXJhdG9yMTcgPSBfZ2V0SXRlcmF0b3IodGhpcy5lbnVtZXJhdGUoKSk7XG5cblx0ICAgICAgY2FzZSA3OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSAoX3N0ZXAxNyA9IF9pdGVyYXRvcjE3Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgX3N0ZXAxNyR2YWx1ZSA9IF9zbGljZWRUb0FycmF5KF9zdGVwMTcudmFsdWUsIDIpO1xuXHQgICAgICAgIHggPSBfc3RlcDE3JHZhbHVlWzBdO1xuXHQgICAgICAgIGkgPSBfc3RlcDE3JHZhbHVlWzFdO1xuXG5cdCAgICAgICAgaWYgKCEoaSA8IHN0YXJ0KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImNvbnRpbnVlXCIsIDE3KTtcblxuXHQgICAgICBjYXNlIDEzOlxuXHQgICAgICAgIGlmICghKGkgPj0gc3RvcCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAyMCk7XG5cblx0ICAgICAgY2FzZSAxNTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTc7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA3O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjA6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg1KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjE3ID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE3ID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjY7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI3O1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTcgJiYgX2l0ZXJhdG9yMTdbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjE3W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjk6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI5O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjE3KSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMzI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjE3O1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyOSk7XG5cblx0ICAgICAgY2FzZSAzMzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI2KTtcblxuXHQgICAgICBjYXNlIDM0OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzUsIDIyLCAyNiwgMzRdLCBbMjcsLCAyOSwgMzNdXSk7XG5cdH0pLCAyKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJzcHJlYWRNYXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4LCBfZGlkSXRlcmF0b3JFcnJvcjE4LCBfaXRlcmF0b3JFcnJvcjE4LCBfaXRlcmF0b3IxOCwgX3N0ZXAxOCwgeDtcblxuXHQgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gY2FsbGVlJDAkMCQoY29udGV4dCQxJDApIHtcblx0ICAgIHdoaWxlICgxKSBzd2l0Y2ggKGNvbnRleHQkMSQwLnByZXYgPSBjb250ZXh0JDEkMC5uZXh0KSB7XG5cdCAgICAgIGNhc2UgMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTggPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTggPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE4ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzO1xuXHQgICAgICAgIF9pdGVyYXRvcjE4ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgNTpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE4ID0gKF9zdGVwMTggPSBfaXRlcmF0b3IxOC5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE4LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA5O1xuXHQgICAgICAgIHJldHVybiBmbi5hcHBseSh1bmRlZmluZWQsIF90b0NvbnN1bWFibGVBcnJheSh4KSk7XG5cblx0ICAgICAgY2FzZSA5OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDU7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDMpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTggPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTggPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDE4OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAxODtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOCAmJiBfaXRlcmF0b3IxOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMThbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNDtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTg7XG5cblx0ICAgICAgY2FzZSAyNDpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI1OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMTgpO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMywgMTQsIDE4LCAyNl0sIFsxOSwsIDIxLCAyNV1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRha2VcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAobikge1xuXHQgIHZhciBpLCBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTksIF9kaWRJdGVyYXRvckVycm9yMTksIF9pdGVyYXRvckVycm9yMTksIF9pdGVyYXRvcjE5LCBfc3RlcDE5LCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGlmICghKG4gPCAxKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIpO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpID0gMDtcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMTkgPSB0cnVlO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTkgPSBmYWxzZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjE5ID0gdW5kZWZpbmVkO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSA2O1xuXHQgICAgICAgIF9pdGVyYXRvcjE5ID0gX2dldEl0ZXJhdG9yKHRoaXMpO1xuXG5cdCAgICAgIGNhc2UgODpcblx0ICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjE5ID0gKF9zdGVwMTkgPSBfaXRlcmF0b3IxOS5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxNztcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHggPSBfc3RlcDE5LnZhbHVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxMjtcblx0ICAgICAgICByZXR1cm4geDtcblxuXHQgICAgICBjYXNlIDEyOlxuXHQgICAgICAgIGlmICghKCsraSA+PSBuKSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcImJyZWFrXCIsIDE3KTtcblxuXHQgICAgICBjYXNlIDE0OlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDg7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNzpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAudDAgPSBjb250ZXh0JDEkMFtcImNhdGNoXCJdKDYpO1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMTkgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMTkgPSBjb250ZXh0JDEkMC50MDtcblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAyMztcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjQ7XG5cblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24xOSAmJiBfaXRlcmF0b3IxOVtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMTlbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjY7XG5cblx0ICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMTkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyOTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMTk7XG5cblx0ICAgICAgY2FzZSAyOTpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDI2KTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMjMpO1xuXG5cdCAgICAgIGNhc2UgMzE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbNiwgMTksIDIzLCAzMV0sIFsyNCwsIDI2LCAzMF1dKTtcblx0fSkpO1xuXG5cdHJld3JhcFByb3RvdHlwZUFuZFN0YXRpYyhcInRha2VXaGlsZVwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICB2YXIgZm4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyBCb29sZWFuIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCwgX2RpZEl0ZXJhdG9yRXJyb3IyMCwgX2l0ZXJhdG9yRXJyb3IyMCwgX2l0ZXJhdG9yMjAsIF9zdGVwMjAsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIwID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIwID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMztcblx0ICAgICAgICBfaXRlcmF0b3IyMCA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDU6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMCA9IChfc3RlcDIwID0gX2l0ZXJhdG9yMjAubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMC52YWx1ZTtcblxuXHQgICAgICAgIGlmIChmbih4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwiYnJlYWtcIiwgMTQpO1xuXG5cdCAgICAgIGNhc2UgOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTE7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMTpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIwO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTY6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE2O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIwID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIwID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjA7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIxO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjAgJiYgX2l0ZXJhdG9yMjBbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIwW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIzO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIwKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIwO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMyk7XG5cblx0ICAgICAgY2FzZSAyNzpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIwKTtcblxuXHQgICAgICBjYXNlIDI4OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE2LCAyMCwgMjhdLCBbMjEsLCAyMywgMjddXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ0YXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gY29uc29sZS5sb2cuYmluZChjb25zb2xlKSA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEsIF9kaWRJdGVyYXRvckVycm9yMjEsIF9pdGVyYXRvckVycm9yMjEsIF9pdGVyYXRvcjIxLCBfc3RlcDIxLCB4O1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMSA9IHRydWU7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMSA9IGZhbHNlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjEgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDM7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjEgPSBfZ2V0SXRlcmF0b3IodGhpcyk7XG5cblx0ICAgICAgY2FzZSA1OlxuXHQgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgPSAoX3N0ZXAyMSA9IF9pdGVyYXRvcjIxLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgeCA9IF9zdGVwMjEudmFsdWU7XG5cblx0ICAgICAgICBmbih4KTtcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA1O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDE5O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE1O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgzKTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIxID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIxID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTk7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIwO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjEgJiYgX2l0ZXJhdG9yMjFbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIxW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIxKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIxO1xuXG5cdCAgICAgIGNhc2UgMjU6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyMik7XG5cblx0ICAgICAgY2FzZSAyNjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDE5KTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzMsIDE1LCAxOSwgMjddLCBbMjAsLCAyMiwgMjZdXSk7XG5cdH0pLCAxKTtcblxuXHRyZXdyYXBQcm90b3R5cGVBbmRTdGF0aWMoXCJ1bmlxdWVcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgdmFyIHNlZW4sIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiwgX2RpZEl0ZXJhdG9yRXJyb3IyMiwgX2l0ZXJhdG9yRXJyb3IyMiwgX2l0ZXJhdG9yMjIsIF9zdGVwMjIsIHg7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgc2VlbiA9IG5ldyBfU2V0KCk7XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIyID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIyID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMiA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gNDtcblx0ICAgICAgICBfaXRlcmF0b3IyMiA9IF9nZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgICAgICBjYXNlIDY6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMiA9IChfc3RlcDIyID0gX2l0ZXJhdG9yMjIubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTU7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB4ID0gX3N0ZXAyMi52YWx1ZTtcblxuXHQgICAgICAgIGlmIChzZWVuLmhhcyh4KSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDExO1xuXHQgICAgICAgIHJldHVybiB4O1xuXG5cdCAgICAgIGNhc2UgMTE6XG5cdCAgICAgICAgc2Vlbi5hZGQoeCk7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgPSB0cnVlO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTU6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIxO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMTc6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDE3O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSg0KTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIyID0gdHJ1ZTtcblx0ICAgICAgICBfaXRlcmF0b3JFcnJvcjIyID0gY29udGV4dCQxJDAudDA7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMjE7XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDIyO1xuXG5cdCAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjIgJiYgX2l0ZXJhdG9yMjJbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICAgIF9pdGVyYXRvcjIyW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgIGNhc2UgMjQ6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI0O1xuXG5cdCAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcjIyKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjc7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjIyO1xuXG5cdCAgICAgIGNhc2UgMjc6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgyNCk7XG5cblx0ICAgICAgY2FzZSAyODpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuZmluaXNoKDIxKTtcblxuXHQgICAgICBjYXNlIDI5OlxuXHQgICAgICAgIHNlZW4uY2xlYXIoKTtcblxuXHQgICAgICBjYXNlIDMwOlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzLCBbWzQsIDE3LCAyMSwgMjldLCBbMjIsLCAyNCwgMjhdXSk7XG5cdH0pKTtcblxuXHR2YXIgX3ppcCA9IHJld3JhcChfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMChpdGVyYWJsZXMpIHtcblx0ICB2YXIgbG9uZ2VzdCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIGl0ZXJzLCBudW1JdGVycywgbnVtRmluaXNoZWQsIGZpbmlzaGVkLCB6aXBwZWQsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMywgX2RpZEl0ZXJhdG9yRXJyb3IyMywgX2l0ZXJhdG9yRXJyb3IyMywgX2l0ZXJhdG9yMjMsIF9zdGVwMjMsIGl0LCBfaXQkbmV4dCwgdmFsdWUsIGRvbmU7XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgaWYgKGl0ZXJhYmxlcy5sZW5ndGgpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmFicnVwdChcInJldHVyblwiKTtcblxuXHQgICAgICBjYXNlIDI6XG5cdCAgICAgICAgaXRlcnMgPSBpdGVyYWJsZXMubWFwKGdldEl0ZXJhdG9yKTtcblx0ICAgICAgICBudW1JdGVycyA9IGl0ZXJhYmxlcy5sZW5ndGg7XG5cdCAgICAgICAgbnVtRmluaXNoZWQgPSAwO1xuXHQgICAgICAgIGZpbmlzaGVkID0gZmFsc2U7XG5cblx0ICAgICAgY2FzZSA2OlxuXHQgICAgICAgIGlmIChmaW5pc2hlZCkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDQ0O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgemlwcGVkID0gW107XG5cdCAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzID0gdHJ1ZTtcblx0ICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIzID0gZmFsc2U7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMyA9IHVuZGVmaW5lZDtcblx0ICAgICAgICBjb250ZXh0JDEkMC5wcmV2ID0gMTE7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjMgPSBfZ2V0SXRlcmF0b3IoaXRlcnMpO1xuXG5cdCAgICAgIGNhc2UgMTM6XG5cdCAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IChfc3RlcDIzID0gX2l0ZXJhdG9yMjMubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjY7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpdCA9IF9zdGVwMjMudmFsdWU7XG5cdCAgICAgICAgX2l0JG5leHQgPSBpdC5uZXh0KCk7XG5cdCAgICAgICAgdmFsdWUgPSBfaXQkbmV4dC52YWx1ZTtcblx0ICAgICAgICBkb25lID0gX2l0JG5leHQuZG9uZTtcblxuXHQgICAgICAgIGlmICghZG9uZSkge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDIyO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKGxvbmdlc3QpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJyZXR1cm5cIik7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBpZiAoKytudW1GaW5pc2hlZCA9PSBudW1JdGVycykge1xuXHQgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIyOlxuXHQgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAvLyBMZWF2ZSBhIGhvbGUgaW4gdGhlIGFycmF5IHNvIHRoYXQgeW91IGNhbiBkaXN0aW5ndWlzaCBhbiBpdGVyYWJsZVxuXHQgICAgICAgICAgLy8gdGhhdCdzIGRvbmUgKHZpYSBgaW5kZXggaW4gYXJyYXkgPT0gZmFsc2VgKSBmcm9tIGFuIGl0ZXJhYmxlXG5cdCAgICAgICAgICAvLyB5aWVsZGluZyBgdW5kZWZpbmVkYC5cblx0ICAgICAgICAgIHppcHBlZC5sZW5ndGgrKztcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgemlwcGVkLnB1c2godmFsdWUpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDIzOlxuXHQgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yMyA9IHRydWU7XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDEzO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjY6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDMyO1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgMjg6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDI4O1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnQwID0gY29udGV4dCQxJDBbXCJjYXRjaFwiXSgxMSk7XG5cdCAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyMyA9IHRydWU7XG5cdCAgICAgICAgX2l0ZXJhdG9yRXJyb3IyMyA9IGNvbnRleHQkMSQwLnQwO1xuXG5cdCAgICAgIGNhc2UgMzI6XG5cdCAgICAgICAgY29udGV4dCQxJDAucHJldiA9IDMyO1xuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzMztcblxuXHQgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIzICYmIF9pdGVyYXRvcjIzW1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICBfaXRlcmF0b3IyM1tcInJldHVyblwiXSgpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICBjYXNlIDM1OlxuXHQgICAgICAgIGNvbnRleHQkMSQwLnByZXYgPSAzNTtcblxuXHQgICAgICAgIGlmICghX2RpZEl0ZXJhdG9yRXJyb3IyMykge1xuXHQgICAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDM4O1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyMztcblxuXHQgICAgICBjYXNlIDM4OlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5maW5pc2goMzUpO1xuXG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmZpbmlzaCgzMik7XG5cblx0ICAgICAgY2FzZSA0MDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gNDI7XG5cdCAgICAgICAgcmV0dXJuIHppcHBlZDtcblxuXHQgICAgICBjYXNlIDQyOlxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSA2O1xuXHQgICAgICAgIGJyZWFrO1xuXG5cdCAgICAgIGNhc2UgNDQ6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMsIFtbMTEsIDI4LCAzMiwgNDBdLCBbMzMsLCAzNSwgMzldXSk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBcIiwgX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoKSB7XG5cdCAgZm9yICh2YXIgX2xlbjcgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuNyksIF9rZXk3ID0gMDsgX2tleTcgPCBfbGVuNzsgX2tleTcrKykge1xuXHQgICAgaXRlcmFibGVzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG5cdCAgfVxuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoaXRlcmFibGVzKSwgXCJ0MFwiLCAxKTtcblxuXHQgICAgICBjYXNlIDE6XG5cdCAgICAgIGNhc2UgXCJlbmRcIjpcblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuc3RvcCgpO1xuXHQgICAgfVxuXHQgIH0sIGNhbGxlZSQwJDAsIHRoaXMpO1xuXHR9KSk7XG5cblx0cmV3cmFwU3RhdGljTWV0aG9kKFwiemlwTG9uZ2VzdFwiLCBfcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gY2FsbGVlJDAkMCgpIHtcblx0ICBmb3IgKHZhciBfbGVuOCA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZXJhYmxlcyA9IEFycmF5KF9sZW44KSwgX2tleTggPSAwOyBfa2V5OCA8IF9sZW44OyBfa2V5OCsrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleThdID0gYXJndW1lbnRzW19rZXk4XTtcblx0ICB9XG5cblx0ICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIGNhbGxlZSQwJDAkKGNvbnRleHQkMSQwKSB7XG5cdCAgICB3aGlsZSAoMSkgc3dpdGNoIChjb250ZXh0JDEkMC5wcmV2ID0gY29udGV4dCQxJDAubmV4dCkge1xuXHQgICAgICBjYXNlIDA6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLmRlbGVnYXRlWWllbGQoX3ppcChpdGVyYWJsZXMsIHRydWUpLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHRyZXdyYXBTdGF0aWNNZXRob2QoXCJ6aXBXaXRoXCIsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBjYWxsZWUkMCQwKGZuKSB7XG5cdCAgZm9yICh2YXIgX2xlbjkgPSBhcmd1bWVudHMubGVuZ3RoLCBpdGVyYWJsZXMgPSBBcnJheShfbGVuOSA+IDEgPyBfbGVuOSAtIDEgOiAwKSwgX2tleTkgPSAxOyBfa2V5OSA8IF9sZW45OyBfa2V5OSsrKSB7XG5cdCAgICBpdGVyYWJsZXNbX2tleTkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5OV07XG5cdCAgfVxuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5kZWxlZ2F0ZVlpZWxkKF96aXAoaXRlcmFibGVzKS5zcHJlYWRNYXAoZm4pLCBcInQwXCIsIDEpO1xuXG5cdCAgICAgIGNhc2UgMTpcblx0ICAgICAgY2FzZSBcImVuZFwiOlxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5zdG9wKCk7XG5cdCAgICB9XG5cdCAgfSwgY2FsbGVlJDAkMCwgdGhpcyk7XG5cdH0pKTtcblxuXHQvKlxuXHQgKiBGdW5jdGlvbnMgdGhhdCBmb3JjZSBpdGVyYXRpb24gdG8gY29tcGxldGlvbiBhbmQgcmV0dXJuIGEgdmFsdWUuXG5cdCAqL1xuXG5cdC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgd2Ugd2lsbCBibG9jayB0aGUgbWFpbiB0aHJlYWQgYXQgYSB0aW1lXG5cdC8vIHdoaWxlIGluIGBhc3luY0VhY2hgLlxuXHR3dS5NQVhfQkxPQ0sgPSAxNTtcblx0Ly8gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8geWllbGQgdG8gdGhlIG1haW4gdGhyZWFkIGJldHdlZW4gYnVyc3RzIG9mXG5cdC8vIHdvcmsuXG5cdHd1LlRJTUVPVVQgPSAxO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImFzeW5jRWFjaFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgbWF4QmxvY2sgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB3dS5NQVhfQkxPQ0sgOiBhcmd1bWVudHNbMV07XG5cdCAgdmFyIHRpbWVvdXQgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyB3dS5USU1FT1VUIDogYXJndW1lbnRzWzJdO1xuXG5cdCAgdmFyIGl0ZXIgPSBnZXRJdGVyYXRvcih0aGlzKTtcblxuXHQgIHJldHVybiBuZXcgX1Byb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgKGZ1bmN0aW9uIGxvb3AoKSB7XG5cdCAgICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7XG5cblx0ICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNCA9IHRydWU7XG5cdCAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI0ID0gZmFsc2U7XG5cdCAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjI0ID0gdW5kZWZpbmVkO1xuXG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjQgPSBfZ2V0SXRlcmF0b3IoaXRlciksIF9zdGVwMjQ7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ID0gKF9zdGVwMjQgPSBfaXRlcmF0b3IyNC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjQgPSB0cnVlKSB7XG5cdCAgICAgICAgICB2YXIgeCA9IF9zdGVwMjQudmFsdWU7XG5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIGZuKHgpO1xuXHQgICAgICAgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAgICAgICByZWplY3QoZSk7XG5cdCAgICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgaWYgKERhdGUubm93KCkgLSBzdGFydCA+IG1heEJsb2NrKSB7XG5cdCAgICAgICAgICAgIHNldFRpbWVvdXQobG9vcCwgdGltZW91dCk7XG5cdCAgICAgICAgICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICAgIF9kaWRJdGVyYXRvckVycm9yMjQgPSB0cnVlO1xuXHQgICAgICAgIF9pdGVyYXRvckVycm9yMjQgPSBlcnI7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI0ICYmIF9pdGVyYXRvcjI0W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgICAgIF9pdGVyYXRvcjI0W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI0KSB7XG5cdCAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgcmVzb2x2ZSgpO1xuXHQgICAgfSkoKTtcblx0ICB9KTtcblx0fSwgMyk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZXZlcnlcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBmbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IEJvb2xlYW4gOiBhcmd1bWVudHNbMF07XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjUgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyNSA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyNSA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyNTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgPSAoX3N0ZXAyNSA9IF9pdGVyYXRvcjI1Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNSA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI1LnZhbHVlO1xuXG5cdCAgICAgIGlmICghZm4oeCkpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjUgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyNSA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjUgJiYgX2l0ZXJhdG9yMjVbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyNVtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNSkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gdHJ1ZTtcblx0fSwgMSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiZmluZFwiLCBmdW5jdGlvbiAoZm4pIHtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyNiA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjI2ID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjI2ID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDI2OyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNiA9IChfc3RlcDI2ID0gX2l0ZXJhdG9yMjYubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI2ID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMjYudmFsdWU7XG5cblx0ICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgcmV0dXJuIHg7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMjYgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IyNiA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjYgJiYgX2l0ZXJhdG9yMjZbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IyNltcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyNikge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjY7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH0pO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcImZvckVhY2hcIiwgZnVuY3Rpb24gKGZuKSB7XG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjcgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyNyA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyNyA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyNzsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjcgPSAoX3N0ZXAyNyA9IF9pdGVyYXRvcjI3Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI3LnZhbHVlO1xuXG5cdCAgICAgIGZuKHgpO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgX2RpZEl0ZXJhdG9yRXJyb3IyNyA9IHRydWU7XG5cdCAgICBfaXRlcmF0b3JFcnJvcjI3ID0gZXJyO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICB0cnkge1xuXHQgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yNyAmJiBfaXRlcmF0b3IyN1tcInJldHVyblwiXSkge1xuXHQgICAgICAgIF9pdGVyYXRvcjI3W1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH1cblx0ICAgIH0gZmluYWxseSB7XG5cdCAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcjI3KSB7XG5cdCAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3IyNztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwiaGFzXCIsIGZ1bmN0aW9uICh0aGluZykge1xuXHQgIHJldHVybiB0aGlzLnNvbWUoZnVuY3Rpb24gKHgpIHtcblx0ICAgIHJldHVybiB4ID09PSB0aGluZztcblx0ICB9KTtcblx0fSk7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwicmVkdWNlXCIsIGZ1bmN0aW9uIChmbikge1xuXHQgIHZhciBpbml0aWFsID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuXG5cdCAgdmFyIHZhbCA9IGluaXRpYWw7XG5cdCAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gdHJ1ZTtcblx0ICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjI4ID0gZmFsc2U7XG5cdCAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyOCA9IHVuZGVmaW5lZDtcblxuXHQgICAgdHJ5IHtcblx0ICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMjggPSBfZ2V0SXRlcmF0b3IodGhpcyksIF9zdGVwMjg7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI4ID0gKF9zdGVwMjggPSBfaXRlcmF0b3IyOC5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjggPSB0cnVlKSB7XG5cdCAgICAgICAgdmFyIHggPSBfc3RlcDI4LnZhbHVlO1xuXG5cdCAgICAgICAgdmFsID0geDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIF9kaWRJdGVyYXRvckVycm9yMjggPSB0cnVlO1xuXHQgICAgICBfaXRlcmF0b3JFcnJvcjI4ID0gZXJyO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOCAmJiBfaXRlcmF0b3IyOFtcInJldHVyblwiXSkge1xuXHQgICAgICAgICAgX2l0ZXJhdG9yMjhbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjgpIHtcblx0ICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjg7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IHRydWU7XG5cdCAgdmFyIF9kaWRJdGVyYXRvckVycm9yMjkgPSBmYWxzZTtcblx0ICB2YXIgX2l0ZXJhdG9yRXJyb3IyOSA9IHVuZGVmaW5lZDtcblxuXHQgIHRyeSB7XG5cdCAgICBmb3IgKHZhciBfaXRlcmF0b3IyOSA9IF9nZXRJdGVyYXRvcih0aGlzKSwgX3N0ZXAyOTsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMjkgPSAoX3N0ZXAyOSA9IF9pdGVyYXRvcjI5Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yOSA9IHRydWUpIHtcblx0ICAgICAgdmFyIHggPSBfc3RlcDI5LnZhbHVlO1xuXG5cdCAgICAgIHZhbCA9IGZuKHZhbCwgeCk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICBfZGlkSXRlcmF0b3JFcnJvcjI5ID0gdHJ1ZTtcblx0ICAgIF9pdGVyYXRvckVycm9yMjkgPSBlcnI7XG5cdCAgfSBmaW5hbGx5IHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjI5ICYmIF9pdGVyYXRvcjI5W1wicmV0dXJuXCJdKSB7XG5cdCAgICAgICAgX2l0ZXJhdG9yMjlbXCJyZXR1cm5cIl0oKTtcblx0ICAgICAgfVxuXHQgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yMjkpIHtcblx0ICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI5O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcmV0dXJuIHZhbDtcblx0fSwgMik7XG5cblx0cHJvdG90eXBlQW5kU3RhdGljKFwic29tZVwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIGZuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gQm9vbGVhbiA6IGFyZ3VtZW50c1swXTtcblx0ICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gdHJ1ZTtcblx0ICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IzMCA9IGZhbHNlO1xuXHQgIHZhciBfaXRlcmF0b3JFcnJvcjMwID0gdW5kZWZpbmVkO1xuXG5cdCAgdHJ5IHtcblx0ICAgIGZvciAodmFyIF9pdGVyYXRvcjMwID0gX2dldEl0ZXJhdG9yKHRoaXMpLCBfc3RlcDMwOyAhKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zMCA9IChfc3RlcDMwID0gX2l0ZXJhdG9yMzAubmV4dCgpKS5kb25lKTsgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMwID0gdHJ1ZSkge1xuXHQgICAgICB2YXIgeCA9IF9zdGVwMzAudmFsdWU7XG5cblx0ICAgICAgaWYgKGZuKHgpKSB7XG5cdCAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGNhdGNoIChlcnIpIHtcblx0ICAgIF9kaWRJdGVyYXRvckVycm9yMzAgPSB0cnVlO1xuXHQgICAgX2l0ZXJhdG9yRXJyb3IzMCA9IGVycjtcblx0ICB9IGZpbmFsbHkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMzAgJiYgX2l0ZXJhdG9yMzBbXCJyZXR1cm5cIl0pIHtcblx0ICAgICAgICBfaXRlcmF0b3IzMFtcInJldHVyblwiXSgpO1xuXHQgICAgICB9XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzMCkge1xuXHQgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMzA7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cblx0ICByZXR1cm4gZmFsc2U7XG5cdH0sIDEpO1xuXG5cdHByb3RvdHlwZUFuZFN0YXRpYyhcInRvQXJyYXlcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMpKTtcblx0fSk7XG5cblx0Lypcblx0ICogTWV0aG9kcyB0aGF0IHJldHVybiBhbiBhcnJheSBvZiBpdGVyYWJsZXMuXG5cdCAqL1xuXG5cdHZhciBNQVhfQ0FDSEUgPSA1MDA7XG5cblx0dmFyIF90ZWUgPSByZXdyYXAoX3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIGNhbGxlZSQwJDAoaXRlcmF0b3IsIGNhY2hlKSB7XG5cdCAgdmFyIGl0ZW1zLCBpbmRleCwgX2l0ZXJhdG9yJG5leHQsIGRvbmUsIHZhbHVlO1xuXG5cdCAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBjYWxsZWUkMCQwJChjb250ZXh0JDEkMCkge1xuXHQgICAgd2hpbGUgKDEpIHN3aXRjaCAoY29udGV4dCQxJDAucHJldiA9IGNvbnRleHQkMSQwLm5leHQpIHtcblx0ICAgICAgY2FzZSAwOlxuXHQgICAgICAgIGl0ZW1zID0gY2FjaGUuaXRlbXM7XG5cdCAgICAgICAgaW5kZXggPSAwO1xuXG5cdCAgICAgIGNhc2UgMjpcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyNTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmICghKGluZGV4ID09PSBpdGVtcy5sZW5ndGgpKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTQ7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBfaXRlcmF0b3IkbmV4dCA9IGl0ZXJhdG9yLm5leHQoKTtcblx0ICAgICAgICBkb25lID0gX2l0ZXJhdG9yJG5leHQuZG9uZTtcblx0ICAgICAgICB2YWx1ZSA9IF9pdGVyYXRvciRuZXh0LnZhbHVlO1xuXG5cdCAgICAgICAgaWYgKCFkb25lKSB7XG5cdCAgICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTA7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cblx0ICAgICAgICBpZiAoY2FjaGUucmV0dXJuZWQgPT09IE1JU1NJTkcpIHtcblx0ICAgICAgICAgIGNhY2hlLnJldHVybmVkID0gdmFsdWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHJldHVybiBjb250ZXh0JDEkMC5hYnJ1cHQoXCJicmVha1wiLCAyNSk7XG5cblx0ICAgICAgY2FzZSAxMDpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMTI7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4KytdID0gdmFsdWU7XG5cblx0ICAgICAgY2FzZSAxMjpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAxNDpcblx0ICAgICAgICBpZiAoIShpbmRleCA9PT0gY2FjaGUudGFpbCkpIHtcblx0ICAgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAyMTtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHZhbHVlID0gaXRlbXNbaW5kZXhdO1xuXG5cdCAgICAgICAgaWYgKGluZGV4ID09PSBNQVhfQ0FDSEUpIHtcblx0ICAgICAgICAgIGl0ZW1zID0gY2FjaGUuaXRlbXMgPSBpdGVtcy5zbGljZShpbmRleCk7XG5cdCAgICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAgICAgICBjYWNoZS50YWlsID0gMDtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaXRlbXNbaW5kZXhdID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgY2FjaGUudGFpbCA9ICsraW5kZXg7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGNvbnRleHQkMSQwLm5leHQgPSAxOTtcblx0ICAgICAgICByZXR1cm4gdmFsdWU7XG5cblx0ICAgICAgY2FzZSAxOTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyMTpcblx0ICAgICAgICBjb250ZXh0JDEkMC5uZXh0ID0gMjM7XG5cdCAgICAgICAgcmV0dXJuIGl0ZW1zW2luZGV4KytdO1xuXG5cdCAgICAgIGNhc2UgMjM6XG5cdCAgICAgICAgY29udGV4dCQxJDAubmV4dCA9IDI7XG5cdCAgICAgICAgYnJlYWs7XG5cblx0ICAgICAgY2FzZSAyNTpcblxuXHQgICAgICAgIGlmIChjYWNoZS50YWlsID09PSBpbmRleCkge1xuXHQgICAgICAgICAgaXRlbXMubGVuZ3RoID0gMDtcblx0ICAgICAgICB9XG5cblx0ICAgICAgICByZXR1cm4gY29udGV4dCQxJDAuYWJydXB0KFwicmV0dXJuXCIsIGNhY2hlLnJldHVybmVkKTtcblxuXHQgICAgICBjYXNlIDI3OlxuXHQgICAgICBjYXNlIFwiZW5kXCI6XG5cdCAgICAgICAgcmV0dXJuIGNvbnRleHQkMSQwLnN0b3AoKTtcblx0ICAgIH1cblx0ICB9LCBjYWxsZWUkMCQwLCB0aGlzKTtcblx0fSkpO1xuXHRfdGVlLnByb3RvdHlwZSA9IFd1LnByb3RvdHlwZTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJ0ZWVcIiwgZnVuY3Rpb24gKCkge1xuXHQgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gMiA6IGFyZ3VtZW50c1swXTtcblxuXHQgIHZhciBpdGVyYWJsZXMgPSBuZXcgQXJyYXkobik7XG5cdCAgdmFyIGNhY2hlID0geyB0YWlsOiAwLCBpdGVtczogW10sIHJldHVybmVkOiBNSVNTSU5HIH07XG5cblx0ICB3aGlsZSAobi0tKSB7XG5cdCAgICBpdGVyYWJsZXNbbl0gPSBfdGVlKHRoaXMsIGNhY2hlKTtcblx0ICB9XG5cblx0ICByZXR1cm4gaXRlcmFibGVzO1xuXHR9LCAxKTtcblxuXHRwcm90b3R5cGVBbmRTdGF0aWMoXCJ1bnppcFwiLCBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyAyIDogYXJndW1lbnRzWzBdO1xuXG5cdCAgcmV0dXJuIHRoaXMudGVlKG4pLm1hcChmdW5jdGlvbiAoaXRlciwgaSkge1xuXHQgICAgcmV0dXJuIGl0ZXIucGx1Y2soaSk7XG5cdCAgfSk7XG5cdH0sIDEpO1xuXG5cdC8qXG5cdCAqIE51bWJlciBvZiBjaGFtYmVycy5cblx0ICovXG5cblx0d3UudGFuZyA9IHsgY2xhbjogMzYgfTtcblxuXHQvLyBXZSBkb24ndCBoYXZlIGEgY2FjaGVkIGl0ZW0gZm9yIHRoaXMgaW5kZXgsIHdlIG5lZWQgdG8gZm9yY2UgaXRzXG5cdC8vIGV2YWx1YXRpb24uXG5cblx0Ly8gSWYgd2UgYXJlIHRoZSBsYXN0IGl0ZXJhdG9yIHRvIHVzZSBhIGNhY2hlZCB2YWx1ZSwgY2xlYW4gdXAgYWZ0ZXJcblx0Ly8gb3Vyc2VsdmVzLlxuXG5cdC8vIFdlIGhhdmUgYW4gaXRlbSBpbiB0aGUgY2FjaGUgZm9yIHRoaXMgaW5kZXgsIHNvIHlpZWxkIGl0LlxuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0dmFyIF9BcnJheSRmcm9tID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKVtcImRlZmF1bHRcIl07XG5cblx0ZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBmdW5jdGlvbiAoYXJyKSB7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuXHQgICAgcmV0dXJuIGFycjI7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBfQXJyYXkkZnJvbShhcnIpO1xuXHQgIH1cblx0fTtcblxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG4vKioqLyB9LFxuLyogMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5BcnJheS5mcm9tO1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJGF0ICA9IF9fd2VicGFja19yZXF1aXJlX18oNSkodHJ1ZSk7XG5cblx0Ly8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uKGl0ZXJhdGVkKXtcblx0ICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG5cdCAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcblx0Ly8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxuXHR9LCBmdW5jdGlvbigpe1xuXHQgIHZhciBPICAgICA9IHRoaXMuX3Rcblx0ICAgICwgaW5kZXggPSB0aGlzLl9pXG5cdCAgICAsIHBvaW50O1xuXHQgIGlmKGluZGV4ID49IE8ubGVuZ3RoKXJldHVybiB7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZX07XG5cdCAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuXHQgIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuXHQgIHJldHVybiB7dmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZX07XG5cdH0pO1xuXG4vKioqLyB9LFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG5cdC8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KVxuXHQgICwgZGVmaW5lZCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihUT19TVFJJTkcpe1xuXHQgIHJldHVybiBmdW5jdGlvbih0aGF0LCBwb3Mpe1xuXHQgICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSlcblx0ICAgICAgLCBpID0gdG9JbnRlZ2VyKHBvcylcblx0ICAgICAgLCBsID0gcy5sZW5ndGhcblx0ICAgICAgLCBhLCBiO1xuXHQgICAgaWYoaSA8IDAgfHwgaSA+PSBsKXJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcblx0ICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG5cdCAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsXG5cdCAgICAgIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuXHQgICAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG5cdCAgICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIDcuMS40IFRvSW50ZWdlclxuXHR2YXIgY2VpbCAgPSBNYXRoLmNlaWxcblx0ICAsIGZsb29yID0gTWF0aC5mbG9vcjtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICBpZihpdCA9PSB1bmRlZmluZWQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIExJQlJBUlkgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oOSlcblx0ICAsICRkZWYgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgLCAkcmVkZWYgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKVxuXHQgICwgaGlkZSAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIGhhcyAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBTWU1CT0xfSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIEJVR0dZICAgICAgICAgICA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKSAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG5cdCAgLCBGRl9JVEVSQVRPUiAgICAgPSAnQEBpdGVyYXRvcidcblx0ICAsIEtFWVMgICAgICAgICAgICA9ICdrZXlzJ1xuXHQgICwgVkFMVUVTICAgICAgICAgID0gJ3ZhbHVlcyc7XG5cdHZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0Upe1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjQpKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblx0ICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24oa2luZCl7XG5cdCAgICBzd2l0Y2goa2luZCl7XG5cdCAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICAgIH0gcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcblx0ICB9O1xuXHQgIHZhciBUQUcgICAgICA9IE5BTUUgKyAnIEl0ZXJhdG9yJ1xuXHQgICAgLCBwcm90byAgICA9IEJhc2UucHJvdG90eXBlXG5cdCAgICAsIF9uYXRpdmUgID0gcHJvdG9bU1lNQk9MX0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuXHQgICAgLCBfZGVmYXVsdCA9IF9uYXRpdmUgfHwgY3JlYXRlTWV0aG9kKERFRkFVTFQpXG5cdCAgICAsIG1ldGhvZHMsIGtleTtcblx0ICAvLyBGaXggbmF0aXZlXG5cdCAgaWYoX25hdGl2ZSl7XG5cdCAgICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5nZXRQcm90byhfZGVmYXVsdC5jYWxsKG5ldyBCYXNlKSk7XG5cdCAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcblx0ICAgIC8vIEZGIGZpeFxuXHQgICAgaWYoIUxJQlJBUlkgJiYgaGFzKHByb3RvLCBGRl9JVEVSQVRPUikpaGlkZShJdGVyYXRvclByb3RvdHlwZSwgU1lNQk9MX0lURVJBVE9SLCByZXR1cm5UaGlzKTtcblx0ICB9XG5cdCAgLy8gRGVmaW5lIGl0ZXJhdG9yXG5cdCAgaWYoIUxJQlJBUlkgfHwgRk9SQ0UpaGlkZShwcm90bywgU1lNQk9MX0lURVJBVE9SLCBfZGVmYXVsdCk7XG5cdCAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuXHQgIEl0ZXJhdG9yc1tOQU1FXSA9IF9kZWZhdWx0O1xuXHQgIEl0ZXJhdG9yc1tUQUddICA9IHJldHVyblRoaXM7XG5cdCAgaWYoREVGQVVMVCl7XG5cdCAgICBtZXRob2RzID0ge1xuXHQgICAgICBrZXlzOiAgICBJU19TRVQgICAgICAgICAgICA/IF9kZWZhdWx0IDogY3JlYXRlTWV0aG9kKEtFWVMpLFxuXHQgICAgICB2YWx1ZXM6ICBERUZBVUxUID09IFZBTFVFUyA/IF9kZWZhdWx0IDogY3JlYXRlTWV0aG9kKFZBTFVFUyksXG5cdCAgICAgIGVudHJpZXM6IERFRkFVTFQgIT0gVkFMVUVTID8gX2RlZmF1bHQgOiBjcmVhdGVNZXRob2QoJ2VudHJpZXMnKVxuXHQgICAgfTtcblx0ICAgIGlmKEZPUkNFKWZvcihrZXkgaW4gbWV0aG9kcyl7XG5cdCAgICAgIGlmKCEoa2V5IGluIHByb3RvKSkkcmVkZWYocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcblx0ICAgIH0gZWxzZSAkZGVmKCRkZWYuUCArICRkZWYuRiAqIEJVR0dZLCBOQU1FLCBtZXRob2RzKTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBjb3JlICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKVxuXHQgICwgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cdHZhciBjdHggPSBmdW5jdGlvbihmbiwgdGhhdCl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uKCl7XG5cdCAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcblx0ICB9O1xuXHR9O1xuXHR2YXIgJGRlZiA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG5cdCAgdmFyIGtleSwgb3duLCBvdXQsIGV4cFxuXHQgICAgLCBpc0dsb2JhbCA9IHR5cGUgJiAkZGVmLkdcblx0ICAgICwgaXNQcm90byAgPSB0eXBlICYgJGRlZi5QXG5cdCAgICAsIHRhcmdldCAgID0gaXNHbG9iYWwgPyBnbG9iYWwgOiB0eXBlICYgJGRlZi5TXG5cdCAgICAgICAgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdXG5cdCAgICAsIGV4cG9ydHMgID0gaXNHbG9iYWwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcblx0ICBpZihpc0dsb2JhbClzb3VyY2UgPSBuYW1lO1xuXHQgIGZvcihrZXkgaW4gc291cmNlKXtcblx0ICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuXHQgICAgb3duID0gISh0eXBlICYgJGRlZi5GKSAmJiB0YXJnZXQgJiYga2V5IGluIHRhcmdldDtcblx0ICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250aW51ZTtcblx0ICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG5cdCAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuXHQgICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG5cdCAgICBpZihpc0dsb2JhbCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJylleHAgPSBzb3VyY2Vba2V5XTtcblx0ICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG5cdCAgICBlbHNlIGlmKHR5cGUgJiAkZGVmLkIgJiYgb3duKWV4cCA9IGN0eChvdXQsIGdsb2JhbCk7XG5cdCAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuXHQgICAgZWxzZSBpZih0eXBlICYgJGRlZi5XICYmIHRhcmdldFtrZXldID09IG91dCkhZnVuY3Rpb24oQyl7XG5cdCAgICAgIGV4cCA9IGZ1bmN0aW9uKHBhcmFtKXtcblx0ICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEMgPyBuZXcgQyhwYXJhbSkgOiBDKHBhcmFtKTtcblx0ICAgICAgfTtcblx0ICAgICAgZXhwW1BST1RPVFlQRV0gPSBDW1BST1RPVFlQRV07XG5cdCAgICB9KG91dCk7XG5cdCAgICBlbHNlIGV4cCA9IGlzUHJvdG8gJiYgdHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nID8gY3R4KEZ1bmN0aW9uLmNhbGwsIG91dCkgOiBvdXQ7XG5cdCAgICAvLyBleHBvcnRcblx0ICAgIGV4cG9ydHNba2V5XSA9IGV4cDtcblx0ICAgIGlmKGlzUHJvdG8pKGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pKVtrZXldID0gb3V0O1xuXHQgIH1cblx0fTtcblx0Ly8gdHlwZSBiaXRtYXBcblx0JGRlZi5GID0gMTsgIC8vIGZvcmNlZFxuXHQkZGVmLkcgPSAyOyAgLy8gZ2xvYmFsXG5cdCRkZWYuUyA9IDQ7ICAvLyBzdGF0aWNcblx0JGRlZi5QID0gODsgIC8vIHByb3RvXG5cdCRkZWYuQiA9IDE2OyAvLyBiaW5kXG5cdCRkZWYuVyA9IDMyOyAvLyB3cmFwXG5cdG1vZHVsZS5leHBvcnRzID0gJGRlZjtcblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxuXHR2YXIgVU5ERUZJTkVEID0gJ3VuZGVmaW5lZCc7XG5cdHZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gVU5ERUZJTkVEICYmIHdpbmRvdy5NYXRoID09IE1hdGhcblx0ICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9IFVOREVGSU5FRCAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGYgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHRpZih0eXBlb2YgX19nID09ICdudW1iZXInKV9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjogJzEuMi4wJ307XG5cdGlmKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4vKioqLyB9LFxuLyogMTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cbi8qKiovIH0sXG4vKiAxNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyICQgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpID8gZnVuY3Rpb24ob2JqZWN0LCBrZXksIHZhbHVlKXtcblx0ICByZXR1cm4gJC5zZXREZXNjKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG5cdH0gOiBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuXHQgIG9iamVjdFtrZXldID0gdmFsdWU7XG5cdCAgcmV0dXJuIG9iamVjdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHR2YXIgJE9iamVjdCA9IE9iamVjdDtcblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgY3JlYXRlOiAgICAgJE9iamVjdC5jcmVhdGUsXG5cdCAgZ2V0UHJvdG86ICAgJE9iamVjdC5nZXRQcm90b3R5cGVPZixcblx0ICBpc0VudW06ICAgICB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcblx0ICBnZXREZXNjOiAgICAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcblx0ICBzZXREZXNjOiAgICAkT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuXHQgIHNldERlc2NzOiAgICRPYmplY3QuZGVmaW5lUHJvcGVydGllcyxcblx0ICBnZXRLZXlzOiAgICAkT2JqZWN0LmtleXMsXG5cdCAgZ2V0TmFtZXM6ICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLFxuXHQgIGdldFN5bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuXHQgIGVhY2g6ICAgICAgIFtdLmZvckVhY2hcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuXHQgIHJldHVybiB7XG5cdCAgICBlbnVtZXJhYmxlICA6ICEoYml0bWFwICYgMSksXG5cdCAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG5cdCAgICB3cml0YWJsZSAgICA6ICEoYml0bWFwICYgNCksXG5cdCAgICB2YWx1ZSAgICAgICA6IHZhbHVlXG5cdCAgfTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5cdG1vZHVsZS5leHBvcnRzID0gIV9fd2VicGFja19yZXF1aXJlX18oMTgpKGZ1bmN0aW9uKCl7XG5cdCAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gNzsgfX0pLmEgIT0gNztcblx0fSk7XG5cbi8qKiovIH0sXG4vKiAxOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuICEhZXhlYygpO1xuXHQgIH0gY2F0Y2goZSl7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIGtleSl7XG5cdCAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIHN0b3JlICA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpKCd3a3MnKVxuXHQgICwgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuU3ltYm9sO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWUpe1xuXHQgIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuXHQgICAgU3ltYm9sICYmIFN5bWJvbFtuYW1lXSB8fCAoU3ltYm9sIHx8IF9fd2VicGFja19yZXF1aXJlX18oMjIpKSgnU3ltYm9sLicgKyBuYW1lKSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpXG5cdCAgLCBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJ1xuXHQgICwgc3RvcmUgID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG5cdCAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0dmFyIGlkID0gMFxuXHQgICwgcHggPSBNYXRoLnJhbmRvbSgpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG5cdCAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDIzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKioqLyB9LFxuLyogMjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuXHQvLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KShJdGVyYXRvclByb3RvdHlwZSwgX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KXtcblx0ICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSAkLmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwge25leHQ6IF9fd2VicGFja19yZXF1aXJlX18oMTYpKDEsbmV4dCl9KTtcblx0ICBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KShDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgaGFzICA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpXG5cdCAgLCBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNClcblx0ICAsIFRBRyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgndG9TdHJpbmdUYWcnKTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCB0YWcsIHN0YXQpe1xuXHQgIGlmKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpaGlkZShpdCwgVEFHLCB0YWcpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIGN0eCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsICRkZWYgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsIHRvT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSlcblx0ICAsIGNhbGwgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMClcblx0ICAsIGlzQXJyYXlJdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcblx0ICAsIHRvTGVuZ3RoICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNClcblx0ICAsIGdldEl0ZXJGbiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIV9fd2VicGFja19yZXF1aXJlX18oMzgpKGZ1bmN0aW9uKGl0ZXIpeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuXHQgIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcblx0ICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcblx0ICAgIHZhciBPICAgICAgID0gdG9PYmplY3QoYXJyYXlMaWtlKVxuXHQgICAgICAsIEMgICAgICAgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5XG5cdCAgICAgICwgbWFwZm4gICA9IGFyZ3VtZW50c1sxXVxuXHQgICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG5cdCAgICAgICwgaW5kZXggICA9IDBcblx0ICAgICAgLCBpdGVyRm4gID0gZ2V0SXRlckZuKE8pXG5cdCAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuXHQgICAgaWYobWFwcGluZyltYXBmbiA9IGN0eChtYXBmbiwgYXJndW1lbnRzWzJdLCAyKTtcblx0ICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuXHQgICAgaWYoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpe1xuXHQgICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG5cdCAgICAgICAgcmVzdWx0W2luZGV4XSA9IG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG5cdCAgICAgIGZvcihyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG5cdCAgICAgICAgcmVzdWx0W2luZGV4XSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcblx0ICAgIHJldHVybiByZXN1bHQ7XG5cdCAgfVxuXHR9KTtcblxuXG4vKioqLyB9LFxuLyogMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xuXHR2YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIHRoYXQsIGxlbmd0aCl7XG5cdCAgYUZ1bmN0aW9uKGZuKTtcblx0ICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuXHQgIHN3aXRjaChsZW5ndGgpe1xuXHQgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24oYSl7XG5cdCAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuXHQgICAgfTtcblx0ICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uKGEsIGIpe1xuXHQgICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcblx0ICAgIH07XG5cdCAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbihhLCBiLCBjKXtcblx0ICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG5cdCAgICB9O1xuXHQgIH1cblx0ICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG5cdCAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcblx0dmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG5cdHZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpe1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuXHQgIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHZhciByZXQgPSBpdGVyYXRvclsncmV0dXJuJ107XG5cdCAgICBpZihyZXQgIT09IHVuZGVmaW5lZClhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuXHQgICAgdGhyb3cgZTtcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuXHQgIHJldHVybiBpdDtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDMyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcblx0dmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIChJdGVyYXRvcnMuQXJyYXkgfHwgQXJyYXkucHJvdG90eXBlW0lURVJBVE9SXSkgPT09IGl0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIDcuMS4xNSBUb0xlbmd0aFxuXHR2YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KVxuXHQgICwgbWluICAgICAgID0gTWF0aC5taW47XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG5cdH07XG5cbi8qKiovIH0sXG4vKiAzNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGNsYXNzb2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpXG5cdCAgLCBJVEVSQVRPUiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnaXRlcmF0b3InKVxuXHQgICwgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbihpdCl7XG5cdCAgaWYoaXQgIT0gdW5kZWZpbmVkKXJldHVybiBpdFtJVEVSQVRPUl0gfHwgaXRbJ0BAaXRlcmF0b3InXSB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG5cdHZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KVxuXHQgICwgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3RvU3RyaW5nVGFnJylcblx0ICAvLyBFUzMgd3JvbmcgaGVyZVxuXHQgICwgQVJHID0gY29mKGZ1bmN0aW9uKCl7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIE8sIFQsIEI7XG5cdCAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG5cdCAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2Vcblx0ICAgIDogdHlwZW9mIChUID0gKE8gPSBPYmplY3QoaXQpKVtUQUddKSA9PSAnc3RyaW5nJyA/IFRcblx0ICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuXHQgICAgOiBBUkcgPyBjb2YoTylcblx0ICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcblx0ICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdHZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiAzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIFNZTUJPTF9JVEVSQVRPUiA9IF9fd2VicGFja19yZXF1aXJlX18oMjApKCdpdGVyYXRvcicpXG5cdCAgLCBTQUZFX0NMT1NJTkcgICAgPSBmYWxzZTtcblx0dHJ5IHtcblx0ICB2YXIgcml0ZXIgPSBbN11bU1lNQk9MX0lURVJBVE9SXSgpO1xuXHQgIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uKCl7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG5cdCAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24oKXsgdGhyb3cgMjsgfSk7XG5cdH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcblx0ICBpZighU0FGRV9DTE9TSU5HKXJldHVybiBmYWxzZTtcblx0ICB2YXIgc2FmZSA9IGZhbHNlO1xuXHQgIHRyeSB7XG5cdCAgICB2YXIgYXJyICA9IFs3XVxuXHQgICAgICAsIGl0ZXIgPSBhcnJbU1lNQk9MX0lURVJBVE9SXSgpO1xuXHQgICAgaXRlci5uZXh0ID0gZnVuY3Rpb24oKXsgc2FmZSA9IHRydWU7IH07XG5cdCAgICBhcnJbU1lNQk9MX0lURVJBVE9SXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyOyB9O1xuXHQgICAgZXhlYyhhcnIpO1xuXHQgIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cblx0ICByZXR1cm4gc2FmZTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDM5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX2dldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MClbXCJkZWZhdWx0XCJdO1xuXG5cdHZhciBfaXNJdGVyYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpW1wiZGVmYXVsdFwiXTtcblxuXHRleHBvcnRzW1wiZGVmYXVsdFwiXSA9IChmdW5jdGlvbiAoKSB7XG5cdCAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcblx0ICAgIHZhciBfYXJyID0gW107XG5cdCAgICB2YXIgX24gPSB0cnVlO1xuXHQgICAgdmFyIF9kID0gZmFsc2U7XG5cdCAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cblx0ICAgIHRyeSB7XG5cdCAgICAgIGZvciAodmFyIF9pID0gX2dldEl0ZXJhdG9yKGFyciksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7XG5cdCAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuXHQgICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZXJyKSB7XG5cdCAgICAgIF9kID0gdHJ1ZTtcblx0ICAgICAgX2UgPSBlcnI7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0pIF9pW1wicmV0dXJuXCJdKCk7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICByZXR1cm4gX2Fycjtcblx0ICB9XG5cblx0ICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuXHQgICAgICByZXR1cm4gYXJyO1xuXHQgICAgfSBlbHNlIGlmIChfaXNJdGVyYWJsZShPYmplY3QoYXJyKSkpIHtcblx0ICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpO1xuXHQgICAgfVxuXHQgIH07XG5cdH0pKCk7XG5cblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuLyoqKi8gfSxcbi8qIDQwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNDEpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA0MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG5cbi8qKiovIH0sXG4vKiA0MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdHZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0SXRlcmF0b3JzLk5vZGVMaXN0ID0gSXRlcmF0b3JzLkhUTUxDb2xsZWN0aW9uID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vKioqLyB9LFxuLyogNDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIHNldFVuc2NvcGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KVxuXHQgICwgc3RlcCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpXG5cdCAgLCBJdGVyYXRvcnMgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMylcblx0ICAsIHRvSU9iamVjdCAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblxuXHQvLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG5cdC8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG5cdC8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcblx0Ly8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5cdF9fd2VicGFja19yZXF1aXJlX18oOCkoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG5cdCAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcblx0ICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuXHQvLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcblx0fSwgZnVuY3Rpb24oKXtcblx0ICB2YXIgTyAgICAgPSB0aGlzLl90XG5cdCAgICAsIGtpbmQgID0gdGhpcy5fa1xuXHQgICAgLCBpbmRleCA9IHRoaXMuX2krKztcblx0ICBpZighTyB8fCBpbmRleCA+PSBPLmxlbmd0aCl7XG5cdCAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuXHQgICAgcmV0dXJuIHN0ZXAoMSk7XG5cdCAgfVxuXHQgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuXHQgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuXHQgIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcblx0fSwgJ3ZhbHVlcycpO1xuXG5cdC8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcblx0SXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuXHRzZXRVbnNjb3BlKCdrZXlzJyk7XG5cdHNldFVuc2NvcGUoJ3ZhbHVlcycpO1xuXHRzZXRVbnNjb3BlKCdlbnRyaWVzJyk7XG5cbi8qKiovIH0sXG4vKiA0NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9O1xuXG4vKioqLyB9LFxuLyogNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZG9uZSwgdmFsdWUpe1xuXHQgIHJldHVybiB7dmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmV9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xyXG5cdHZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NylcclxuXHQgICwgZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XHJcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XHJcblx0ICByZXR1cm4gSU9iamVjdChkZWZpbmVkKGl0KSk7XHJcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBpbmRleGVkIG9iamVjdCwgZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG5cdHZhciBjb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcblx0bW9kdWxlLmV4cG9ydHMgPSAwIGluIE9iamVjdCgneicpID8gT2JqZWN0IDogZnVuY3Rpb24oaXQpe1xuXHQgIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDQ4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKVxuXHQgICwgZ2V0ICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcblx0ICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG5cdCAgcmV0dXJuIGFuT2JqZWN0KGl0ZXJGbi5jYWxsKGl0KSk7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA0OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpO1xuXG4vKioqLyB9LFxuLyogNTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBjbGFzc29mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KVxuXHQgICwgSVRFUkFUT1IgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJylcblx0ICAsIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLmlzSXRlcmFibGUgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIE8gPSBPYmplY3QoaXQpO1xuXHQgIHJldHVybiBJVEVSQVRPUiBpbiBPIHx8ICdAQGl0ZXJhdG9yJyBpbiBPIHx8IEl0ZXJhdG9ycy5oYXNPd25Qcm9wZXJ0eShjbGFzc29mKE8pKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDUyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNTMpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA1MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg0Mik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ2l0ZXJhdG9yJyk7XG5cbi8qKiovIH0sXG4vKiA1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8vIFRoaXMgbWV0aG9kIG9mIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdCBuZWVkcyB0byBiZVxuXHQvLyBrZXB0IGlkZW50aWNhbCB0byB0aGUgd2F5IGl0IGlzIG9idGFpbmVkIGluIHJ1bnRpbWUuanNcblx0dmFyIGcgPVxuXHQgIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuXHQgIHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgPyB3aW5kb3cgOlxuXHQgIHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHRoaXM7XG5cblx0Ly8gVXNlIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBiZWNhdXNlIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjYWxsaW5nXG5cdC8vIGBoYXNPd25Qcm9wZXJ0eWAgb24gdGhlIGdsb2JhbCBgc2VsZmAgb2JqZWN0IGluIGEgd29ya2VyLiBTZWUgIzE4My5cblx0dmFyIGhhZFJ1bnRpbWUgPSBnLnJlZ2VuZXJhdG9yUnVudGltZSAmJlxuXHQgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGcpLmluZGV4T2YoXCJyZWdlbmVyYXRvclJ1bnRpbWVcIikgPj0gMDtcblxuXHQvLyBTYXZlIHRoZSBvbGQgcmVnZW5lcmF0b3JSdW50aW1lIGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuXG5cdHZhciBvbGRSdW50aW1lID0gaGFkUnVudGltZSAmJiBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblxuXHQvLyBGb3JjZSByZWV2YWx1dGF0aW9uIG9mIHJ1bnRpbWUuanMuXG5cdGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cblx0aWYgKGhhZFJ1bnRpbWUpIHtcblx0ICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLlxuXHQgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTtcblx0fSBlbHNlIHtcblx0ICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLlxuXHQgIHRyeSB7XG5cdCAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cdCAgfSBjYXRjaChlKSB7XG5cdCAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcblx0ICB9XG5cdH1cblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IG1vZHVsZS5leHBvcnRzLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKVxuXG4vKioqLyB9LFxuLyogNTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDE0LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9tYXN0ZXIvTElDRU5TRSBmaWxlLiBBblxuXHQgKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cblx0ICogdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHR2YXIgX1N5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX1N5bWJvbCRpdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpW1wiZGVmYXVsdFwiXTtcblxuXHR2YXIgX09iamVjdCRjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKVtcImRlZmF1bHRcIl07XG5cblx0dmFyIF9Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSlbXCJkZWZhdWx0XCJdO1xuXG5cdCEoZnVuY3Rpb24gKGdsb2JhbCkge1xuXHQgIFwidXNlIHN0cmljdFwiO1xuXG5cdCAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdCAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG5cdCAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gdHlwZW9mIF9TeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBfU3ltYm9sJGl0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuXG5cdCAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcblx0ICB2YXIgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cdCAgaWYgKHJ1bnRpbWUpIHtcblx0ICAgIGlmIChpbk1vZHVsZSkge1xuXHQgICAgICAvLyBJZiByZWdlbmVyYXRvclJ1bnRpbWUgaXMgZGVmaW5lZCBnbG9iYWxseSBhbmQgd2UncmUgaW4gYSBtb2R1bGUsXG5cdCAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG5cdCAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcblx0ICAgIH1cblx0ICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcblx0ICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cblx0ICAgIHJldHVybjtcblx0ICB9XG5cblx0ICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcblx0ICAvLyBtb2R1bGUuZXhwb3J0cyAoaWYgd2UncmUgaW4gYSBtb2R1bGUpIG9yIGEgbmV3LCBlbXB0eSBvYmplY3QuXG5cdCAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cblx0ICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG5cdCAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuXHQgICAgdmFyIGdlbmVyYXRvciA9IF9PYmplY3QkY3JlYXRlKChvdXRlckZuIHx8IEdlbmVyYXRvcikucHJvdG90eXBlKTtcblxuXHQgICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYgfHwgbnVsbCwgbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pKTtcblxuXHQgICAgcmV0dXJuIGdlbmVyYXRvcjtcblx0ICB9XG5cdCAgcnVudGltZS53cmFwID0gd3JhcDtcblxuXHQgIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuXHQgIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuXHQgIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuXHQgIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2Vcblx0ICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG5cdCAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuXHQgIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG5cdCAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG5cdCAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuXHQgIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cblx0ICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcblx0ICAgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG5cdCAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG5cdCAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcblx0ICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG5cdCAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuXHQgIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cblx0ICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG5cdCAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG5cdCAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG5cdCAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcblx0ICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXHQgIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG5cdCAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuXHQgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuXHQgIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGU7XG5cdCAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcblx0ICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuXHQgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG5cdCAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcblx0ICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuXHQgIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcblx0ICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcblx0ICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG5cdCAgICAgIH07XG5cdCAgICB9KTtcblx0ICB9XG5cblx0ICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG5cdCAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG5cdCAgICByZXR1cm4gY3RvciA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG5cdCAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG5cdCAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG5cdCAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCIgOiBmYWxzZTtcblx0ICB9O1xuXG5cdCAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuXHQgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuXHQgICAgZ2VuRnVuLnByb3RvdHlwZSA9IF9PYmplY3QkY3JlYXRlKEdwKTtcblx0ICAgIHJldHVybiBnZW5GdW47XG5cdCAgfTtcblxuXHQgIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuXHQgIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG5cdCAgLy8gYHZhbHVlIGluc3RhbmNlb2YgQXdhaXRBcmd1bWVudGAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG5cdCAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC4gU29tZSBtYXkgY29uc2lkZXIgdGhlIG5hbWUgb2YgdGhpcyBtZXRob2QgdG9vXG5cdCAgLy8gY3V0ZXN5LCBidXQgdGhleSBhcmUgY3VybXVkZ2VvbnMuXG5cdCAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uIChhcmcpIHtcblx0ICAgIHJldHVybiBuZXcgQXdhaXRBcmd1bWVudChhcmcpO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBBd2FpdEFyZ3VtZW50KGFyZykge1xuXHQgICAgdGhpcy5hcmcgPSBhcmc7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcblx0ICAgIC8vIFRoaXMgaW52b2tlIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gaW4gYSBzdHlsZSB0aGF0IGFzc3VtZXMgc29tZVxuXHQgICAgLy8gY2FsbGluZyBmdW5jdGlvbiAob3IgUHJvbWlzZSkgd2lsbCBoYW5kbGUgZXhjZXB0aW9ucy5cblx0ICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuXHQgICAgICB2YXIgcmVzdWx0ID0gZ2VuZXJhdG9yW21ldGhvZF0oYXJnKTtcblx0ICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuXHQgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBBd2FpdEFyZ3VtZW50ID8gX1Byb21pc2UucmVzb2x2ZSh2YWx1ZS5hcmcpLnRoZW4oaW52b2tlTmV4dCwgaW52b2tlVGhyb3cpIDogX1Byb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodW53cmFwcGVkKSB7XG5cdCAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcblx0ICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcblx0ICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuXHQgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG5cdCAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3Rcblx0ICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG5cdCAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuXHQgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuXHQgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuXHQgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG5cdCAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG5cdCAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuXHQgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcblx0ICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcblx0ICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cblx0ICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG5cdCAgICAgICAgcmV0dXJuIHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cblx0ICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBwcm9jZXNzLmRvbWFpbikge1xuXHQgICAgICBpbnZva2UgPSBwcm9jZXNzLmRvbWFpbi5iaW5kKGludm9rZSk7XG5cdCAgICB9XG5cblx0ICAgIHZhciBpbnZva2VOZXh0ID0gaW52b2tlLmJpbmQoZ2VuZXJhdG9yLCBcIm5leHRcIik7XG5cdCAgICB2YXIgaW52b2tlVGhyb3cgPSBpbnZva2UuYmluZChnZW5lcmF0b3IsIFwidGhyb3dcIik7XG5cdCAgICB2YXIgaW52b2tlUmV0dXJuID0gaW52b2tlLmJpbmQoZ2VuZXJhdG9yLCBcInJldHVyblwiKTtcblx0ICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cblx0ICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcblx0ICAgICAgdmFyIGVucXVldWVSZXN1bHQgPVxuXHQgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG5cdCAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuXHQgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG5cdCAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG5cdCAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuXHQgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuXHQgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG5cdCAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG5cdCAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG5cdCAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG5cdCAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG5cdCAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cblx0ICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBpbnZva2UobWV0aG9kLCBhcmcpO1xuXHQgICAgICB9KSA6IG5ldyBfUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXHQgICAgICAgIHJlc29sdmUoaW52b2tlKG1ldGhvZCwgYXJnKSk7XG5cdCAgICAgIH0pO1xuXG5cdCAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGVucXVldWVSZXN1bHQgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnlcblx0ICAgICAgLy8gbGF0ZXIgaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuXHQgICAgICBwcmV2aW91c1Byb21pc2UgPSBlbnF1ZXVlUmVzdWx0W1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGlnbm9yZWQpIHt9KTtcblxuXHQgICAgICByZXR1cm4gZW5xdWV1ZVJlc3VsdDtcblx0ICAgIH1cblxuXHQgICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcblx0ICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuXHQgICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcblx0ICB9XG5cblx0ICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuXG5cdCAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuXHQgIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuXHQgIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuXHQgIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbiAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcblx0ICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3Iod3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkpO1xuXG5cdCAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG5cdCAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuXHQgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcblx0ICAgIH0pO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcblx0ICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cblx0ICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcblx0ICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuXHQgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG5cdCAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICB0aHJvdyBhcmc7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcblx0ICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG5cdCAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHdoaWxlICh0cnVlKSB7XG5cdCAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcblx0ICAgICAgICBpZiAoZGVsZWdhdGUpIHtcblx0ICAgICAgICAgIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIgfHwgbWV0aG9kID09PSBcInRocm93XCIgJiYgZGVsZWdhdGUuaXRlcmF0b3JbbWV0aG9kXSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgICAgIC8vIEEgcmV0dXJuIG9yIHRocm93ICh3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gdGhyb3dcblx0ICAgICAgICAgICAgLy8gbWV0aG9kKSBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG5cdCAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG5cdCAgICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcblx0ICAgICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuXHQgICAgICAgICAgICB2YXIgcmV0dXJuTWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl07XG5cdCAgICAgICAgICAgIGlmIChyZXR1cm5NZXRob2QpIHtcblx0ICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gocmV0dXJuTWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgYXJnKTtcblx0ICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJldHVybiBtZXRob2QgdGhyZXcgYW4gZXhjZXB0aW9uLCBsZXQgdGhhdFxuXHQgICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIHByZXZhaWwgb3ZlciB0aGUgb3JpZ2luYWwgcmV0dXJuIG9yIHRocm93LlxuXHQgICAgICAgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgICAgICAgYXJnID0gcmVjb3JkLmFyZztcblx0ICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXG5cdCAgICAgICAgICAgIGlmIChtZXRob2QgPT09IFwicmV0dXJuXCIpIHtcblx0ICAgICAgICAgICAgICAvLyBDb250aW51ZSB3aXRoIHRoZSBvdXRlciByZXR1cm4sIG5vdyB0aGF0IHRoZSBkZWxlZ2F0ZVxuXHQgICAgICAgICAgICAgIC8vIGl0ZXJhdG9yIGhhcyBiZWVuIHRlcm1pbmF0ZWQuXG5cdCAgICAgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGRlbGVnYXRlLml0ZXJhdG9yW21ldGhvZF0sIGRlbGVnYXRlLml0ZXJhdG9yLCBhcmcpO1xuXG5cdCAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuXHQgICAgICAgICAgICAvLyBMaWtlIHJldHVybmluZyBnZW5lcmF0b3IudGhyb3codW5jYXVnaHQpLCBidXQgd2l0aG91dCB0aGVcblx0ICAgICAgICAgICAgLy8gb3ZlcmhlYWQgb2YgYW4gZXh0cmEgZnVuY3Rpb24gY2FsbC5cblx0ICAgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgICBhcmcgPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgLy8gRGVsZWdhdGUgZ2VuZXJhdG9yIHJhbiBhbmQgaGFuZGxlZCBpdHMgb3duIGV4Y2VwdGlvbnMgc29cblx0ICAgICAgICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgbWV0aG9kIHdhcywgd2UgY29udGludWUgYXMgaWYgaXQgaXNcblx0ICAgICAgICAgIC8vIFwibmV4dFwiIHdpdGggYW4gdW5kZWZpbmVkIGFyZy5cblx0ICAgICAgICAgIG1ldGhvZCA9IFwibmV4dFwiO1xuXHQgICAgICAgICAgYXJnID0gdW5kZWZpbmVkO1xuXG5cdCAgICAgICAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cdCAgICAgICAgICBpZiAoaW5mby5kb25lKSB7XG5cdCAgICAgICAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXHQgICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXHQgICAgICAgICAgICByZXR1cm4gaW5mbztcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cdCAgICAgICAgfVxuXG5cdCAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcblx0ICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCkge1xuXHQgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSBhcmc7XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG5cdCAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG5cdCAgICAgICAgICAgIHRocm93IGFyZztcblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgaWYgKGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oYXJnKSkge1xuXHQgICAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuXHQgICAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuXHQgICAgICAgICAgICBtZXRob2QgPSBcIm5leHRcIjtcblx0ICAgICAgICAgICAgYXJnID0gdW5kZWZpbmVkO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSBcInJldHVyblwiKSB7XG5cdCAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBhcmcpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cblx0ICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cdCAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG5cdCAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG5cdCAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG5cdCAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZSA/IEdlblN0YXRlQ29tcGxldGVkIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuXHQgICAgICAgICAgdmFyIGluZm8gPSB7XG5cdCAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuXHQgICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcblx0ICAgICAgICAgIH07XG5cblx0ICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG5cdCAgICAgICAgICAgIGlmIChjb250ZXh0LmRlbGVnYXRlICYmIG1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcblx0ICAgICAgICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuXHQgICAgICAgICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cblx0ICAgICAgICAgICAgICBhcmcgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbmZvO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuXHQgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcblx0ICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcblx0ICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oYXJnKSBjYWxsIGFib3ZlLlxuXHQgICAgICAgICAgbWV0aG9kID0gXCJ0aHJvd1wiO1xuXHQgICAgICAgICAgYXJnID0gcmVjb3JkLmFyZztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcblx0ICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG5cdCAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuXHQgIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB0aGlzO1xuXHQgIH07XG5cblx0ICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuXHQgICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuXHQgICAgaWYgKDEgaW4gbG9jcykge1xuXHQgICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG5cdCAgICB9XG5cblx0ICAgIGlmICgyIGluIGxvY3MpIHtcblx0ICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG5cdCAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcblx0ICAgIH1cblxuXHQgICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcblx0ICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuXHQgICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuXHQgICAgZGVsZXRlIHJlY29yZC5hcmc7XG5cdCAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuXHQgIH1cblxuXHQgIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcblx0ICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuXHQgICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuXHQgICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuXHQgICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcblx0ICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcblx0ICAgIHRoaXMucmVzZXQodHJ1ZSk7XG5cdCAgfVxuXG5cdCAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24gKG9iamVjdCkge1xuXHQgICAgdmFyIGtleXMgPSBbXTtcblx0ICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcblx0ICAgICAga2V5cy5wdXNoKGtleSk7XG5cdCAgICB9XG5cdCAgICBrZXlzLnJldmVyc2UoKTtcblxuXHQgICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcblx0ICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG5cdCAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcblx0ICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG5cdCAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG5cdCAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcblx0ICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG5cdCAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcblx0ICAgICAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXG5cdCAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuXHQgICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuXHQgICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cblx0ICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblx0ICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICB9O1xuXHQgIH07XG5cblx0ICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcblx0ICAgIGlmIChpdGVyYWJsZSkge1xuXHQgICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG5cdCAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuXHQgICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuXHQgICAgICB9XG5cblx0ICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG5cdCAgICAgICAgdmFyIGkgPSAtMSxcblx0ICAgICAgICAgICAgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG5cdCAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG5cdCAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcblx0ICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG5cdCAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblxuXHQgICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cblx0ICAgICAgICAgIHJldHVybiBuZXh0O1xuXHQgICAgICAgIH07XG5cblx0ICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcblx0ICAgICAgfVxuXHQgICAgfVxuXG5cdCAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG5cdCAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG5cdCAgfVxuXHQgIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG5cdCAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcblx0ICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcblx0ICB9XG5cblx0ICBDb250ZXh0LnByb3RvdHlwZSA9IHtcblx0ICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG5cdCAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoc2tpcFRlbXBSZXNldCkge1xuXHQgICAgICB0aGlzLnByZXYgPSAwO1xuXHQgICAgICB0aGlzLm5leHQgPSAwO1xuXHQgICAgICB0aGlzLnNlbnQgPSB1bmRlZmluZWQ7XG5cdCAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuXHQgICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuXHQgICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuXHQgICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcblx0ICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcblx0ICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG5cdCAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcblx0ICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG5cdCAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cblx0ICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcblx0ICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcblx0ICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gdGhpcy5ydmFsO1xuXHQgICAgfSxcblxuXHQgICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIGRpc3BhdGNoRXhjZXB0aW9uKGV4Y2VwdGlvbikge1xuXHQgICAgICBpZiAodGhpcy5kb25lKSB7XG5cdCAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuXHQgICAgICB9XG5cblx0ICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuXHQgICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcblx0ICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcblx0ICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuXHQgICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblx0ICAgICAgICByZXR1cm4gISFjYXVnaHQ7XG5cdCAgICAgIH1cblxuXHQgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdCAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuXHQgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcblx0ICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG5cdCAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cblx0ICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG5cdCAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuXHQgICAgICAgIH1cblxuXHQgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG5cdCAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcblx0ICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuXHQgICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG5cdCAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcblx0ICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuXHQgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuXHQgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgYWJydXB0OiBmdW5jdGlvbiBhYnJ1cHQodHlwZSwgYXJnKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiYgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJiB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG5cdCAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAoZmluYWxseUVudHJ5ICYmICh0eXBlID09PSBcImJyZWFrXCIgfHwgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJiBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJiBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcblx0ICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG5cdCAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuXHQgICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG5cdCAgICAgIH1cblxuXHQgICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcblx0ICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuXHQgICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG5cdCAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG5cdCAgICAgIH1cblxuXHQgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcblx0ICAgIH0sXG5cblx0ICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZWNvcmQsIGFmdGVyTG9jKSB7XG5cdCAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcblx0ICAgICAgfVxuXG5cdCAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8IHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcblx0ICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuXHQgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG5cdCAgICAgICAgdGhpcy5ydmFsID0gcmVjb3JkLmFyZztcblx0ICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuXHQgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG5cdCAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cblx0ICAgIGZpbmlzaDogZnVuY3Rpb24gZmluaXNoKGZpbmFsbHlMb2MpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuXHQgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcblx0ICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuXHQgICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG5cdCAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcblx0ICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblxuXHQgICAgXCJjYXRjaFwiOiBmdW5jdGlvbiBfY2F0Y2godHJ5TG9jKSB7XG5cdCAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0ICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG5cdCAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG5cdCAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblx0ICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG5cdCAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuXHQgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIHJldHVybiB0aHJvd247XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG5cdCAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuXHQgICAgfSxcblxuXHQgICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24gZGVsZWdhdGVZaWVsZChpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuXHQgICAgICB0aGlzLmRlbGVnYXRlID0ge1xuXHQgICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuXHQgICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG5cdCAgICAgICAgbmV4dExvYzogbmV4dExvY1xuXHQgICAgICB9O1xuXG5cdCAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuXHQgICAgfVxuXHQgIH07XG5cdH0pKFxuXHQvLyBBbW9uZyB0aGUgdmFyaW91cyB0cmlja3MgZm9yIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsXG5cdC8vIG9iamVjdCwgdGhpcyBzZWVtcyB0byBiZSB0aGUgbW9zdCByZWxpYWJsZSB0ZWNobmlxdWUgdGhhdCBkb2VzIG5vdFxuXHQvLyB1c2UgaW5kaXJlY3QgZXZhbCAod2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kpLlxuXHR0eXBlb2YgZ2xvYmFsID09PSBcIm9iamVjdFwiID8gZ2xvYmFsIDogdHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiID8gc2VsZiA6IHVuZGVmaW5lZCk7XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KSkpXG5cbi8qKiovIH0sXG4vKiA1NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cblx0dmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXHR2YXIgcXVldWUgPSBbXTtcblx0dmFyIGRyYWluaW5nID0gZmFsc2U7XG5cdHZhciBjdXJyZW50UXVldWU7XG5cdHZhciBxdWV1ZUluZGV4ID0gLTE7XG5cblx0ZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuXHQgICAgZHJhaW5pbmcgPSBmYWxzZTtcblx0ICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgfVxuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIGRyYWluUXVldWUoKTtcblx0ICAgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG5cdCAgICBpZiAoZHJhaW5pbmcpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgdGltZW91dCA9IHNldFRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcblx0ICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuXHQgICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcblx0ICAgIHdoaWxlKGxlbikge1xuXHQgICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuXHQgICAgICAgIHF1ZXVlID0gW107XG5cdCAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuXHQgICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG5cdCAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcblx0ICAgIH1cblx0ICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG5cdCAgICBkcmFpbmluZyA9IGZhbHNlO1xuXHQgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXHR9XG5cblx0cHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcblx0ICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcblx0ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG5cdCAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuXHQgICAgICAgIHNldFRpbWVvdXQoZHJhaW5RdWV1ZSwgMCk7XG5cdCAgICB9XG5cdH07XG5cblx0Ly8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuXHRmdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcblx0ICAgIHRoaXMuZnVuID0gZnVuO1xuXHQgICAgdGhpcy5hcnJheSA9IGFycmF5O1xuXHR9XG5cdEl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xuXHR9O1xuXHRwcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xuXHRwcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xuXHRwcm9jZXNzLmVudiA9IHt9O1xuXHRwcm9jZXNzLmFyZ3YgPSBbXTtcblx0cHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5cdHByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuXHRmdW5jdGlvbiBub29wKCkge31cblxuXHRwcm9jZXNzLm9uID0gbm9vcDtcblx0cHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3Mub25jZSA9IG5vb3A7XG5cdHByb2Nlc3Mub2ZmID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcblx0cHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxuXHRwcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xuXHR9O1xuXG5cdHByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5cdHByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xuXHR9O1xuXHRwcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cbi8qKiovIH0sXG4vKiA1NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpLlN5bWJvbDtcblxuLyoqKi8gfSxcbi8qIDU5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdC8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cblx0dmFyICQgICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIGdsb2JhbCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIGhhcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIFNVUFBPUlRfREVTQyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNylcblx0ICAsICRkZWYgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsICRyZWRlZiAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMylcblx0ICAsICRmYWlscyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOClcblx0ICAsIHNoYXJlZCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSlcblx0ICAsIHNldFRhZyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSlcblx0ICAsIHVpZCAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMilcblx0ICAsIHdrcyAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMClcblx0ICAsIGtleU9mICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MClcblx0ICAsICRuYW1lcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSlcblx0ICAsIGVudW1LZXlzICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Milcblx0ICAsIGlzT2JqZWN0ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMilcblx0ICAsIGFuT2JqZWN0ICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHRvSU9iamVjdCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nilcblx0ICAsIGNyZWF0ZURlc2MgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNilcblx0ICAsIGdldERlc2MgICAgICAgID0gJC5nZXREZXNjXG5cdCAgLCBzZXREZXNjICAgICAgICA9ICQuc2V0RGVzY1xuXHQgICwgX2NyZWF0ZSAgICAgICAgPSAkLmNyZWF0ZVxuXHQgICwgZ2V0TmFtZXMgICAgICAgPSAkbmFtZXMuZ2V0XG5cdCAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcblx0ICAsIHNldHRlciAgICAgICAgID0gZmFsc2Vcblx0ICAsIEhJRERFTiAgICAgICAgID0gd2tzKCdfaGlkZGVuJylcblx0ICAsIGlzRW51bSAgICAgICAgID0gJC5pc0VudW1cblx0ICAsIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKVxuXHQgICwgQWxsU3ltYm9scyAgICAgPSBzaGFyZWQoJ3N5bWJvbHMnKVxuXHQgICwgdXNlTmF0aXZlICAgICAgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nXG5cdCAgLCBPYmplY3RQcm90byAgICA9IE9iamVjdC5wcm90b3R5cGU7XG5cblx0Ly8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG5cdHZhciBzZXRTeW1ib2xEZXNjID0gU1VQUE9SVF9ERVNDICYmICRmYWlscyhmdW5jdGlvbigpe1xuXHQgIHJldHVybiBfY3JlYXRlKHNldERlc2Moe30sICdhJywge1xuXHQgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gc2V0RGVzYyh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7IH1cblx0ICB9KSkuYSAhPSA3O1xuXHR9KSA/IGZ1bmN0aW9uKGl0LCBrZXksIEQpe1xuXHQgIHZhciBwcm90b0Rlc2MgPSBnZXREZXNjKE9iamVjdFByb3RvLCBrZXkpO1xuXHQgIGlmKHByb3RvRGVzYylkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcblx0ICBzZXREZXNjKGl0LCBrZXksIEQpO1xuXHQgIGlmKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pc2V0RGVzYyhPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xuXHR9IDogc2V0RGVzYztcblxuXHR2YXIgd3JhcCA9IGZ1bmN0aW9uKHRhZyl7XG5cdCAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbC5wcm90b3R5cGUpO1xuXHQgIHN5bS5fayA9IHRhZztcblx0ICBTVVBQT1JUX0RFU0MgJiYgc2V0dGVyICYmIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywge1xuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgc2V0OiBmdW5jdGlvbih2YWx1ZSl7XG5cdCAgICAgIGlmKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcblx0ICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcblx0ICAgIH1cblx0ICB9KTtcblx0ICByZXR1cm4gc3ltO1xuXHR9O1xuXG5cdHZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKXtcblx0ICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpKXtcblx0ICAgIGlmKCFELmVudW1lcmFibGUpe1xuXHQgICAgICBpZighaGFzKGl0LCBISURERU4pKXNldERlc2MoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuXHQgICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSlpdFtISURERU5dW2tleV0gPSBmYWxzZTtcblx0ICAgICAgRCA9IF9jcmVhdGUoRCwge2VudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpfSk7XG5cdCAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuXHQgIH0gcmV0dXJuIHNldERlc2MoaXQsIGtleSwgRCk7XG5cdH07XG5cdHZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApe1xuXHQgIGFuT2JqZWN0KGl0KTtcblx0ICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG5cdCAgICAsIGkgICAgPSAwXG5cdCAgICAsIGwgPSBrZXlzLmxlbmd0aFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobCA+IGkpJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG5cdCAgcmV0dXJuIGl0O1xuXHR9O1xuXHR2YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCl7XG5cdCAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xuXHR9O1xuXHR2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KXtcblx0ICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSk7XG5cdCAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XVxuXHQgICAgPyBFIDogdHJ1ZTtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSl7XG5cdCAgdmFyIEQgPSBnZXREZXNjKGl0ID0gdG9JT2JqZWN0KGl0KSwga2V5KTtcblx0ICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpRC5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0ICByZXR1cm4gRDtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCl7XG5cdCAgdmFyIG5hbWVzICA9IGdldE5hbWVzKHRvSU9iamVjdChpdCkpXG5cdCAgICAsIHJlc3VsdCA9IFtdXG5cdCAgICAsIGkgICAgICA9IDBcblx0ICAgICwga2V5O1xuXHQgIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpaWYoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOKXJlc3VsdC5wdXNoKGtleSk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTtcblx0dmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpe1xuXHQgIHZhciBuYW1lcyAgPSBnZXROYW1lcyh0b0lPYmplY3QoaXQpKVxuXHQgICAgLCByZXN1bHQgPSBbXVxuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIGtleTtcblx0ICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKWlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuXHQgIHJldHVybiByZXN1bHQ7XG5cdH07XG5cblx0Ly8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5cdGlmKCF1c2VOYXRpdmUpe1xuXHQgICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKXtcblx0ICAgIGlmKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKXRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG5cdCAgICByZXR1cm4gd3JhcCh1aWQoYXJndW1lbnRzWzBdKSk7XG5cdCAgfTtcblx0ICAkcmVkZWYoJFN5bWJvbC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG5cdCAgICByZXR1cm4gdGhpcy5faztcblx0ICB9KTtcblxuXHQgICQuY3JlYXRlICAgICA9ICRjcmVhdGU7XG5cdCAgJC5pc0VudW0gICAgID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXHQgICQuZ2V0RGVzYyAgICA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cdCAgJC5zZXREZXNjICAgID0gJGRlZmluZVByb3BlcnR5O1xuXHQgICQuc2V0RGVzY3MgICA9ICRkZWZpbmVQcm9wZXJ0aWVzO1xuXHQgICQuZ2V0TmFtZXMgICA9ICRuYW1lcy5nZXQgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcblx0ICAkLmdldFN5bWJvbHMgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG5cdCAgaWYoU1VQUE9SVF9ERVNDICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDkpKXtcblx0ICAgICRyZWRlZihPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcblx0ICB9XG5cdH1cblxuXHQvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuXHRpZighdXNlTmF0aXZlIHx8ICRmYWlscyhmdW5jdGlvbigpe1xuXHQgIHJldHVybiBKU09OLnN0cmluZ2lmeShbJFN5bWJvbCgpXSkgIT0gJ1tudWxsXSc7XG5cdH0pKSRyZWRlZigkU3ltYm9sLnByb3RvdHlwZSwgJ3RvSlNPTicsIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgIGlmKHVzZU5hdGl2ZSAmJiBpc09iamVjdCh0aGlzKSlyZXR1cm4gdGhpcztcblx0fSk7XG5cblx0dmFyIHN5bWJvbFN0YXRpY3MgPSB7XG5cdCAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG5cdCAgJ2Zvcic6IGZ1bmN0aW9uKGtleSl7XG5cdCAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG5cdCAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuXHQgICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG5cdCAgfSxcblx0ICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcblx0ICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihrZXkpe1xuXHQgICAgcmV0dXJuIGtleU9mKFN5bWJvbFJlZ2lzdHJ5LCBrZXkpO1xuXHQgIH0sXG5cdCAgdXNlU2V0dGVyOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSB0cnVlOyB9LFxuXHQgIHVzZVNpbXBsZTogZnVuY3Rpb24oKXsgc2V0dGVyID0gZmFsc2U7IH1cblx0fTtcblx0Ly8gMTkuNC4yLjIgU3ltYm9sLmhhc0luc3RhbmNlXG5cdC8vIDE5LjQuMi4zIFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGVcblx0Ly8gMTkuNC4yLjQgU3ltYm9sLml0ZXJhdG9yXG5cdC8vIDE5LjQuMi42IFN5bWJvbC5tYXRjaFxuXHQvLyAxOS40LjIuOCBTeW1ib2wucmVwbGFjZVxuXHQvLyAxOS40LjIuOSBTeW1ib2wuc2VhcmNoXG5cdC8vIDE5LjQuMi4xMCBTeW1ib2wuc3BlY2llc1xuXHQvLyAxOS40LjIuMTEgU3ltYm9sLnNwbGl0XG5cdC8vIDE5LjQuMi4xMiBTeW1ib2wudG9QcmltaXRpdmVcblx0Ly8gMTkuNC4yLjEzIFN5bWJvbC50b1N0cmluZ1RhZ1xuXHQvLyAxOS40LjIuMTQgU3ltYm9sLnVuc2NvcGFibGVzXG5cdCQuZWFjaC5jYWxsKChcblx0ICAgICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsJyArXG5cdCAgICAnc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcblx0ICApLnNwbGl0KCcsJyksIGZ1bmN0aW9uKGl0KXtcblx0ICAgIHZhciBzeW0gPSB3a3MoaXQpO1xuXHQgICAgc3ltYm9sU3RhdGljc1tpdF0gPSB1c2VOYXRpdmUgPyBzeW0gOiB3cmFwKHN5bSk7XG5cdCAgfVxuXHQpO1xuXG5cdHNldHRlciA9IHRydWU7XG5cblx0JGRlZigkZGVmLkcgKyAkZGVmLlcsIHtTeW1ib2w6ICRTeW1ib2x9KTtcblxuXHQkZGVmKCRkZWYuUywgJ1N5bWJvbCcsIHN5bWJvbFN0YXRpY3MpO1xuXG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogIXVzZU5hdGl2ZSwgJ09iamVjdCcsIHtcblx0ICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG5cdCAgY3JlYXRlOiAkY3JlYXRlLFxuXHQgIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuXHQgIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG5cdCAgLy8gMTkuMS4yLjMgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcblx0ICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcblx0ICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG5cdCAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuXHQgIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG5cdCAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG5cdCAgLy8gMTkuMS4yLjggT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhPKVxuXHQgIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xuXHR9KTtcblxuXHQvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5cdHNldFRhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG5cdC8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cblx0c2V0VGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG5cdC8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5cdHNldFRhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcblxuLyoqKi8gfSxcbi8qIDYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgZWwpe1xuXHQgIHZhciBPICAgICAgPSB0b0lPYmplY3Qob2JqZWN0KVxuXHQgICAgLCBrZXlzICAgPSAkLmdldEtleXMoTylcblx0ICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcblx0ICAgICwgaW5kZXggID0gMFxuXHQgICAgLCBrZXk7XG5cdCAgd2hpbGUobGVuZ3RoID4gaW5kZXgpaWYoT1trZXkgPSBrZXlzW2luZGV4KytdXSA9PT0gZWwpcmV0dXJuIGtleTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG5cdHZhciB0b1N0cmluZyAgPSB7fS50b1N0cmluZ1xuXHQgICwgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nilcblx0ICAsIGdldE5hbWVzICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLmdldE5hbWVzO1xuXG5cdHZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcblx0ICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxuXHR2YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbihpdCl7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBnZXROYW1lcyhpdCk7XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuXHQgIH1cblx0fTtcblxuXHRtb2R1bGUuZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcblx0ICBpZih3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJylyZXR1cm4gZ2V0V2luZG93TmFtZXMoaXQpO1xuXHQgIHJldHVybiBnZXROYW1lcyh0b0lPYmplY3QoaXQpKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDYyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBhbGwgZW51bWVyYWJsZSBvYmplY3Qga2V5cywgaW5jbHVkZXMgc3ltYm9sc1xuXHR2YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcblx0ICB2YXIga2V5cyAgICAgICA9ICQuZ2V0S2V5cyhpdClcblx0ICAgICwgZ2V0U3ltYm9scyA9ICQuZ2V0U3ltYm9scztcblx0ICBpZihnZXRTeW1ib2xzKXtcblx0ICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdClcblx0ICAgICAgLCBpc0VudW0gID0gJC5pc0VudW1cblx0ICAgICAgLCBpICAgICAgID0gMFxuXHQgICAgICAsIGtleTtcblx0ICAgIHdoaWxlKHN5bWJvbHMubGVuZ3RoID4gaSlpZihpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSlrZXlzLnB1c2goa2V5KTtcblx0ICB9XG5cdCAgcmV0dXJuIGtleXM7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA2MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDY0KSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG4vKioqLyB9LFxuLyogNjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlKFAsIEQpe1xuXHQgIHJldHVybiAkLmNyZWF0ZShQLCBEKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDY1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oNjYpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA2NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5Qcm9taXNlO1xuXG4vKioqLyB9LFxuLyogNjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdFxuXG4vKioqLyB9LFxuLyogNjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KVxuXHQgICwgTElCUkFSWSAgICA9IF9fd2VicGFja19yZXF1aXJlX18oOSlcblx0ICAsIGdsb2JhbCAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxuXHQgICwgY3R4ICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpXG5cdCAgLCBjbGFzc29mICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNilcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaXNPYmplY3QgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBhbk9iamVjdCAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIGFGdW5jdGlvbiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KVxuXHQgICwgc3RyaWN0TmV3ICA9IF9fd2VicGFja19yZXF1aXJlX18oNjkpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHNldFByb3RvICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcxKS5zZXRcblx0ICAsIHNhbWUgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKVxuXHQgICwgc3BlY2llcyAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpXG5cdCAgLCBTUEVDSUVTICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoJ3NwZWNpZXMnKVxuXHQgICwgUkVDT1JEICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpKCdyZWNvcmQnKVxuXHQgICwgYXNhcCAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzQpXG5cdCAgLCBQUk9NSVNFICAgID0gJ1Byb21pc2UnXG5cdCAgLCBwcm9jZXNzICAgID0gZ2xvYmFsLnByb2Nlc3Ncblx0ICAsIGlzTm9kZSAgICAgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJ1xuXHQgICwgUCAgICAgICAgICA9IGdsb2JhbFtQUk9NSVNFXVxuXHQgICwgV3JhcHBlcjtcblxuXHR2YXIgdGVzdFJlc29sdmUgPSBmdW5jdGlvbihzdWIpe1xuXHQgIHZhciB0ZXN0ID0gbmV3IFAoZnVuY3Rpb24oKXt9KTtcblx0ICBpZihzdWIpdGVzdC5jb25zdHJ1Y3RvciA9IE9iamVjdDtcblx0ICByZXR1cm4gUC5yZXNvbHZlKHRlc3QpID09PSB0ZXN0O1xuXHR9O1xuXG5cdHZhciB1c2VOYXRpdmUgPSBmdW5jdGlvbigpe1xuXHQgIHZhciB3b3JrcyA9IGZhbHNlO1xuXHQgIGZ1bmN0aW9uIFAyKHgpe1xuXHQgICAgdmFyIHNlbGYgPSBuZXcgUCh4KTtcblx0ICAgIHNldFByb3RvKHNlbGYsIFAyLnByb3RvdHlwZSk7XG5cdCAgICByZXR1cm4gc2VsZjtcblx0ICB9XG5cdCAgdHJ5IHtcblx0ICAgIHdvcmtzID0gUCAmJiBQLnJlc29sdmUgJiYgdGVzdFJlc29sdmUoKTtcblx0ICAgIHNldFByb3RvKFAyLCBQKTtcblx0ICAgIFAyLnByb3RvdHlwZSA9ICQuY3JlYXRlKFAucHJvdG90eXBlLCB7Y29uc3RydWN0b3I6IHt2YWx1ZTogUDJ9fSk7XG5cdCAgICAvLyBhY3R1YWwgRmlyZWZveCBoYXMgYnJva2VuIHN1YmNsYXNzIHN1cHBvcnQsIHRlc3QgdGhhdFxuXHQgICAgaWYoIShQMi5yZXNvbHZlKDUpLnRoZW4oZnVuY3Rpb24oKXt9KSBpbnN0YW5jZW9mIFAyKSl7XG5cdCAgICAgIHdvcmtzID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgICAvLyBhY3R1YWwgVjggYnVnLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDE2MlxuXHQgICAgaWYod29ya3MgJiYgX193ZWJwYWNrX3JlcXVpcmVfXygxNykpe1xuXHQgICAgICB2YXIgdGhlbmFibGVUaGVuR290dGVuID0gZmFsc2U7XG5cdCAgICAgIFAucmVzb2x2ZSgkLnNldERlc2Moe30sICd0aGVuJywge1xuXHQgICAgICAgIGdldDogZnVuY3Rpb24oKXsgdGhlbmFibGVUaGVuR290dGVuID0gdHJ1ZTsgfVxuXHQgICAgICB9KSk7XG5cdCAgICAgIHdvcmtzID0gdGhlbmFibGVUaGVuR290dGVuO1xuXHQgICAgfVxuXHQgIH0gY2F0Y2goZSl7IHdvcmtzID0gZmFsc2U7IH1cblx0ICByZXR1cm4gd29ya3M7XG5cdH0oKTtcblxuXHQvLyBoZWxwZXJzXG5cdHZhciBpc1Byb21pc2UgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAodXNlTmF0aXZlID8gY2xhc3NvZihpdCkgPT0gJ1Byb21pc2UnIDogUkVDT1JEIGluIGl0KTtcblx0fTtcblx0dmFyIHNhbWVDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKGEsIGIpe1xuXHQgIC8vIGxpYnJhcnkgd3JhcHBlciBzcGVjaWFsIGNhc2Vcblx0ICBpZihMSUJSQVJZICYmIGEgPT09IFAgJiYgYiA9PT0gV3JhcHBlcilyZXR1cm4gdHJ1ZTtcblx0ICByZXR1cm4gc2FtZShhLCBiKTtcblx0fTtcblx0dmFyIGdldENvbnN0cnVjdG9yID0gZnVuY3Rpb24oQyl7XG5cdCAgdmFyIFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXTtcblx0ICByZXR1cm4gUyAhPSB1bmRlZmluZWQgPyBTIDogQztcblx0fTtcblx0dmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbihpdCl7XG5cdCAgdmFyIHRoZW47XG5cdCAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xuXHR9O1xuXHR2YXIgbm90aWZ5ID0gZnVuY3Rpb24ocmVjb3JkLCBpc1JlamVjdCl7XG5cdCAgaWYocmVjb3JkLm4pcmV0dXJuO1xuXHQgIHJlY29yZC5uID0gdHJ1ZTtcblx0ICB2YXIgY2hhaW4gPSByZWNvcmQuYztcblx0ICBhc2FwKGZ1bmN0aW9uKCl7XG5cdCAgICB2YXIgdmFsdWUgPSByZWNvcmQudlxuXHQgICAgICAsIG9rICAgID0gcmVjb3JkLnMgPT0gMVxuXHQgICAgICAsIGkgICAgID0gMDtcblx0ICAgIHZhciBydW4gPSBmdW5jdGlvbihyZWFjdCl7XG5cdCAgICAgIHZhciBjYiA9IG9rID8gcmVhY3Qub2sgOiByZWFjdC5mYWlsXG5cdCAgICAgICAgLCByZXQsIHRoZW47XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYoY2Ipe1xuXHQgICAgICAgICAgaWYoIW9rKXJlY29yZC5oID0gdHJ1ZTtcblx0ICAgICAgICAgIHJldCA9IGNiID09PSB0cnVlID8gdmFsdWUgOiBjYih2YWx1ZSk7XG5cdCAgICAgICAgICBpZihyZXQgPT09IHJlYWN0LlApe1xuXHQgICAgICAgICAgICByZWFjdC5yZWooVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuXHQgICAgICAgICAgfSBlbHNlIGlmKHRoZW4gPSBpc1RoZW5hYmxlKHJldCkpe1xuXHQgICAgICAgICAgICB0aGVuLmNhbGwocmV0LCByZWFjdC5yZXMsIHJlYWN0LnJlaik7XG5cdCAgICAgICAgICB9IGVsc2UgcmVhY3QucmVzKHJldCk7XG5cdCAgICAgICAgfSBlbHNlIHJlYWN0LnJlaih2YWx1ZSk7XG5cdCAgICAgIH0gY2F0Y2goZXJyKXtcblx0ICAgICAgICByZWFjdC5yZWooZXJyKTtcblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICAgIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuXHQgICAgY2hhaW4ubGVuZ3RoID0gMDtcblx0ICAgIHJlY29yZC5uID0gZmFsc2U7XG5cdCAgICBpZihpc1JlamVjdClzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciBwcm9taXNlID0gcmVjb3JkLnBcblx0ICAgICAgICAsIGhhbmRsZXIsIGNvbnNvbGU7XG5cdCAgICAgIGlmKGlzVW5oYW5kbGVkKHByb21pc2UpKXtcblx0ICAgICAgICBpZihpc05vZGUpe1xuXHQgICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pe1xuXHQgICAgICAgICAgaGFuZGxlcih7cHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZX0pO1xuXHQgICAgICAgIH0gZWxzZSBpZigoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKXtcblx0ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gcmVjb3JkLmEgPSB1bmRlZmluZWQ7XG5cdCAgICB9LCAxKTtcblx0ICB9KTtcblx0fTtcblx0dmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG5cdCAgdmFyIHJlY29yZCA9IHByb21pc2VbUkVDT1JEXVxuXHQgICAgLCBjaGFpbiAgPSByZWNvcmQuYSB8fCByZWNvcmQuY1xuXHQgICAgLCBpICAgICAgPSAwXG5cdCAgICAsIHJlYWN0O1xuXHQgIGlmKHJlY29yZC5oKXJldHVybiBmYWxzZTtcblx0ICB3aGlsZShjaGFpbi5sZW5ndGggPiBpKXtcblx0ICAgIHJlYWN0ID0gY2hhaW5baSsrXTtcblx0ICAgIGlmKHJlYWN0LmZhaWwgfHwgIWlzVW5oYW5kbGVkKHJlYWN0LlApKXJldHVybiBmYWxzZTtcblx0ICB9IHJldHVybiB0cnVlO1xuXHR9O1xuXHR2YXIgJHJlamVjdCA9IGZ1bmN0aW9uKHZhbHVlKXtcblx0ICB2YXIgcmVjb3JkID0gdGhpcztcblx0ICBpZihyZWNvcmQuZClyZXR1cm47XG5cdCAgcmVjb3JkLmQgPSB0cnVlO1xuXHQgIHJlY29yZCA9IHJlY29yZC5yIHx8IHJlY29yZDsgLy8gdW53cmFwXG5cdCAgcmVjb3JkLnYgPSB2YWx1ZTtcblx0ICByZWNvcmQucyA9IDI7XG5cdCAgcmVjb3JkLmEgPSByZWNvcmQuYy5zbGljZSgpO1xuXHQgIG5vdGlmeShyZWNvcmQsIHRydWUpO1xuXHR9O1xuXHR2YXIgJHJlc29sdmUgPSBmdW5jdGlvbih2YWx1ZSl7XG5cdCAgdmFyIHJlY29yZCA9IHRoaXNcblx0ICAgICwgdGhlbjtcblx0ICBpZihyZWNvcmQuZClyZXR1cm47XG5cdCAgcmVjb3JkLmQgPSB0cnVlO1xuXHQgIHJlY29yZCA9IHJlY29yZC5yIHx8IHJlY29yZDsgLy8gdW53cmFwXG5cdCAgdHJ5IHtcblx0ICAgIGlmKHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKSl7XG5cdCAgICAgIGFzYXAoZnVuY3Rpb24oKXtcblx0ICAgICAgICB2YXIgd3JhcHBlciA9IHtyOiByZWNvcmQsIGQ6IGZhbHNlfTsgLy8gd3JhcFxuXHQgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG5cdCAgICAgICAgfSBjYXRjaChlKXtcblx0ICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVjb3JkLnYgPSB2YWx1ZTtcblx0ICAgICAgcmVjb3JkLnMgPSAxO1xuXHQgICAgICBub3RpZnkocmVjb3JkLCBmYWxzZSk7XG5cdCAgICB9XG5cdCAgfSBjYXRjaChlKXtcblx0ICAgICRyZWplY3QuY2FsbCh7cjogcmVjb3JkLCBkOiBmYWxzZX0sIGUpOyAvLyB3cmFwXG5cdCAgfVxuXHR9O1xuXG5cdC8vIGNvbnN0cnVjdG9yIHBvbHlmaWxsXG5cdGlmKCF1c2VOYXRpdmUpe1xuXHQgIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG5cdCAgUCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3Ipe1xuXHQgICAgYUZ1bmN0aW9uKGV4ZWN1dG9yKTtcblx0ICAgIHZhciByZWNvcmQgPSB7XG5cdCAgICAgIHA6IHN0cmljdE5ldyh0aGlzLCBQLCBQUk9NSVNFKSwgICAgICAgICAvLyA8LSBwcm9taXNlXG5cdCAgICAgIGM6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBhd2FpdGluZyByZWFjdGlvbnNcblx0ICAgICAgYTogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGNoZWNrZWQgaW4gaXNVbmhhbmRsZWQgcmVhY3Rpb25zXG5cdCAgICAgIHM6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBzdGF0ZVxuXHQgICAgICBkOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gZG9uZVxuXHQgICAgICB2OiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcblx0ICAgICAgaDogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGhhbmRsZWQgcmVqZWN0aW9uXG5cdCAgICAgIG46IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBub3RpZnlcblx0ICAgIH07XG5cdCAgICB0aGlzW1JFQ09SRF0gPSByZWNvcmQ7XG5cdCAgICB0cnkge1xuXHQgICAgICBleGVjdXRvcihjdHgoJHJlc29sdmUsIHJlY29yZCwgMSksIGN0eCgkcmVqZWN0LCByZWNvcmQsIDEpKTtcblx0ICAgIH0gY2F0Y2goZXJyKXtcblx0ICAgICAgJHJlamVjdC5jYWxsKHJlY29yZCwgZXJyKTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIF9fd2VicGFja19yZXF1aXJlX18oNzkpKFAucHJvdG90eXBlLCB7XG5cdCAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuXHQgICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCl7XG5cdCAgICAgIHZhciBTID0gYW5PYmplY3QoYW5PYmplY3QodGhpcykuY29uc3RydWN0b3IpW1NQRUNJRVNdO1xuXHQgICAgICB2YXIgcmVhY3QgPSB7XG5cdCAgICAgICAgb2s6ICAgdHlwZW9mIG9uRnVsZmlsbGVkID09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IHRydWUsXG5cdCAgICAgICAgZmFpbDogdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAgPyBvblJlamVjdGVkICA6IGZhbHNlXG5cdCAgICAgIH07XG5cdCAgICAgIHZhciBwcm9taXNlID0gcmVhY3QuUCA9IG5ldyAoUyAhPSB1bmRlZmluZWQgPyBTIDogUCkoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICAgIHJlYWN0LnJlcyA9IHJlcztcblx0ICAgICAgICByZWFjdC5yZWogPSByZWo7XG5cdCAgICAgIH0pO1xuXHQgICAgICBhRnVuY3Rpb24ocmVhY3QucmVzKTtcblx0ICAgICAgYUZ1bmN0aW9uKHJlYWN0LnJlaik7XG5cdCAgICAgIHZhciByZWNvcmQgPSB0aGlzW1JFQ09SRF07XG5cdCAgICAgIHJlY29yZC5jLnB1c2gocmVhY3QpO1xuXHQgICAgICBpZihyZWNvcmQuYSlyZWNvcmQuYS5wdXNoKHJlYWN0KTtcblx0ICAgICAgaWYocmVjb3JkLnMpbm90aWZ5KHJlY29yZCwgZmFsc2UpO1xuXHQgICAgICByZXR1cm4gcHJvbWlzZTtcblx0ICAgIH0sXG5cdCAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuXHQgICAgJ2NhdGNoJzogZnVuY3Rpb24ob25SZWplY3RlZCl7XG5cdCAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcblx0ICAgIH1cblx0ICB9KTtcblx0fVxuXG5cdC8vIGV4cG9ydFxuXHQkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiAqICF1c2VOYXRpdmUsIHtQcm9taXNlOiBQfSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjUpKFAsIFBST01JU0UpO1xuXHRzcGVjaWVzKFApO1xuXHRzcGVjaWVzKFdyYXBwZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKVtQUk9NSVNFXSk7XG5cblx0Ly8gc3RhdGljc1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICF1c2VOYXRpdmUsIFBST01JU0UsIHtcblx0ICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuXHQgIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpe1xuXHQgICAgcmV0dXJuIG5ldyB0aGlzKGZ1bmN0aW9uKHJlcywgcmVqKXsgcmVqKHIpOyB9KTtcblx0ICB9XG5cdH0pO1xuXHQkZGVmKCRkZWYuUyArICRkZWYuRiAqICghdXNlTmF0aXZlIHx8IHRlc3RSZXNvbHZlKHRydWUpKSwgUFJPTUlTRSwge1xuXHQgIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuXHQgIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCl7XG5cdCAgICByZXR1cm4gaXNQcm9taXNlKHgpICYmIHNhbWVDb25zdHJ1Y3Rvcih4LmNvbnN0cnVjdG9yLCB0aGlzKVxuXHQgICAgICA/IHggOiBuZXcgdGhpcyhmdW5jdGlvbihyZXMpeyByZXMoeCk7IH0pO1xuXHQgIH1cblx0fSk7XG5cdCRkZWYoJGRlZi5TICsgJGRlZi5GICogISh1c2VOYXRpdmUgJiYgX193ZWJwYWNrX3JlcXVpcmVfXygzOCkoZnVuY3Rpb24oaXRlcil7XG5cdCAgUC5hbGwoaXRlcilbJ2NhdGNoJ10oZnVuY3Rpb24oKXt9KTtcblx0fSkpLCBQUk9NSVNFLCB7XG5cdCAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG5cdCAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpe1xuXHQgICAgdmFyIEMgICAgICA9IGdldENvbnN0cnVjdG9yKHRoaXMpXG5cdCAgICAgICwgdmFsdWVzID0gW107XG5cdCAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ocmVzLCByZWope1xuXHQgICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIHZhbHVlcy5wdXNoLCB2YWx1ZXMpO1xuXHQgICAgICB2YXIgcmVtYWluaW5nID0gdmFsdWVzLmxlbmd0aFxuXHQgICAgICAgICwgcmVzdWx0cyAgID0gQXJyYXkocmVtYWluaW5nKTtcblx0ICAgICAgaWYocmVtYWluaW5nKSQuZWFjaC5jYWxsKHZhbHVlcywgZnVuY3Rpb24ocHJvbWlzZSwgaW5kZXgpe1xuXHQgICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGZ1bmN0aW9uKHZhbHVlKXtcblx0ICAgICAgICAgIHJlc3VsdHNbaW5kZXhdID0gdmFsdWU7XG5cdCAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXMocmVzdWx0cyk7XG5cdCAgICAgICAgfSwgcmVqKTtcblx0ICAgICAgfSk7XG5cdCAgICAgIGVsc2UgcmVzKHJlc3VsdHMpO1xuXHQgICAgfSk7XG5cdCAgfSxcblx0ICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG5cdCAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSl7XG5cdCAgICB2YXIgQyA9IGdldENvbnN0cnVjdG9yKHRoaXMpO1xuXHQgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uKHJlcywgcmVqKXtcblx0ICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbihwcm9taXNlKXtcblx0ICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihyZXMsIHJlaik7XG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgfVxuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSl7XG5cdCAgaWYoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSl0aHJvdyBUeXBlRXJyb3IobmFtZSArIFwiOiB1c2UgdGhlICduZXcnIG9wZXJhdG9yIVwiKTtcblx0ICByZXR1cm4gaXQ7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA3MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIGN0eCAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIGNhbGwgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMClcblx0ICAsIGlzQXJyYXlJdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMylcblx0ICAsIGFuT2JqZWN0ICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSlcblx0ICAsIHRvTGVuZ3RoICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNClcblx0ICAsIGdldEl0ZXJGbiAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0KXtcblx0ICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKGl0ZXJhYmxlKVxuXHQgICAgLCBmICAgICAgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSlcblx0ICAgICwgaW5kZXggID0gMFxuXHQgICAgLCBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yO1xuXHQgIGlmKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcblx0ICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3Jcblx0ICBpZihpc0FycmF5SXRlcihpdGVyRm4pKWZvcihsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG5cdCAgICBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG5cdCAgfSBlbHNlIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyApe1xuXHQgICAgY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG5cdCAgfVxuXHR9O1xuXG4vKioqLyB9LFxuLyogNzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuXHQvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXHR2YXIgZ2V0RGVzYyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5nZXREZXNjXG5cdCAgLCBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHR2YXIgY2hlY2sgPSBmdW5jdGlvbihPLCBwcm90byl7XG5cdCAgYW5PYmplY3QoTyk7XG5cdCAgaWYoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCl0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG5cdH07XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblx0ICAgIGZ1bmN0aW9uKHRlc3QsIGJ1Z2d5LCBzZXQpe1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIHNldCA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpKEZ1bmN0aW9uLmNhbGwsIGdldERlc2MoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldCwgMik7XG5cdCAgICAgICAgc2V0KHRlc3QsIFtdKTtcblx0ICAgICAgICBidWdneSA9ICEodGVzdCBpbnN0YW5jZW9mIEFycmF5KTtcblx0ICAgICAgfSBjYXRjaChlKXsgYnVnZ3kgPSB0cnVlOyB9XG5cdCAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90byl7XG5cdCAgICAgICAgY2hlY2soTywgcHJvdG8pO1xuXHQgICAgICAgIGlmKGJ1Z2d5KU8uX19wcm90b19fID0gcHJvdG87XG5cdCAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuXHQgICAgICAgIHJldHVybiBPO1xuXHQgICAgICB9O1xuXHQgICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcblx0ICBjaGVjazogY2hlY2tcblx0fTtcblxuLyoqKi8gfSxcbi8qIDcyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KXtcblx0ICByZXR1cm4geCA9PT0geSA/IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5IDogeCAhPSB4ICYmIHkgIT0geTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDczICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsIFNQRUNJRVMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKSgnc3BlY2llcycpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEMpe1xuXHQgIGlmKF9fd2VicGFja19yZXF1aXJlX18oMTcpICYmICEoU1BFQ0lFUyBpbiBDKSkkLnNldERlc2MoQywgU1BFQ0lFUywge1xuXHQgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuXHQgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfVxuXHQgIH0pO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBnbG9iYWwgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVxyXG5cdCAgLCBtYWNyb3Rhc2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc1KS5zZXRcclxuXHQgICwgT2JzZXJ2ZXIgID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXJcclxuXHQgICwgcHJvY2VzcyAgID0gZ2xvYmFsLnByb2Nlc3NcclxuXHQgICwgaXNOb2RlICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXHJcblx0ICAsIGhlYWQsIGxhc3QsIG5vdGlmeTtcclxuXHJcblx0dmFyIGZsdXNoID0gZnVuY3Rpb24oKXtcclxuXHQgIHZhciBwYXJlbnQsIGRvbWFpbjtcclxuXHQgIGlmKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKXtcclxuXHQgICAgcHJvY2Vzcy5kb21haW4gPSBudWxsO1xyXG5cdCAgICBwYXJlbnQuZXhpdCgpO1xyXG5cdCAgfVxyXG5cdCAgd2hpbGUoaGVhZCl7XHJcblx0ICAgIGRvbWFpbiA9IGhlYWQuZG9tYWluO1xyXG5cdCAgICBpZihkb21haW4pZG9tYWluLmVudGVyKCk7XHJcblx0ICAgIGhlYWQuZm4uY2FsbCgpOyAvLyA8LSBjdXJyZW50bHkgd2UgdXNlIGl0IG9ubHkgZm9yIFByb21pc2UgLSB0cnkgLyBjYXRjaCBub3QgcmVxdWlyZWRcclxuXHQgICAgaWYoZG9tYWluKWRvbWFpbi5leGl0KCk7XHJcblx0ICAgIGhlYWQgPSBoZWFkLm5leHQ7XHJcblx0ICB9IGxhc3QgPSB1bmRlZmluZWQ7XHJcblx0ICBpZihwYXJlbnQpcGFyZW50LmVudGVyKCk7XHJcblx0fVxyXG5cclxuXHQvLyBOb2RlLmpzXHJcblx0aWYoaXNOb2RlKXtcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xyXG5cdCAgfTtcclxuXHQvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJcclxuXHR9IGVsc2UgaWYoT2JzZXJ2ZXIpe1xyXG5cdCAgdmFyIHRvZ2dsZSA9IDFcclxuXHQgICAgLCBub2RlICAgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XHJcblx0ICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9IC10b2dnbGU7XHJcblx0ICB9O1xyXG5cdC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XHJcblx0Ly8gLSBzZXRJbW1lZGlhdGVcclxuXHQvLyAtIE1lc3NhZ2VDaGFubmVsXHJcblx0Ly8gLSB3aW5kb3cucG9zdE1lc3NhZ1xyXG5cdC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXHJcblx0Ly8gLSBzZXRUaW1lb3V0XHJcblx0fSBlbHNlIHtcclxuXHQgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XHJcblx0ICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcclxuXHQgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XHJcblx0ICB9O1xyXG5cdH1cclxuXHJcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhc2FwKGZuKXtcclxuXHQgIHZhciB0YXNrID0ge2ZuOiBmbiwgbmV4dDogdW5kZWZpbmVkLCBkb21haW46IGlzTm9kZSAmJiBwcm9jZXNzLmRvbWFpbn07XHJcblx0ICBpZihsYXN0KWxhc3QubmV4dCA9IHRhc2s7XHJcblx0ICBpZighaGVhZCl7XHJcblx0ICAgIGhlYWQgPSB0YXNrO1xyXG5cdCAgICBub3RpZnkoKTtcclxuXHQgIH0gbGFzdCA9IHRhc2s7XHJcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciBjdHggICAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KVxuXHQgICwgaW52b2tlICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nilcblx0ICAsIGh0bWwgICAgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpXG5cdCAgLCBjZWwgICAgICAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc4KVxuXHQgICwgZ2xvYmFsICAgICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlcblx0ICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG5cdCAgLCBzZXRUYXNrICAgICAgICAgICAgPSBnbG9iYWwuc2V0SW1tZWRpYXRlXG5cdCAgLCBjbGVhclRhc2sgICAgICAgICAgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGVcblx0ICAsIE1lc3NhZ2VDaGFubmVsICAgICA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbFxuXHQgICwgY291bnRlciAgICAgICAgICAgID0gMFxuXHQgICwgcXVldWUgICAgICAgICAgICAgID0ge31cblx0ICAsIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnXG5cdCAgLCBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblx0dmFyIHJ1biA9IGZ1bmN0aW9uKCl7XG5cdCAgdmFyIGlkID0gK3RoaXM7XG5cdCAgaWYocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKXtcblx0ICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcblx0ICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG5cdCAgICBmbigpO1xuXHQgIH1cblx0fTtcblx0dmFyIGxpc3RuZXIgPSBmdW5jdGlvbihldmVudCl7XG5cdCAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG5cdH07XG5cdC8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcblx0aWYoIXNldFRhc2sgfHwgIWNsZWFyVGFzayl7XG5cdCAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbil7XG5cdCAgICB2YXIgYXJncyA9IFtdLCBpID0gMTtcblx0ICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG5cdCAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24oKXtcblx0ICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuXHQgICAgfTtcblx0ICAgIGRlZmVyKGNvdW50ZXIpO1xuXHQgICAgcmV0dXJuIGNvdW50ZXI7XG5cdCAgfTtcblx0ICBjbGVhclRhc2sgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCl7XG5cdCAgICBkZWxldGUgcXVldWVbaWRdO1xuXHQgIH07XG5cdCAgLy8gTm9kZS5qcyAwLjgtXG5cdCAgaWYoX193ZWJwYWNrX3JlcXVpcmVfXygzNykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnKXtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG5cdCAgICB9O1xuXHQgIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcblx0ICB9IGVsc2UgaWYoTWVzc2FnZUNoYW5uZWwpe1xuXHQgICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDtcblx0ICAgIHBvcnQgICAgPSBjaGFubmVsLnBvcnQyO1xuXHQgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0bmVyO1xuXHQgICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG5cdCAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG5cdCAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcblx0ICB9IGVsc2UgaWYoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHQpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuXHQgICAgfTtcblx0ICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdG5lciwgZmFsc2UpO1xuXHQgIC8vIElFOC1cblx0ICB9IGVsc2UgaWYoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0Jykpe1xuXHQgICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG5cdCAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY2VsKCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcblx0ICAgICAgICBydW4uY2FsbChpZCk7XG5cdCAgICAgIH07XG5cdCAgICB9O1xuXHQgIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG5cdCAgfSBlbHNlIHtcblx0ICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuXHQgICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBzZXQ6ICAgc2V0VGFzayxcblx0ICBjbGVhcjogY2xlYXJUYXNrXG5cdH07XG5cbi8qKiovIH0sXG4vKiA3NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIGFyZ3MsIHRoYXQpe1xuXHQgIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcblx0ICBzd2l0Y2goYXJncy5sZW5ndGgpe1xuXHQgICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCk7XG5cdCAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG5cdCAgICBjYXNlIDI6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG5cdCAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG5cdCAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG5cdCAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG5cdCAgfSByZXR1cm4gICAgICAgICAgICAgIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xuXHR9O1xuXG4vKioqLyB9LFxuLyogNzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSkuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNzggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpLmRvY3VtZW50XG5cdCAgLy8gaW4gb2xkIElFIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnXG5cdCAgLCBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG5cdCAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDc5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgJHJlZGVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odGFyZ2V0LCBzcmMpe1xuXHQgIGZvcih2YXIga2V5IGluIHNyYykkcmVkZWYodGFyZ2V0LCBrZXksIHNyY1trZXldKTtcblx0ICByZXR1cm4gdGFyZ2V0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogODAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogX193ZWJwYWNrX3JlcXVpcmVfXyg4MSksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuLyoqKi8gfSxcbi8qIDgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKS5PYmplY3Qua2V5cztcblxuLyoqKi8gfSxcbi8qIDgyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcblx0dmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4MykoJ2tleXMnLCBmdW5jdGlvbigka2V5cyl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuXHQgICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG5cdCAgfTtcblx0fSk7XG5cbi8qKiovIH0sXG4vKiA4MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oS0VZLCBleGVjKXtcblx0ICB2YXIgJGRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMTApXG5cdCAgICAsIGZuICAgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygxMikuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldXG5cdCAgICAsIGV4cCAgPSB7fTtcblx0ICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuXHQgICRkZWYoJGRlZi5TICsgJGRlZi5GICogX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IF9fd2VicGFja19yZXF1aXJlX18oODUpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cbi8qKiovIH0sXG4vKiA4NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0X193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMikuU2V0O1xuXG4vKioqLyB9LFxuLyogODYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyIHN0cm9uZyA9IF9fd2VicGFja19yZXF1aXJlX18oODcpO1xuXG5cdC8vIDIzLjIgU2V0IE9iamVjdHNcblx0X193ZWJwYWNrX3JlcXVpcmVfXyg4OCkoJ1NldCcsIGZ1bmN0aW9uKGdldCl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50c1swXSk7IH07XG5cdH0sIHtcblx0ICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcblx0ICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSl7XG5cdCAgICByZXR1cm4gc3Ryb25nLmRlZih0aGlzLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG5cdCAgfVxuXHR9LCBzdHJvbmcpO1xuXG4vKioqLyB9LFxuLyogODcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0dmFyICQgICAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCBoaWRlICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgY3R4ICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNylcblx0ICAsIHNwZWNpZXMgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpXG5cdCAgLCBzdHJpY3ROZXcgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KVxuXHQgICwgZGVmaW5lZCAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KVxuXHQgICwgZm9yT2YgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0ZXAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpXG5cdCAgLCBJRCAgICAgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKSgnaWQnKVxuXHQgICwgJGhhcyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSlcblx0ICAsIGlzT2JqZWN0ICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpXG5cdCAgLCBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGlzT2JqZWN0XG5cdCAgLCBTVVBQT1JUX0RFU0MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KVxuXHQgICwgU0laRSAgICAgICAgID0gU1VQUE9SVF9ERVNDID8gJ19zJyA6ICdzaXplJ1xuXHQgICwgaWQgICAgICAgICAgID0gMDtcblxuXHR2YXIgZmFzdEtleSA9IGZ1bmN0aW9uKGl0LCBjcmVhdGUpe1xuXHQgIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcblx0ICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG5cdCAgaWYoISRoYXMoaXQsIElEKSl7XG5cdCAgICAvLyBjYW4ndCBzZXQgaWQgdG8gZnJvemVuIG9iamVjdFxuXHQgICAgaWYoIWlzRXh0ZW5zaWJsZShpdCkpcmV0dXJuICdGJztcblx0ICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIGlkXG5cdCAgICBpZighY3JlYXRlKXJldHVybiAnRSc7XG5cdCAgICAvLyBhZGQgbWlzc2luZyBvYmplY3QgaWRcblx0ICAgIGhpZGUoaXQsIElELCArK2lkKTtcblx0ICAvLyByZXR1cm4gb2JqZWN0IGlkIHdpdGggcHJlZml4XG5cdCAgfSByZXR1cm4gJ08nICsgaXRbSURdO1xuXHR9O1xuXG5cdHZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uKHRoYXQsIGtleSl7XG5cdCAgLy8gZmFzdCBjYXNlXG5cdCAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpLCBlbnRyeTtcblx0ICBpZihpbmRleCAhPT0gJ0YnKXJldHVybiB0aGF0Ll9pW2luZGV4XTtcblx0ICAvLyBmcm96ZW4gb2JqZWN0IGNhc2Vcblx0ICBmb3IoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcblx0ICAgIGlmKGVudHJ5LmsgPT0ga2V5KXJldHVybiBlbnRyeTtcblx0ICB9XG5cdH07XG5cblx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpe1xuXHQgICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRoYXQsIGl0ZXJhYmxlKXtcblx0ICAgICAgc3RyaWN0TmV3KHRoYXQsIEMsIE5BTUUpO1xuXHQgICAgICB0aGF0Ll9pID0gJC5jcmVhdGUobnVsbCk7IC8vIGluZGV4XG5cdCAgICAgIHRoYXQuX2YgPSB1bmRlZmluZWQ7ICAgICAgLy8gZmlyc3QgZW50cnlcblx0ICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgICAvLyBsYXN0IGVudHJ5XG5cdCAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgICAgLy8gc2l6ZVxuXHQgICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuXHQgICAgfSk7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwge1xuXHQgICAgICAvLyAyMy4xLjMuMSBNYXAucHJvdG90eXBlLmNsZWFyKClcblx0ICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG5cdCAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpe1xuXHQgICAgICAgIGZvcih2YXIgdGhhdCA9IHRoaXMsIGRhdGEgPSB0aGF0Ll9pLCBlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuXHQgICAgICAgICAgZW50cnkuciA9IHRydWU7XG5cdCAgICAgICAgICBpZihlbnRyeS5wKWVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgICBkZWxldGUgZGF0YVtlbnRyeS5pXTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgdGhhdFtTSVpFXSA9IDA7XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcblx0ICAgICAgLy8gMjMuMi4zLjQgU2V0LnByb3RvdHlwZS5kZWxldGUodmFsdWUpXG5cdCAgICAgICdkZWxldGUnOiBmdW5jdGlvbihrZXkpe1xuXHQgICAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAgICwgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuXHQgICAgICAgIGlmKGVudHJ5KXtcblx0ICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkublxuXHQgICAgICAgICAgICAsIHByZXYgPSBlbnRyeS5wO1xuXHQgICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG5cdCAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcblx0ICAgICAgICAgIGlmKHByZXYpcHJldi5uID0gbmV4dDtcblx0ICAgICAgICAgIGlmKG5leHQpbmV4dC5wID0gcHJldjtcblx0ICAgICAgICAgIGlmKHRoYXQuX2YgPT0gZW50cnkpdGhhdC5fZiA9IG5leHQ7XG5cdCAgICAgICAgICBpZih0aGF0Ll9sID09IGVudHJ5KXRoYXQuX2wgPSBwcmV2O1xuXHQgICAgICAgICAgdGhhdFtTSVpFXS0tO1xuXHQgICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuXHQgICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcblx0ICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qLCB0aGF0ID0gdW5kZWZpbmVkICovKXtcblx0ICAgICAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0sIDMpXG5cdCAgICAgICAgICAsIGVudHJ5O1xuXHQgICAgICAgIHdoaWxlKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZil7XG5cdCAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuXHQgICAgICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG5cdCAgICAgICAgICB3aGlsZShlbnRyeSAmJiBlbnRyeS5yKWVudHJ5ID0gZW50cnkucDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0sXG5cdCAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcblx0ICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG5cdCAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSl7XG5cdCAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodGhpcywga2V5KTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgICBpZihTVVBQT1JUX0RFU0MpJC5zZXREZXNjKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlvbigpe1xuXHQgICAgICAgIHJldHVybiBkZWZpbmVkKHRoaXNbU0laRV0pO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIHJldHVybiBDO1xuXHQgIH0sXG5cdCAgZGVmOiBmdW5jdGlvbih0aGF0LCBrZXksIHZhbHVlKXtcblx0ICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSlcblx0ICAgICAgLCBwcmV2LCBpbmRleDtcblx0ICAgIC8vIGNoYW5nZSBleGlzdGluZyBlbnRyeVxuXHQgICAgaWYoZW50cnkpe1xuXHQgICAgICBlbnRyeS52ID0gdmFsdWU7XG5cdCAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGF0Ll9sID0gZW50cnkgPSB7XG5cdCAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG5cdCAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuXHQgICAgICAgIHY6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuXHQgICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuXHQgICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG5cdCAgICAgICAgcjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHJlbW92ZWRcblx0ICAgICAgfTtcblx0ICAgICAgaWYoIXRoYXQuX2YpdGhhdC5fZiA9IGVudHJ5O1xuXHQgICAgICBpZihwcmV2KXByZXYubiA9IGVudHJ5O1xuXHQgICAgICB0aGF0W1NJWkVdKys7XG5cdCAgICAgIC8vIGFkZCB0byBpbmRleFxuXHQgICAgICBpZihpbmRleCAhPT0gJ0YnKXRoYXQuX2lbaW5kZXhdID0gZW50cnk7XG5cdCAgICB9IHJldHVybiB0aGF0O1xuXHQgIH0sXG5cdCAgZ2V0RW50cnk6IGdldEVudHJ5LFxuXHQgIHNldFN0cm9uZzogZnVuY3Rpb24oQywgTkFNRSwgSVNfTUFQKXtcblx0ICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuXHQgICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXyg4KShDLCBOQU1FLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG5cdCAgICAgIHRoaXMuX3QgPSBpdGVyYXRlZDsgIC8vIHRhcmdldFxuXHQgICAgICB0aGlzLl9rID0ga2luZDsgICAgICAvLyBraW5kXG5cdCAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7IC8vIHByZXZpb3VzXG5cdCAgICB9LCBmdW5jdGlvbigpe1xuXHQgICAgICB2YXIgdGhhdCAgPSB0aGlzXG5cdCAgICAgICAgLCBraW5kICA9IHRoYXQuX2tcblx0ICAgICAgICAsIGVudHJ5ID0gdGhhdC5fbDtcblx0ICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG5cdCAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuXHQgICAgICBpZighdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKXtcblx0ICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuXHQgICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG5cdCAgICAgICAgcmV0dXJuIHN0ZXAoMSk7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuXHQgICAgICBpZihraW5kID09ICdrZXlzJyAgKXJldHVybiBzdGVwKDAsIGVudHJ5LmspO1xuXHQgICAgICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuXHQgICAgICByZXR1cm4gc3RlcCgwLCBbZW50cnkuaywgZW50cnkudl0pO1xuXHQgICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycgLCAhSVNfTUFQLCB0cnVlKTtcblxuXHQgICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcblx0ICAgIHNwZWNpZXMoQyk7XG5cdCAgICBzcGVjaWVzKF9fd2VicGFja19yZXF1aXJlX18oMTIpW05BTUVdKTsgLy8gZm9yIHdyYXBwZXJcblx0ICB9XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHR2YXIgJCAgICAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpXG5cdCAgLCAkZGVmICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMClcblx0ICAsIGhpZGUgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KVxuXHQgICwgZm9yT2YgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBzdHJpY3ROZXcgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSyl7XG5cdCAgdmFyIEJhc2UgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSlbTkFNRV1cblx0ICAgICwgQyAgICAgPSBCYXNlXG5cdCAgICAsIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJ1xuXHQgICAgLCBwcm90byA9IEMgJiYgQy5wcm90b3R5cGVcblx0ICAgICwgTyAgICAgPSB7fTtcblx0ICBpZighX193ZWJwYWNrX3JlcXVpcmVfXygxNykgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJ1xuXHQgICAgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIV9fd2VicGFja19yZXF1aXJlX18oMTgpKGZ1bmN0aW9uKCl7IG5ldyBDKCkuZW50cmllcygpLm5leHQoKTsgfSkpXG5cdCAgKXtcblx0ICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG5cdCAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuXHQgICAgX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkoQy5wcm90b3R5cGUsIG1ldGhvZHMpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBDID0gd3JhcHBlcihmdW5jdGlvbih0YXJnZXQsIGl0ZXJhYmxlKXtcblx0ICAgICAgc3RyaWN0TmV3KHRhcmdldCwgQywgTkFNRSk7XG5cdCAgICAgIHRhcmdldC5fYyA9IG5ldyBCYXNlO1xuXHQgICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGFyZ2V0W0FEREVSXSwgdGFyZ2V0KTtcblx0ICAgIH0pO1xuXHQgICAgJC5lYWNoLmNhbGwoJ2FkZCxjbGVhcixkZWxldGUsZm9yRWFjaCxnZXQsaGFzLHNldCxrZXlzLHZhbHVlcyxlbnRyaWVzJy5zcGxpdCgnLCcpLGZ1bmN0aW9uKEtFWSl7XG5cdCAgICAgIHZhciBjaGFpbiA9IEtFWSA9PSAnYWRkJyB8fCBLRVkgPT0gJ3NldCc7XG5cdCAgICAgIGlmKEtFWSBpbiBwcm90byAmJiAhKElTX1dFQUsgJiYgS0VZID09ICdjbGVhcicpKWhpZGUoQy5wcm90b3R5cGUsIEtFWSwgZnVuY3Rpb24oYSwgYil7XG5cdCAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2NbS0VZXShhID09PSAwID8gMCA6IGEsIGIpO1xuXHQgICAgICAgIHJldHVybiBjaGFpbiA/IHRoaXMgOiByZXN1bHQ7XG5cdCAgICAgIH0pO1xuXHQgICAgfSk7XG5cdCAgICBpZignc2l6ZScgaW4gcHJvdG8pJC5zZXREZXNjKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcblx0ICAgICAgZ2V0OiBmdW5jdGlvbigpe1xuXHQgICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH1cblxuXHQgIF9fd2VicGFja19yZXF1aXJlX18oMjUpKEMsIE5BTUUpO1xuXG5cdCAgT1tOQU1FXSA9IEM7XG5cdCAgJGRlZigkZGVmLkcgKyAkZGVmLlcgKyAkZGVmLkYsIE8pO1xuXG5cdCAgaWYoIUlTX1dFQUspY29tbW9uLnNldFN0cm9uZyhDLCBOQU1FLCBJU19NQVApO1xuXG5cdCAgcmV0dXJuIEM7XG5cdH07XG5cbi8qKiovIH0sXG4vKiA4OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgJGRlZiAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblxuXHQkZGVmKCRkZWYuUCwgJ1NldCcsIHt0b0pTT046IF9fd2VicGFja19yZXF1aXJlX18oOTApKCdTZXQnKX0pO1xuXG4vKioqLyB9LFxuLyogOTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cblx0dmFyIGZvck9mICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKVxuXHQgICwgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oMzYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUpe1xuXHQgIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKXtcblx0ICAgIGlmKGNsYXNzb2YodGhpcykgIT0gTkFNRSl0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuXHQgICAgdmFyIGFyciA9IFtdO1xuXHQgICAgZm9yT2YodGhpcywgZmFsc2UsIGFyci5wdXNoLCBhcnIpO1xuXHQgICAgcmV0dXJuIGFycjtcblx0ICB9O1xuXHR9O1xuXG4vKioqLyB9XG4vKioqKioqLyBdKVxufSk7XG47IiwibW9kdWxlLmV4cG9ydHMgPSBERzsiLCJtb2R1bGUuZXhwb3J0cyA9IE9DTDsiLCJtb2R1bGUuZXhwb3J0cyA9IGdyb2s7IiwibW9kdWxlLmV4cG9ydHMgPSByeGpzOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyY1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHNjcmlwdFVybCA9IHNjcmlwdHNbc2NyaXB0cy5sZW5ndGggLSAxXS5zcmNcblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJwYWNrYWdlXCI6IDBcbn07XG5cbi8vIG5vIGNodW5rIG9uIGRlbWFuZCBsb2FkaW5nXG5cbi8vIG5vIHByZWZldGNoaW5nXG5cbi8vIG5vIHByZWxvYWRlZFxuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0XG5cbi8vIG5vIG9uIGNodW5rcyBsb2FkZWRcblxuLy8gbm8ganNvbnAgZnVuY3Rpb24iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzIHRvIG1hdGNoIGV4dGVybmFsIG1vZHVsZXMgaW4gd2VicGFjayBjb25maWd1cmF0aW9uICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5leHBvcnQgY29uc3QgX3BhY2thZ2UgPSBuZXcgREcuUGFja2FnZSgpO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbmltcG9ydCB7IFZkUmVnaW9uc1ZpZXdlciB9IGZyb20gJy4vdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlcic7XG5pbXBvcnQgeyBydW5LYWxpZ24gfSBmcm9tICcuL3V0aWxzL211bHRpcGxlLXNlcXVlbmNlLWFsaWdubWVudCc7XG5pbXBvcnQgeyBTZXF1ZW5jZUFsaWdubWVudCB9IGZyb20gJy4vc2VxX2FsaWduJztcbmltcG9ydCB7IE51Y2xlb3RpZGVzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IEFtaW5vYWNpZHMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSAnLi91dGlscy9jb252ZXJ0JztcbmltcG9ydCB7IGdldEVtYmVkZGluZ0NvbHNOYW1lcywgc2VxdWVuY2VTcGFjZSB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2Utc3BhY2UnO1xuaW1wb3J0IHsgZ2V0QWN0aXZpdHlDbGlmZnMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy92aWV3ZXJzL2FjdGl2aXR5LWNsaWZmcyc7XG5pbXBvcnQgeyBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcywgZHJhd1Rvb2x0aXAgfSBmcm9tICcuL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcyc7XG5pbXBvcnQgeyBnZXRNb2xmaWxlc0Zyb21TZXEsIEhFTE1fQ09SRV9MSUJfRklMRU5BTUUgfSBmcm9tICcuL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IGdldE1hY3JvTW9sIH0gZnJvbSAnLi91dGlscy9hdG9taWMtd29ya3MnO1xuLy9uYW1lOiBzZXF1ZW5jZUFsaWdubWVudFxuLy9pbnB1dDogc3RyaW5nIGFsaWduVHlwZSB7Y2hvaWNlczogWydMb2NhbCBhbGlnbm1lbnQnLCAnR2xvYmFsIGFsaWdubWVudCddfVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZUFsaWdubWVudChhbGlnblR5cGUsIGFsaWduVGFibGUsIGdhcCwgc2VxMSwgc2VxMikge1xuICAgIGNvbnN0IHRvQWxpZ24gPSBuZXcgU2VxdWVuY2VBbGlnbm1lbnQoc2VxMSwgc2VxMiwgZ2FwLCBhbGlnblRhYmxlKTtcbiAgICBjb25zdCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4vL25hbWU6IFZkUmVnaW9uc1xuLy9kZXNjcmlwdGlvbjogVi1Eb21haW4gcmVnaW9ucyB2aWV3ZXJcbi8vdGFnczogdmlld2VyLCBwYW5lbFxuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiB2ZFJlZ2lvblZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFZkUmVnaW9uc1ZpZXdlcigpO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzLi4uXG4vL25hbWU6IFNlcXVlbmNlIEFjdGl2aXR5IENsaWZmc1xuLy9kZXNjcmlwdGlvbjogZGV0ZWN0IGFjdGl2aXR5IGNsaWZmc1xuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9pbnB1dDogY29sdW1uIGFjdGl2aXRpZXNcbi8vaW5wdXQ6IGRvdWJsZSBzaW1pbGFyaXR5ID0gODAgW1NpbWlsYXJpdHkgY3V0b2ZmXVxuLy9pbnB1dDogc3RyaW5nIG1ldGhvZE5hbWUgeyBjaG9pY2VzOltcIlVNQVBcIiwgXCJ0LVNORVwiLCBcIlNQRVwiXSB9XG5leHBvcnQgZnVuY3Rpb24gYWN0aXZpdHlDbGlmZnMoZGYsIHNlcXVlbmNlLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCBtZXRob2ROYW1lKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgYXhlc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKGRmKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICdTUEUnOiB7IGN5Y2xlczogMjAwMCwgbGFtYmRhOiAxLjAsIGRsYW1iZGE6IDAuMDAwNSB9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bml0cyA9IHNlcXVlbmNlLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIHlpZWxkIGdldEFjdGl2aXR5Q2xpZmZzKGRmLCBzZXF1ZW5jZSwgYXhlc05hbWVzLCAnQWN0aXZpdHkgY2xpZmZzJywgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgJ0xldmVuc2h0ZWluJywgbWV0aG9kTmFtZSwgREcuU0VNVFlQRS5NQUNST01PTEVDVUxFLCB1bml0cywgc2VxdWVuY2VTcGFjZSwgc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMsIGRyYXdUb29sdGlwLCBvcHRpb25zW21ldGhvZE5hbWVdKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IFNlcXVlbmNlIFNwYWNlLi4uXG4vL25hbWU6IFNlcXVlbmNlIFNwYWNlXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGVcbi8vaW5wdXQ6IGNvbHVtbiBtYWNyb01vbGVjdWxlIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbi8vaW5wdXQ6IHN0cmluZyBzaW1pbGFyaXR5TWV0cmljIHsgY2hvaWNlczpbXCJMZXZlbnNodGVpblwiLCBcIlRhbmltb3RvXCJdIH1cbi8vaW5wdXQ6IGJvb2wgcGxvdEVtYmVkZGluZ3MgPSB0cnVlXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VTcGFjZVRvcE1lbnUodGFibGUsIG1hY3JvTW9sZWN1bGUsIG1ldGhvZE5hbWUsIHNpbWlsYXJpdHlNZXRyaWMgPSAnTGV2ZW5zaHRlaW4nLCBwbG90RW1iZWRkaW5ncykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IGVtYmVkQ29sc05hbWVzID0gZ2V0RW1iZWRkaW5nQ29sc05hbWVzKHRhYmxlKTtcbiAgICAgICAgY29uc3QgY2hlbVNwYWNlUGFyYW1zID0ge1xuICAgICAgICAgICAgc2VxQ29sOiBtYWNyb01vbGVjdWxlLFxuICAgICAgICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgICAgICAgIHNpbWlsYXJpdHlNZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMsXG4gICAgICAgICAgICBlbWJlZEF4ZXNOYW1lczogZW1iZWRDb2xzTmFtZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VTcGFjZVJlcyA9IHlpZWxkIHNlcXVlbmNlU3BhY2UoY2hlbVNwYWNlUGFyYW1zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHNlcXVlbmNlU3BhY2VSZXMuY29vcmRpbmF0ZXM7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGVtYmVkZGluZ3MpXG4gICAgICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChjb2wpO1xuICAgICAgICBpZiAocGxvdEVtYmVkZGluZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBncm9rLnNoZWxsLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHYubmFtZSA9PT0gdGFibGUubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgdi5zY2F0dGVyUGxvdCh7IHg6IGVtYmVkQ29sc05hbWVzWzBdLCB5OiBlbWJlZENvbHNOYW1lc1sxXSwgdGl0bGU6ICdTZXF1ZW5jZSBzcGFjZScgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbjtcbi8vdG9wLW1lbnU6IEJpbyB8IE1vbGZpbGVzIEZyb20gSEVMTS4uLlxuLy9uYW1lOiBNb2xmaWxlcyBGcm9tIEhFTE1cbi8vZGVzY3JpcHRpb246IHJldHVybnMgbW9sZmlsZXMgZm9yIGVhY2ggbW9ub21lciBmcm9tIEhFTE0gbGlicmFyeVxuLy9pbnB1dDogZGF0YWZyYW1lIGRmIFtJbnB1dCBkYXRhIHRhYmxlXVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIG1vbGZpbGVzRnJvbUhFTE0oZGYsIHNlcXVlbmNlKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJGaWxlID0geWllbGQgX3BhY2thZ2UuZmlsZXMucmVhZEFzVGV4dChIRUxNX0NPUkVfTElCX0ZJTEVOQU1FKTtcbiAgICAgICAgY29uc3QgbW9ub21lcnNMaWJEZiA9IERHLkRhdGFGcmFtZS5mcm9tSnNvbihtb25vbWVyc0xpYkZpbGUpO1xuICAgICAgICBjb25zdCBhdG9taWNDb2RlcyA9IGdldE1vbGZpbGVzRnJvbVNlcShzZXF1ZW5jZSwgbW9ub21lcnNMaWJEZik7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdG9taWNDb2Rlcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdldE1hY3JvTW9sKGF0b21pY0NvZGVzW2ldKSk7XG4gICAgICAgIGRmLmNvbHVtbnMuYWRkKERHLkNvbHVtbi5mcm9tU3RyaW5ncygncmVnZW5lcmF0ZWQnLCByZXN1bHQpKTtcbiAgICB9KTtcbn1cbi8vdG9wLW1lbnU6IEJpbyB8IE1TQS4uLlxuLy9uYW1lOiBNU0Fcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIHNlcXVlbmNlIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG5leHBvcnQgZnVuY3Rpb24gbXVsdGlwbGVTZXF1ZW5jZUFsaWdubWVudEFueSh0YWJsZSwgY29sKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgbXNhQ29sID0geWllbGQgcnVuS2FsaWduKGNvbCwgZmFsc2UpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zLmFkZChtc2FDb2wpO1xuICAgIH0pO1xufVxuLy9uYW1lOiBDb21wb3NpdGlvbiBBbmFseXNpc1xuLy90b3AtbWVudTogQmlvIHwgQ29tcG9zaXRpb24gQW5hbHlzaXNcbi8vb3V0cHV0OiB2aWV3ZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gY29tcG9zaXRpb25BbmFseXNpcygpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBIaWdoZXIgcHJpb3JpdHkgZm9yIGNvbHVtbnMgd2l0aCBNU0EgZGF0YSB0byBzaG93IHdpdGggV2ViTG9nby5cbiAgICAgICAgY29uc3QgdHYgPSBncm9rLnNoZWxsLnR2O1xuICAgICAgICBjb25zdCBkZiA9IHR2LmRhdGFGcmFtZTtcbiAgICAgICAgY29uc3Qgc2VtVHlwZUNvbExpc3QgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZUFsbChERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpO1xuICAgICAgICBsZXQgY29sID0gc2VtVHlwZUNvbExpc3QuZmluZCgoY29sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghY29sKVxuICAgICAgICAgICAgY29sID0gc2VtVHlwZUNvbExpc3RbMF07XG4gICAgICAgIGlmICghY29sKSB7XG4gICAgICAgICAgICBncm9rLnNoZWxsLmVycm9yKCdDdXJyZW50IHRhYmxlIGRvZXMgbm90IGNvbnRhaW4gc2VxdWVuY2VzJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHYuYWRkVmlld2VyKCdXZWJMb2dvJywgeyBzZXF1ZW5jZUNvbHVtbk5hbWU6IGNvbC5uYW1lIH0pO1xuICAgIH0pO1xufVxuLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBpbXBvcnRGYXN0YVxuZnVuY3Rpb24gcGFyc2VNYWNyb21vbGVjdWxlKGZpbGVDb250ZW50LCBzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpIHtcbiAgICBjb25zdCBzZXEgPSBmaWxlQ29udGVudC5zbGljZShzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpO1xuICAgIGNvbnN0IHNlcUFycmF5ID0gc2VxLnNwbGl0KC9cXHMvKTtcbiAgICByZXR1cm4gc2VxQXJyYXkuam9pbignJyk7XG59XG4vL25hbWU6IGltcG9ydEZhc3RhXG4vL2Rlc2NyaXB0aW9uOiBPcGVucyBGQVNUQSBmaWxlXG4vL3RhZ3M6IGZpbGUtaGFuZGxlclxuLy9tZXRhLmV4dDogZmFzdGEsIGZuYSwgZmZuLCBmYWEsIGZybiwgZmFcbi8vaW5wdXQ6IHN0cmluZyBmaWxlQ29udGVudFxuLy9vdXRwdXQ6IGxpc3QgdGFibGVzXG5leHBvcnQgZnVuY3Rpb24gaW1wb3J0RmFzdGEoZmlsZUNvbnRlbnQpIHtcbiAgICBjb25zdCByZWdleCA9IC9ePiguKikkL2dtOyAvLyBtYXRjaCBsaW5lcyBzdGFydGluZyB3aXRoID5cbiAgICBjb25zdCBkZXNjcmlwdGlvbnNBcnJheSA9IFtdO1xuICAgIGNvbnN0IHNlcXVlbmNlc0FycmF5ID0gW107XG4gICAgbGV0IHN0YXJ0T2ZTZXF1ZW5jZSA9IDA7XG4gICAgbGV0IG1hdGNoOyAvLyBtYXRjaC5pbmRleCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtYXRjaGVkIGxpbmVcbiAgICB3aGlsZSAobWF0Y2ggPSByZWdleC5leGVjKGZpbGVDb250ZW50KSkge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGZpbGVDb250ZW50LnN1YnN0cmluZyhtYXRjaC5pbmRleCArIDEsIHJlZ2V4Lmxhc3RJbmRleCk7XG4gICAgICAgIGRlc2NyaXB0aW9uc0FycmF5LnB1c2goZGVzY3JpcHRpb24pO1xuICAgICAgICBpZiAoc3RhcnRPZlNlcXVlbmNlICE9PSAwKVxuICAgICAgICAgICAgc2VxdWVuY2VzQXJyYXkucHVzaChwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgc3RhcnRPZlNlcXVlbmNlID0gcmVnZXgubGFzdEluZGV4ICsgMTtcbiAgICB9XG4gICAgc2VxdWVuY2VzQXJyYXkucHVzaChwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgLTEpKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbnNBcnJheUNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnZGVzY3JpcHRpb24nLCBkZXNjcmlwdGlvbnNBcnJheSk7XG4gICAgY29uc3Qgc2VxdWVuY2VDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ3NlcXVlbmNlJywgc2VxdWVuY2VzQXJyYXkpO1xuICAgIHNlcXVlbmNlQ29sLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgY29uc3Qgc3RhdHMgPSBXZWJMb2dvLmdldFN0YXRzKHNlcXVlbmNlQ29sLCA1LCBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YSk7XG4gICAgY29uc3Qgc2VxVHlwZSA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgIFsnTlQnLCBuZXcgU2V0KE9iamVjdC5rZXlzKE51Y2xlb3RpZGVzLk5hbWVzKSldLFxuICAgICAgICBbJ1BUJywgbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSldLFxuICAgIF07XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1sxXSkpO1xuICAgIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gICAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgICBzZXF1ZW5jZUNvbC5zZW1UeXBlID0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFO1xuICAgIGNvbnN0IHVuaXRzID0gYGZhc3RhOiR7c2VxVHlwZX06JHthbHBoYWJldH1gO1xuICAgIHNlcXVlbmNlQ29sLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgcmV0dXJuIFtERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgZGVzY3JpcHRpb25zQXJyYXlDb2wsXG4gICAgICAgICAgICBzZXF1ZW5jZUNvbCxcbiAgICAgICAgXSldO1xufVxuLy9uYW1lOiBCaW8gfCBDb252ZXJ0XG4vL2ZyaWVuZGx5LW5hbWU6IEJpbyB8IENvbnZlcnRcbi8vdGFnczogcGFuZWwsIGJpb1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFuZWwoY29sKSB7XG4gICAgY29udmVydChjb2wpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
10319
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QU07QUFDTixJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0UsZUFBZTtBQUN2RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsZUFBZTtBQUMzRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsZUFBZTtBQUN6RjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFLLEVBQUUsRUFHVjs7QUFFVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLEtBQUssRUFBRSxFQUdWOztBQUVWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRFQUE0RSxlQUFlO0FBQzNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJGQUEyRixlQUFlO0FBQzFHO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLEVBQUU7O0FBRUY7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osRUFBRTs7QUFFRjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsMkVBQTJFLGVBQWU7QUFDMUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsMkVBQTJFLGVBQWU7QUFDMUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0EsK0ZBQStGLGVBQWU7QUFDOUc7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixFQUFFOztBQUVGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2REFBNkQsc0VBQXNFO0FBQ25JOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FB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O0FBRUE7QUFDQSxtQkFBbUI7O0FBRW5CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixnQkFBZ0I7QUFDMUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7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QUFDTztBQUNQO0FBQ0E7QUFDQSxtQkFBbUIsdURBQWE7QUFDaEM7QUFDQSx1REFBdUQsa0VBQXdCO0FBQy9FO0FBQ0EscUNBQXFDLHVEQUFhO0FBQ2xEO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQWdCO0FBQzVCO0FBQ0E7QUFDQSxrQ0FBa0MsOEJBQThCO0FBQ2hFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLCtEQUFxQjtBQUN0RCx3QkFBd0IsK0RBQXFCO0FBQzdDO0FBQ0Esa0JBQWtCLDBGQUFnQixpQkFBaUIsaUdBQXVCO0FBQzFFO0FBQ0E7QUFDQSxtQ0FBbUMsc0ZBQWlCO0FBQ3BELG1DQUFtQyxvRkFBZ0I7QUFDbkQ7QUFDQTtBQUNBLGdFQUFnRSx1R0FBNkI7QUFDN0Y7QUFDQTtBQUNBLDBCQUEwQixrRUFBd0I7QUFDbEQsMkJBQTJCLFFBQVEsR0FBRyxTQUFTO0FBQy9DLHVCQUF1Qix1REFBYTtBQUNwQyxZQUFZLGtFQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNkO0FBQ1AsSUFBSSx1REFBTztBQUNYIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BiaW93YXNtL2Fpb2xpL2Rpc3QvYWlvbGkuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXEtcGFsZXR0ZXMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXF1ZW5jZS1lbmNvZGVyLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdW5rbm93bi5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZkLXJlZ2lvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zZXF1ZW5jZS1zcGFjZS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdmlld2Vycy9hY3Rpdml0eS1jbGlmZnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNpbmctd29ya2VyLWNyZWF0b3IuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzLmpzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9iaW8vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2Zhc3Rlc3QtbGV2ZW5zaHRlaW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmlvLy4vbm9kZV9tb2R1bGVzL2phcm8td2lua2xlci10eXBlc2NyaXB0L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvc2VxX2FsaWduLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9hdG9taWMtd29ya3MudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvY29udmVydC50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50LnRzIiwid2VicGFjazovL2Jpby8uL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3NlcXVlbmNlLWFjdGl2aXR5LWNsaWZmcy50cyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvdXRpbHMvc2VxdWVuY2Utc3BhY2UudHMiLCJ3ZWJwYWNrOi8vYmlvLy4vc3JjL3V0aWxzL3V0aWxzLnRzIiwid2VicGFjazovL2Jpby8uL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyLnRzIiwid2VicGFjazovL2Jpby8uL25vZGVfbW9kdWxlcy93dS9kaXN0L3d1LmpzIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJPQ0xcIiIsIndlYnBhY2s6Ly9iaW8vZXh0ZXJuYWwgdmFyIFwiZ3Jva1wiIiwid2VicGFjazovL2Jpby9leHRlcm5hbCB2YXIgXCJyeGpzXCIiLCJ3ZWJwYWNrOi8vYmlvL2V4dGVybmFsIHZhciBcInVpXCIiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9iaW8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vYmlvL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2Jpby93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9iaW8vLi9zcmMvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gIChnbG9iYWwgPSBnbG9iYWwgfHwgc2VsZiwgZ2xvYmFsLkFpb2xpID0gZmFjdG9yeSgpKTtcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBuYW1lID0gXCJAYmlvd2FzbS9haW9saVwiO1xuICB2YXIgdmVyc2lvbiA9IFwiMi40LjAtcmMyXCI7XG4gIHZhciBkZXNjcmlwdGlvbiA9IFwiQSBmcmFtZXdvcmsgZm9yIGJ1aWxkaW5nIFdlYkFzc2VtYmx5LWJhc2VkIGdlbm9taWNzIHRvb2xzXCI7XG4gIHZhciBicm93c2VyID0gXCJkaXN0L2Fpb2xpLmpzXCI7XG4gIHZhciB3b3JrZXIgPSBcImRpc3QvYWlvbGkud29ya2VyLmpzXCI7XG4gIHZhciBtYWluID0gXCJhaW9saS5qc1wiO1xuICB2YXIgcmVwb3NpdG9yeSA9IHtcbiAgXHR0eXBlOiBcImdpdFwiLFxuICBcdHVybDogXCJnaXQraHR0cHM6Ly9naXRodWIuY29tL2Jpb3dhc20vYWlvbGkuZ2l0XCJcbiAgfTtcbiAgdmFyIGF1dGhvciA9IFwiUm9iZXJ0IEFib3VraGFsaWxcIjtcbiAgdmFyIGxpY2Vuc2UgPSBcIk1JVFwiO1xuICB2YXIgZGVwZW5kZW5jaWVzID0ge1xuICBcdGNvbWxpbms6IFwiXjQuMy4xXCIsXG4gIFx0XCJ3YXNtLWZlYXR1cmUtZGV0ZWN0XCI6IFwiXjEuMi4xMVwiXG4gIH07XG4gIHZhciBkZXZEZXBlbmRlbmNpZXMgPSB7XG4gIFx0XCJAcm9sbHVwL3BsdWdpbi1jb21tb25qc1wiOiBcIl4xMS4wLjFcIixcbiAgXHRcIkByb2xsdXAvcGx1Z2luLWpzb25cIjogXCJeNC4xLjBcIixcbiAgXHRcIkByb2xsdXAvcGx1Z2luLW5vZGUtcmVzb2x2ZVwiOiBcIl43LjAuMFwiLFxuICBcdGN5cHJlc3M6IFwiXjguMC4wXCIsXG4gIFx0cm9sbHVwOiBcIl4xLjI5LjBcIixcbiAgXHRcInJvbGx1cC1wbHVnaW4tdGVyc2VyXCI6IFwiXjcuMC4yXCJcbiAgfTtcbiAgdmFyIHNjcmlwdHMgPSB7XG4gIFx0YnVpbGQ6IFwicm9sbHVwIC1jXCIsXG4gIFx0ZGV2OiBcInJvbGx1cCAtYyAtd1wiLFxuICBcdHRlc3Q6IFwiY3lwcmVzcyBydW5cIixcbiAgXHRcInRlc3Qtb3BlblwiOiBcImN5cHJlc3Mgb3BlblwiXG4gIH07XG4gIHZhciBmaWxlcyA9IFtcbiAgXHRcImRpc3RcIlxuICBdO1xuICB2YXIgcGtnID0ge1xuICBcdG5hbWU6IG5hbWUsXG4gIFx0dmVyc2lvbjogdmVyc2lvbixcbiAgXHRkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gIFx0YnJvd3NlcjogYnJvd3NlcixcbiAgXHR3b3JrZXI6IHdvcmtlcixcbiAgXHRtYWluOiBtYWluLFxuICBcdHJlcG9zaXRvcnk6IHJlcG9zaXRvcnksXG4gIFx0YXV0aG9yOiBhdXRob3IsXG4gIFx0bGljZW5zZTogbGljZW5zZSxcbiAgXHRkZXBlbmRlbmNpZXM6IGRlcGVuZGVuY2llcyxcbiAgXHRkZXZEZXBlbmRlbmNpZXM6IGRldkRlcGVuZGVuY2llcyxcbiAgXHRzY3JpcHRzOiBzY3JpcHRzLFxuICBcdGZpbGVzOiBmaWxlc1xuICB9O1xuXG4gIC8qKlxyXG4gICAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gICAqL1xyXG4gIGNvbnN0IHByb3h5TWFya2VyID0gU3ltYm9sKFwiQ29tbGluay5wcm94eVwiKTtcclxuICBjb25zdCBjcmVhdGVFbmRwb2ludCA9IFN5bWJvbChcIkNvbWxpbmsuZW5kcG9pbnRcIik7XHJcbiAgY29uc3QgcmVsZWFzZVByb3h5ID0gU3ltYm9sKFwiQ29tbGluay5yZWxlYXNlUHJveHlcIik7XHJcbiAgY29uc3QgdGhyb3dNYXJrZXIgPSBTeW1ib2woXCJDb21saW5rLnRocm93blwiKTtcclxuICBjb25zdCBpc09iamVjdCA9ICh2YWwpID0+ICh0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmIHZhbCAhPT0gbnVsbCkgfHwgdHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiO1xyXG4gIC8qKlxyXG4gICAqIEludGVybmFsIHRyYW5zZmVyIGhhbmRsZSB0byBoYW5kbGUgb2JqZWN0cyBtYXJrZWQgdG8gcHJveHkuXHJcbiAgICovXHJcbiAgY29uc3QgcHJveHlUcmFuc2ZlckhhbmRsZXIgPSB7XHJcbiAgICAgIGNhbkhhbmRsZTogKHZhbCkgPT4gaXNPYmplY3QodmFsKSAmJiB2YWxbcHJveHlNYXJrZXJdLFxyXG4gICAgICBzZXJpYWxpemUob2JqKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHBvcnQxLCBwb3J0MiB9ID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XHJcbiAgICAgICAgICBleHBvc2Uob2JqLCBwb3J0MSk7XHJcbiAgICAgICAgICByZXR1cm4gW3BvcnQyLCBbcG9ydDJdXTtcclxuICAgICAgfSxcclxuICAgICAgZGVzZXJpYWxpemUocG9ydCkge1xyXG4gICAgICAgICAgcG9ydC5zdGFydCgpO1xyXG4gICAgICAgICAgcmV0dXJuIHdyYXAocG9ydCk7XHJcbiAgICAgIH0sXHJcbiAgfTtcclxuICAvKipcclxuICAgKiBJbnRlcm5hbCB0cmFuc2ZlciBoYW5kbGVyIHRvIGhhbmRsZSB0aHJvd24gZXhjZXB0aW9ucy5cclxuICAgKi9cclxuICBjb25zdCB0aHJvd1RyYW5zZmVySGFuZGxlciA9IHtcclxuICAgICAgY2FuSGFuZGxlOiAodmFsdWUpID0+IGlzT2JqZWN0KHZhbHVlKSAmJiB0aHJvd01hcmtlciBpbiB2YWx1ZSxcclxuICAgICAgc2VyaWFsaXplKHsgdmFsdWUgfSkge1xyXG4gICAgICAgICAgbGV0IHNlcmlhbGl6ZWQ7XHJcbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSB7XHJcbiAgICAgICAgICAgICAgICAgIGlzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiB2YWx1ZS5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWUubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjayxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHsgaXNFcnJvcjogZmFsc2UsIHZhbHVlIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gW3NlcmlhbGl6ZWQsIFtdXTtcclxuICAgICAgfSxcclxuICAgICAgZGVzZXJpYWxpemUoc2VyaWFsaXplZCkge1xyXG4gICAgICAgICAgaWYgKHNlcmlhbGl6ZWQuaXNFcnJvcikge1xyXG4gICAgICAgICAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHNlcmlhbGl6ZWQudmFsdWUubWVzc2FnZSksIHNlcmlhbGl6ZWQudmFsdWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhyb3cgc2VyaWFsaXplZC52YWx1ZTtcclxuICAgICAgfSxcclxuICB9O1xyXG4gIC8qKlxyXG4gICAqIEFsbG93cyBjdXN0b21pemluZyB0aGUgc2VyaWFsaXphdGlvbiBvZiBjZXJ0YWluIHZhbHVlcy5cclxuICAgKi9cclxuICBjb25zdCB0cmFuc2ZlckhhbmRsZXJzID0gbmV3IE1hcChbXHJcbiAgICAgIFtcInByb3h5XCIsIHByb3h5VHJhbnNmZXJIYW5kbGVyXSxcclxuICAgICAgW1widGhyb3dcIiwgdGhyb3dUcmFuc2ZlckhhbmRsZXJdLFxyXG4gIF0pO1xyXG4gIGZ1bmN0aW9uIGV4cG9zZShvYmosIGVwID0gc2VsZikge1xyXG4gICAgICBlcC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBmdW5jdGlvbiBjYWxsYmFjayhldikge1xyXG4gICAgICAgICAgaWYgKCFldiB8fCAhZXYuZGF0YSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHsgaWQsIHR5cGUsIHBhdGggfSA9IE9iamVjdC5hc3NpZ24oeyBwYXRoOiBbXSB9LCBldi5kYXRhKTtcclxuICAgICAgICAgIGNvbnN0IGFyZ3VtZW50TGlzdCA9IChldi5kYXRhLmFyZ3VtZW50TGlzdCB8fCBbXSkubWFwKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgbGV0IHJldHVyblZhbHVlO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLnNsaWNlKDAsIC0xKS5yZWR1Y2UoKG9iaiwgcHJvcCkgPT4gb2JqW3Byb3BdLCBvYmopO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcGF0aC5yZWR1Y2UoKG9iaiwgcHJvcCkgPT4gb2JqW3Byb3BdLCBvYmopO1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBjYXNlIFwiR0VUXCIgLyogR0VUICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcmF3VmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIlNFVFwiIC8qIFNFVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRbcGF0aC5zbGljZSgtMSlbMF1dID0gZnJvbVdpcmVWYWx1ZShldi5kYXRhLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkFQUExZXCIgLyogQVBQTFkgKi86XHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSByYXdWYWx1ZS5hcHBseShwYXJlbnQsIGFyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIkNPTlNUUlVDVFwiIC8qIENPTlNUUlVDVCAqLzpcclxuICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyByYXdWYWx1ZSguLi5hcmd1bWVudExpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gcHJveHkodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJFTkRQT0lOVFwiIC8qIEVORFBPSU5UICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcG9ydDEsIHBvcnQyIH0gPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvc2Uob2JqLCBwb3J0Mik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cmFuc2Zlcihwb3J0MSwgW3BvcnQxXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgY2FzZSBcIlJFTEVBU0VcIiAvKiBSRUxFQVNFICovOlxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2F0Y2ggKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSB7IHZhbHVlLCBbdGhyb3dNYXJrZXJdOiAwIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUocmV0dXJuVmFsdWUpXHJcbiAgICAgICAgICAgICAgLmNhdGNoKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlLCBbdGhyb3dNYXJrZXJdOiAwIH07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC50aGVuKChyZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFt3aXJlVmFsdWUsIHRyYW5zZmVyYWJsZXNdID0gdG9XaXJlVmFsdWUocmV0dXJuVmFsdWUpO1xyXG4gICAgICAgICAgICAgIGVwLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgd2lyZVZhbHVlKSwgeyBpZCB9KSwgdHJhbnNmZXJhYmxlcyk7XHJcbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwiUkVMRUFTRVwiIC8qIFJFTEVBU0UgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgLy8gZGV0YWNoIGFuZCBkZWFjdGl2ZSBhZnRlciBzZW5kaW5nIHJlbGVhc2UgcmVzcG9uc2UgYWJvdmUuXHJcbiAgICAgICAgICAgICAgICAgIGVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgY2xvc2VFbmRQb2ludChlcCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZXAuc3RhcnQpIHtcclxuICAgICAgICAgIGVwLnN0YXJ0KCk7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlbmRwb2ludCkge1xyXG4gICAgICByZXR1cm4gZW5kcG9pbnQuY29uc3RydWN0b3IubmFtZSA9PT0gXCJNZXNzYWdlUG9ydFwiO1xyXG4gIH1cclxuICBmdW5jdGlvbiBjbG9zZUVuZFBvaW50KGVuZHBvaW50KSB7XHJcbiAgICAgIGlmIChpc01lc3NhZ2VQb3J0KGVuZHBvaW50KSlcclxuICAgICAgICAgIGVuZHBvaW50LmNsb3NlKCk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHdyYXAoZXAsIHRhcmdldCkge1xyXG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoZXAsIFtdLCB0YXJnZXQpO1xyXG4gIH1cclxuICBmdW5jdGlvbiB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1JlbGVhc2VkKSB7XHJcbiAgICAgIGlmIChpc1JlbGVhc2VkKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm94eSBoYXMgYmVlbiByZWxlYXNlZCBhbmQgaXMgbm90IHVzZWFibGVcIik7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gY3JlYXRlUHJveHkoZXAsIHBhdGggPSBbXSwgdGFyZ2V0ID0gZnVuY3Rpb24gKCkgeyB9KSB7XHJcbiAgICAgIGxldCBpc1Byb3h5UmVsZWFzZWQgPSBmYWxzZTtcclxuICAgICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkodGFyZ2V0LCB7XHJcbiAgICAgICAgICBnZXQoX3RhcmdldCwgcHJvcCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHByb3AgPT09IHJlbGVhc2VQcm94eSkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlJFTEVBU0VcIiAvKiBSRUxFQVNFICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VFbmRQb2ludChlcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcm94eVJlbGVhc2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCJ0aGVuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0aGVuOiAoKSA9PiBwcm94eSB9O1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlKGVwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkdFVFwiIC8qIEdFVCAqLyxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICB9KS50aGVuKGZyb21XaXJlVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gci50aGVuLmJpbmQocik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVQcm94eShlcCwgWy4uLnBhdGgsIHByb3BdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQoX3RhcmdldCwgcHJvcCwgcmF3VmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aHJvd0lmUHJveHlSZWxlYXNlZChpc1Byb3h5UmVsZWFzZWQpO1xyXG4gICAgICAgICAgICAgIC8vIEZJWE1FOiBFUzYgUHJveHkgSGFuZGxlciBgc2V0YCBtZXRob2RzIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYVxyXG4gICAgICAgICAgICAgIC8vIGJvb2xlYW4uIFRvIHNob3cgZ29vZCB3aWxsLCB3ZSByZXR1cm4gdHJ1ZSBhc3luY2hyb25vdXNseSDCr1xcXyjjg4QpXy/Cr1xyXG4gICAgICAgICAgICAgIGNvbnN0IFt2YWx1ZSwgdHJhbnNmZXJhYmxlc10gPSB0b1dpcmVWYWx1ZShyYXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJTRVRcIiAvKiBTRVQgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXRoLCBwcm9wXS5tYXAoKHApID0+IHAudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICAgIH0sIHRyYW5zZmVyYWJsZXMpLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYXBwbHkoX3RhcmdldCwgX3RoaXNBcmcsIHJhd0FyZ3VtZW50TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFzdCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICBpZiAobGFzdCA9PT0gY3JlYXRlRW5kcG9pbnQpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRU5EUE9JTlRcIiAvKiBFTkRQT0lOVCAqLyxcclxuICAgICAgICAgICAgICAgICAgfSkudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLy8gV2UganVzdCBwcmV0ZW5kIHRoYXQgYGJpbmQoKWAgZGlkbuKAmXQgaGFwcGVuLlxyXG4gICAgICAgICAgICAgIGlmIChsYXN0ID09PSBcImJpbmRcIikge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUHJveHkoZXAsIHBhdGguc2xpY2UoMCwgLTEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY29uc3QgW2FyZ3VtZW50TGlzdCwgdHJhbnNmZXJhYmxlc10gPSBwcm9jZXNzQXJndW1lbnRzKHJhd0FyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJBUFBMWVwiIC8qIEFQUExZICovLFxyXG4gICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLm1hcCgocCkgPT4gcC50b1N0cmluZygpKSxcclxuICAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LFxyXG4gICAgICAgICAgICAgIH0sIHRyYW5zZmVyYWJsZXMpLnRoZW4oZnJvbVdpcmVWYWx1ZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29uc3RydWN0KF90YXJnZXQsIHJhd0FyZ3VtZW50TGlzdCkge1xyXG4gICAgICAgICAgICAgIHRocm93SWZQcm94eVJlbGVhc2VkKGlzUHJveHlSZWxlYXNlZCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgW2FyZ3VtZW50TGlzdCwgdHJhbnNmZXJhYmxlc10gPSBwcm9jZXNzQXJndW1lbnRzKHJhd0FyZ3VtZW50TGlzdCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UoZXAsIHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJDT05TVFJVQ1RcIiAvKiBDT05TVFJVQ1QgKi8sXHJcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgubWFwKChwKSA9PiBwLnRvU3RyaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgICBhcmd1bWVudExpc3QsXHJcbiAgICAgICAgICAgICAgfSwgdHJhbnNmZXJhYmxlcykudGhlbihmcm9tV2lyZVZhbHVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcHJveHk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIG15RmxhdChhcnIpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGFycik7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHByb2Nlc3NBcmd1bWVudHMoYXJndW1lbnRMaXN0KSB7XHJcbiAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IGFyZ3VtZW50TGlzdC5tYXAodG9XaXJlVmFsdWUpO1xyXG4gICAgICByZXR1cm4gW3Byb2Nlc3NlZC5tYXAoKHYpID0+IHZbMF0pLCBteUZsYXQocHJvY2Vzc2VkLm1hcCgodikgPT4gdlsxXSkpXTtcclxuICB9XHJcbiAgY29uc3QgdHJhbnNmZXJDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XHJcbiAgZnVuY3Rpb24gdHJhbnNmZXIob2JqLCB0cmFuc2ZlcnMpIHtcclxuICAgICAgdHJhbnNmZXJDYWNoZS5zZXQob2JqLCB0cmFuc2ZlcnMpO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICBmdW5jdGlvbiBwcm94eShvYmopIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob2JqLCB7IFtwcm94eU1hcmtlcl06IHRydWUgfSk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIHRvV2lyZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGhhbmRsZXJdIG9mIHRyYW5zZmVySGFuZGxlcnMpIHtcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmNhbkhhbmRsZSh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBbc2VyaWFsaXplZFZhbHVlLCB0cmFuc2ZlcmFibGVzXSA9IGhhbmRsZXIuc2VyaWFsaXplKHZhbHVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkhBTkRMRVJcIiAvKiBIQU5ETEVSICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkVmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRyYW5zZmVyYWJsZXMsXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFwiUkFXXCIgLyogUkFXICovLFxyXG4gICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRyYW5zZmVyQ2FjaGUuZ2V0KHZhbHVlKSB8fCBbXSxcclxuICAgICAgXTtcclxuICB9XHJcbiAgZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSh2YWx1ZSkge1xyXG4gICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJIQU5ETEVSXCIgLyogSEFORExFUiAqLzpcclxuICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJIYW5kbGVycy5nZXQodmFsdWUubmFtZSkuZGVzZXJpYWxpemUodmFsdWUudmFsdWUpO1xyXG4gICAgICAgICAgY2FzZSBcIlJBV1wiIC8qIFJBVyAqLzpcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgZnVuY3Rpb24gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZShlcCwgbXNnLCB0cmFuc2ZlcnMpIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpZCA9IGdlbmVyYXRlVVVJRCgpO1xyXG4gICAgICAgICAgZXAuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgZnVuY3Rpb24gbChldikge1xyXG4gICAgICAgICAgICAgIGlmICghZXYuZGF0YSB8fCAhZXYuZGF0YS5pZCB8fCBldi5kYXRhLmlkICE9PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGwpO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoZXYuZGF0YSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChlcC5zdGFydCkge1xyXG4gICAgICAgICAgICAgIGVwLnN0YXJ0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlcC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHsgaWQgfSwgbXNnKSwgdHJhbnNmZXJzKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheSg0KVxyXG4gICAgICAgICAgLmZpbGwoMClcclxuICAgICAgICAgIC5tYXAoKCkgPT4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSlcclxuICAgICAgICAgIC5qb2luKFwiLVwiKTtcclxuICB9XG4gIC8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbWxpbmsubWpzLm1hcFxuXG4gIC8vIENvbnN0YW50c1xuICBjb25zdCBVUkxfQ0ROX1JPT1QgPSBcImh0dHBzOi8vY2RuLmJpb3dhc20uY29tL3YyXCI7XG4gIGNvbnN0IENPTkZJR19ERUZBVUxUUyA9IHtcbiAgXHQvLyBCaW93YXNtIENETiBVUkxzXG4gIFx0dXJsQ0ROOiBVUkxfQ0ROX1JPT1QsXG4gIFx0Ly8gR2V0IHRoZSBXb3JrZXIgY29kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IEFpb2xpIHZlcnNpb25cbiAgXHR1cmxBaW9saTogYCR7VVJMX0NETl9ST09UfS9haW9saS8ke3BrZy52ZXJzaW9ufS9haW9saS53b3JrZXIuanNgLFxuICBcdC8vIFdoZXJlIHdlIGNhbiBmaW5kIHRoZSBiYXNlIGJpb3dhc20gbW9kdWxlIChvbmx5IG1vZGlmeSB0aGlzIGZvciBsb2NhbCBkZXZlbG9wbWVudClcbiAgXHR1cmxCYXNlTW9kdWxlOiBudWxsLFxuXG4gIFx0Ly8gRm9sZGVyIHRvIHVzZSBmb3IgbW91bnRpbmcgdGhlIHNoYXJlZCBmaWxlc3lzdGVtXG4gIFx0ZGlyU2hhcmVkOiBcIi9zaGFyZWRcIixcbiAgXHQvLyBGb2xkZXIgdG8gdXNlIGZvciBtb3VudGluZyBGaWxlL0Jsb2Igb2JqZWN0cyB0byB0aGUgdmlydHVhbCBmaWxlIHN5c3RlbVxuICBcdGRpck1vdW50ZWQ6IFwiL21udFwiLFxuICBcdC8vIEZvbGRlciB0byB1c2UgZm9yIHN5bWxpbmtzIChiYXNpY2FsbHksIHdlIG1ha2UgYSBzeW1saW5rIHRvIGVhY2ggZmlsZSBtb3VudGVkIG9uIFdPUktFUkZTXG4gIFx0Ly8gc28gdGhhdCBvcGVyYXRpb25zIGxpa2UgXCJzYW10b29scyBpbmRleFwiIGRvbid0IGNyYXNoIGR1ZSB0byB0aGUgcmVhZC1vbmx5IG5hdHVyZSBvZiBXT1JLRVJTKS5cbiAgXHQvLyBBbHNvIG1vdW50IFVSTHMgbGF6aWx5IGluIHRoYXQgZm9sZGVyLlxuICBcdGRpckRhdGE6IFwiL2RhdGFcIixcbiAgXHQvLyBJbnRlcmxlYXZlIHN0ZG91dC9zdGRlcnIuIElmIHNldCB0byBmYWxzZSwgYC5leGVjKClgIHJldHVybnMgYW4gb2JqZWN0IHsgXCJzdGRvdXRcIjogPHRleHQ+LCBcInN0ZGVyclwiOiA8dGV4dD4gfVxuICBcdHByaW50SW50ZXJsZWF2ZWQ6IHRydWUsXG5cbiAgXHQvLyBDYWxsYmFjayBmdW5jdGlvbiB0byBydW4gd2hlbmV2ZXIgd2UgcmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgV2ViV29ya2VyIHdpdGggcGF5bG9hZCB7IHR5cGU6IFwiYmlvd2FzbVwiLCB2YWx1ZTogLi4uIH0uXG4gIFx0Ly8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYmlvd2FzbS9iaW93YXNtL3RyZWUvbWFpbi90b29scy9iaHRzbmU+IGZvciBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIGNhbiBiZSB1c2VkIHRvIHNlbmQgcmVndWxhciB1cGRhdGVzXG4gIFx0Ly8gYmFjayB0byB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGNhbGxNYWluKCkgaXMgZG9uZSBydW5uaW5nLlxuICBcdGNhbGxiYWNrOiBudWxsLFxuXG4gIFx0Ly8gRGVidWdnaW5nXG4gIFx0ZGVidWc6IGZhbHNlLFxuICBcdGVudjogXCJwcmRcIlxuICB9O1xuXG4gIC8vIENsYXNzOiAxIG9iamVjdCA9IDEgd29ya2VyOyB1c2VyIGNhbiBkZWNpZGUgaWYgdGhleSB3YW50IHRvb2xzIHJ1bm5pbmcgaW4gc2VwYXJhdGUgdGhyZWFkcyBvciBhbGwgb2YgdGhlbSBpbiBvbmVcbiAgY2xhc3MgQWlvbGlcbiAge1xuICBcdGNvbnN0cnVjdG9yKHRvb2xzLCBjb25maWc9e30pXG4gIFx0e1xuICBcdFx0aWYodG9vbHMgPT0gbnVsbClcbiAgXHRcdFx0dGhyb3cgXCJFeHBlY3RpbmcgYXJyYXkgb2YgdG9vbHMgYXMgaW5wdXQgdG8gQWlvbGkgY29uc3RydWN0b3IuXCI7XG5cbiAgXHRcdC8vIFBhcnNlIHVzZXIgaW5wdXRcbiAgXHRcdGlmKCFBcnJheS5pc0FycmF5KHRvb2xzKSlcbiAgXHRcdFx0dG9vbHMgPSBbIHRvb2xzIF07XG4gIFx0XHQvLyBPdmVyd3JpdGUgZGVmYXVsdCBjb25maWcgaWYgc3BlY2lmaWVkXG4gIFx0XHRjb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBDT05GSUdfREVGQVVMVFMsIGNvbmZpZyk7XG4gIFx0XHQvLyBGb3IgY29udmVuaWVuY2UsIHN1cHBvcnQgXCI8dG9vbD4vPHZlcnNpb24+XCIgb3IgXCI8dG9vbD4vPHByb2dyYW0+Lzx2ZXJzaW9uPlwiIGluc3RlYWQgb2Ygb2JqZWN0IGNvbmZpZ1xuICBcdFx0dG9vbHMgPSB0b29scy5tYXAodGhpcy5fcGFyc2VUb29sKTtcbiAgXHRcdC8vIElmIHRlc3Rpbmcgd2l0aCBkaWZmZXJlbnQgZW52aXJvbm1lbnQgZS5nLiBjZG4tc3RnLmJpb3dhc20uY29tXG4gIFx0XHRpZihjb25maWcuZW52ICE9IFwicHJkXCIpIHtcbiAgXHRcdFx0Y29uZmlnLnVybENETiA9IGNvbmZpZy51cmxDRE4ucmVwbGFjZShcImNkblwiLCBgY2RuLSR7Y29uZmlnLmVudn1gKTtcbiAgXHRcdFx0Y29uZmlnLnVybEFpb2xpID0gY29uZmlnLnVybEFpb2xpLnJlcGxhY2UoXCJjZG5cIiwgYGNkbi0ke2NvbmZpZy5lbnZ9YCk7XG4gIFx0XHR9XG5cbiAgXHRcdC8vIEFkZCBiaW93YXNtIGJhc2UgbW9kdWxlIHRvIGxpc3Qgb2YgdG9vbHMgdG8gaW5pdGlhbGl6ZSAobmVlZCB0aGlzIGZvciB0aGUgc2hhcmVkIHZpcnR1YWwgZmlsZXN5c3RlbSlcbiAgXHRcdHRvb2xzID0gW3tcbiAgXHRcdFx0dG9vbDogXCJiYXNlXCIsXG4gIFx0XHRcdHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICBcdFx0XHR1cmxQcmVmaXg6IGNvbmZpZy51cmxCYXNlTW9kdWxlXG4gIFx0XHR9LCAuLi50b29sc107XG5cbiAgXHRcdC8vIFNldCBzdGF0ZVxuICBcdFx0dGhpcy50b29scyA9IHRvb2xzO1xuICBcdFx0dGhpcy5jb25maWcgPSBjb25maWc7XG5cbiAgXHRcdC8vIEhhbmRsZSBjYWxsYmFjayAoZGVsZXRlIGl0IGJlY2F1c2Ugd2UgY2FuJ3Qgc2VuZCBhIGZ1bmN0aW9uIHRvIHRoZSBXZWJXb3JrZXIpXG4gIFx0XHRpZih0aGlzLmNvbmZpZy5jYWxsYmFjayAhPSBudWxsKVxuICBcdFx0XHR0aGlzLmNhbGxiYWNrID0gdGhpcy5jb25maWcuY2FsbGJhY2s7XG4gIFx0XHRkZWxldGUgdGhpcy5jb25maWcuY2FsbGJhY2s7XG5cbiAgXHRcdHJldHVybiB0aGlzLmluaXQoKTtcbiAgXHR9XG5cbiAgXHQvLyBJbml0aWFsaXplIHRoZSBXZWJXb3JrZXIgYW5kIHRoZSBXZWJBc3NlbWJseSBtb2R1bGVzIHdpdGhpbiBpdFxuICBcdGFzeW5jIGluaXQoKSB7XG4gIFx0XHQvLyBOb3RlOiBXZSBjYW4gb25seSBjcmVhdGUgYSBXZWJXb3JrZXIgdXNpbmcgYSBVUkwgdGhhdCBoYXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBhcHAgcnVubmluZyBpdCwgaS5lLiB3ZVxuICBcdFx0Ly8gY2FuJ3QgZG8gYG5ldyBXb3JrZXIoXCJodHRwczovL2Nkbi5iaW93YXNtLmNvbS92Mi8uLi5cIilgLCBzbyBpbnN0ZWFkIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGNvbnRlbnRzIG9mIHRoYXRcbiAgXHRcdC8vIFVSTCBmaXJzdCwgYW5kIHRoZW4gY3JlYXRlIHRoZSBXZWJXb3JrZXIuIFNlZSA8aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzYwMDE1ODk4Pi5cbiAgXHRcdGNvbnN0IG1vZHVsZUpTID0gYXdhaXQgKGF3YWl0IGZldGNoKHRoaXMuY29uZmlnLnVybEFpb2xpKSkudGV4dCgpO1xuICBcdFx0Y29uc3QgbW9kdWxlQmxvYiA9IG5ldyBCbG9iKFttb2R1bGVKU10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSk7XG5cbiAgXHRcdC8vIENyZWF0ZSB0aGUgV2ViV29ya2VyXG4gIFx0XHRjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwobW9kdWxlQmxvYikpO1xuICBcdFx0Ly8gTGlzdGVuIGZvciBcImJpb3dhc21cIiBtZXNzYWdlcyBmcm9tIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGlmKHRoaXMuY2FsbGJhY2spXG4gIFx0XHRcdHdvcmtlci5vbm1lc3NhZ2UgPSBlID0+IHtcbiAgXHRcdFx0XHRpZihlLmRhdGEudHlwZSA9PSBcImJpb3dhc21cIilcbiAgXHRcdFx0XHRcdHRoaXMuY2FsbGJhY2soZS5kYXRhLnZhbHVlKTtcbiAgXHRcdFx0fTtcblxuICBcdFx0Y29uc3QgYWlvbGkgPSB3cmFwKHdvcmtlcik7XG4gIFx0XHRhaW9saS50b29scyA9IHRoaXMudG9vbHM7XG4gIFx0XHRhaW9saS5jb25maWcgPSB0aGlzLmNvbmZpZztcblxuICBcdFx0Ly8gSW5pdGlhbGl6ZSB0aGUgdG9vbHMgaW5zaWRlIHRoZSBXZWJXb3JrZXJcbiAgXHRcdGF3YWl0IGFpb2xpLmluaXQoKTtcblxuICBcdFx0cmV0dXJuIGFpb2xpO1xuICBcdH1cblxuICBcdC8vIFBhcnNlIFwiPHRvb2w+Lzx2ZXJzaW9uPlwiIGFuZCBcIjx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+XCIgaW50byB7IFwidG9vbFwiOiA8dG9vbD4sIFwicHJvZ3JhbVwiOiA8cHJvZ3JhbT4sIFwidmVyc2lvblwiOiA8dmVyc2lvbj4gfVxuICBcdF9wYXJzZVRvb2wodG9vbClcbiAgXHR7XG4gIFx0XHQvLyBJZiBub3QgYSBzdHJpbmcsIGxlYXZlIGl0IGFzIGlzXG4gIFx0XHRpZih0eXBlb2YgdG9vbCAhPT0gXCJzdHJpbmdcIilcbiAgXHRcdFx0cmV0dXJuIHRvb2w7XG5cbiAgXHRcdC8vIFN1cHBvcnQgXCI8dG9vbD4vPHZlcnNpb24+XCIgYW5kIFwiPHRvb2w+Lzxwcm9ncmFtPi88dmVyc2lvbj5cIlxuICBcdFx0Y29uc3QgdG9vbFNwbGl0ID0gdG9vbC5zcGxpdChcIi9cIik7XG4gIFx0XHRpZih0b29sU3BsaXQubGVuZ3RoICE9IDIgJiYgdG9vbFNwbGl0Lmxlbmd0aCAhPSAzKVxuICBcdFx0XHR0aHJvdyBcIkV4cGVjdGluZyAnPHRvb2w+Lzx2ZXJzaW9uPicgb3IgJzx0b29sPi88cHJvZ3JhbT4vPHZlcnNpb24+J1wiO1xuXG4gIFx0XHRyZXR1cm4ge1xuICBcdFx0XHR0b29sOiB0b29sU3BsaXRbMF0sXG4gIFx0XHRcdHByb2dyYW06IHRvb2xTcGxpdC5sZW5ndGggPT0gMyA/IHRvb2xTcGxpdFsxXSA6IHRvb2xTcGxpdFswXSxcbiAgXHRcdFx0dmVyc2lvbjogdG9vbFNwbGl0W3Rvb2xTcGxpdC5sZW5ndGggLSAxXVxuICBcdFx0fTtcbiAgXHR9XG4gIH1cblxuICByZXR1cm4gQWlvbGk7XG5cbn0pKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1haW9saS5qcy5tYXBcbiIsImltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgZ2V0IExlc2soKSB7XG4gICAgICAgIGlmICh0aGlzLmxlc2sgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5sZXNrID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snRycsICdBJywgJ1MnLCAnVCddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICAgICAgW1snQycsICdWJywgJ0knLCAnTCcsICdQJywgJ0YnLCAnWScsICdNJywgJ1cnXSwgJ2FsbF9ncmVlbiddLFxuICAgICAgICAgICAgICAgIFtbJ04nLCAnUScsICdIJ10sICdtYWdlbnRhJ10sXG4gICAgICAgICAgICAgICAgW1snRCcsICdFJ10sICdyZWQnXSxcbiAgICAgICAgICAgICAgICBbWydLJywgJ1InXSwgJ2FsbF9ibHVlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sZXNrO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IEdyb2tHcm91cHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmdyb2tHcm91cHMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5ncm9rR3JvdXBzID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgICAgICAgICAgW1snQycsICdVJ10sICd5ZWxsb3cnXSxcbiAgICAgICAgICAgICAgICBbWydHJywgJ1AnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snUicsICdIJywgJ0snXSwgJ2xpZ2h0X2JsdWUnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ2RhcmtfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ1MnLCAnVCcsICdOJywgJ1EnXSwgJ29yYW5nZSddLFxuICAgICAgICAgICAgXSwgZmFsc2UsIEFtaW5vYWNpZHNQYWxldHRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3Jva0dyb3VwcztcbiAgICB9XG4gICAgc3RhdGljIGdldCBSYXNNb2woKSB7XG4gICAgICAgIGlmICh0aGlzLnJhc01vbCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLnJhc01vbCA9IG5ldyBBbWlub2FjaWRzUGFsZXR0ZXMoe1xuICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9hY2Nlcy5lbnMtbHlvbi5mci9iaW90aWMvcmFzdG9wL2hlbHAvY29sb3VyLmh0bVxuICAgICAgICAgICAgICAgICdEJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdFJzogJyNFNjBBMEEnLFxuICAgICAgICAgICAgICAgICdDJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdNJzogJyNFNkU2MDAnLFxuICAgICAgICAgICAgICAgICdLJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdSJzogJyMxNDVBRkYnLFxuICAgICAgICAgICAgICAgICdTJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdUJzogJyNGQTk2MDAnLFxuICAgICAgICAgICAgICAgICdGJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdZJzogJyMzMjMyQUEnLFxuICAgICAgICAgICAgICAgICdOJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdRJzogJyMwMERDREMnLFxuICAgICAgICAgICAgICAgICdHJzogJyNFQkVCRUInLFxuICAgICAgICAgICAgICAgICdMJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdWJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdJJzogJyMwRjgyMEYnLFxuICAgICAgICAgICAgICAgICdBJzogJyNDOEM4QzgnLFxuICAgICAgICAgICAgICAgICdXJzogJyNCNDVBQjQnLFxuICAgICAgICAgICAgICAgICdIJzogJyM4MjgyRDInLFxuICAgICAgICAgICAgICAgICdQJzogJyNEQzk2ODInLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnI0JFQTA2RScsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yYXNNb2w7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgICAgICAgY2FzZSAnZ3Jvayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgY2FzZSAnbGVzayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBkaXZpZGVkIGFtaW5vIGFjaWQgd2l0aCBpdHMgY29udGVudCBpbiB0aGUgYnJhY2tldCwgaWYgdGhlIGNvbnRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgLy9jb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gQUFQYWxldHRlcy5Hcm9rR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSB0aGlzLmdldElubmVyT3V0ZXIobW9ub21lcik7XG4gICAgICAgIG91dGVyTW9ub21lciA9IChvdXRlck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke291dGVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogb3V0ZXJNb25vbWVyKTtcbiAgICAgICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMSB8fCBtb25vbWVyWzFdID09ICcoJykge1xuICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2EgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDAsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAzIHx8IG1vbm9tZXJbM10gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDNdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSA0IHx8IG1vbm9tZXJbNF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygxLCAzKV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1JVRkJSU3hMUVVGTExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRUUVVNdlFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlNVMHNUVUZCVFN4TFFVRkxMRlZCUVZVN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRemxDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dG5Ra0ZEYWtNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETzJkQ1FVTnVRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZGtRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1dVRkJXU3hEUVVGRE8yZENRVU12UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZGQlFWRXNRMEZCUXp0aFFVTnFReXhGUVVGRkxFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xTkJReTlDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wbEJRM3BDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RFFVRkRPMmRDUVVOdVF5eDVSRUZCZVVRN1owSkJRM3BFTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRkZCUVZFc1JVRkJSU3hUUVVGVE8yRkJRM0JDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRUxFMUJRVTBzVDBGQlR5eFZRVUZWTzBsQmNVZGtMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zVTBGQmFVSXNUVUZCVFR0UlFVTTVReXhSUVVGUkxFMUJRVTBzUlVGQlJUdFpRVU5vUWl4TFFVRkxMRTFCUVUwN1owSkJRMVFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRGRrTXNTMEZCU3l4TlFVRk5PMmRDUVVOVUxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRMnBETzJkQ1FVTkZMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZVVKQlFYbENMRTFCUVUwc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0VFFVTnlSVHRKUVVOSUxFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJVenRSUVVOdVF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRhRUlzU1VGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJZc1NVRkJTU3hMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJXWXNTMEZCU3l4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGNFSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1IwRkJSenRuUWtGRFlpeFBRVUZQTEVWQlFVVXNRMEZCUXp0cFFrRkRVQ3hKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITzJkQ1FVTnNRaXhQUVVGUExFVkJRVVVzUTBGQlF6dHBRa0ZEVUN4SlFVRkpMRTlCUVU4N1owSkJRMlFzUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXpzN1owSkJSV1FzUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXp0VFFVTnFRanRSUVVWRUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVOb1JTeERRVUZETzBsQlJVMHNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhWUVVGclFpeEZRVUZGTEVWQlFVVXNVMEZCYVVJc1RVRkJUVHM3VVVGRGVrVXNjMFJCUVhORU8xRkJRM1JFTEUxQlFVMHNiVUpCUVcxQ0xFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVOd1JDeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRmxCUVZrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRMMFFzV1VGQldTeEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRE0wWXNXVUZCV1N4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdVVUZGTTBZc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTzFsQlF6VkRMRTFCUVUwc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl3d1EwRkJSU3hYUVVGWExFVkJRVWNzUTBGQlF6dFpRVU42UXl4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPMmRDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaEVPMUZCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVVVzU1VGQlNTeHRRa0ZCYlVJc1JVRkJSVHRaUVVNelJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVN1owSkJRelZETEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5d3dRMEZCUlN4WFFVRlhMRVZCUVVjc1EwRkJRenRuUWtGRGVrTXNUMEZCVHl4TFFVRkxMRWxCUVVrc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0dlFrRkRia01zUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTXhSQ3hEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVXNXVUZCV1N4RlFVRkZMRmxCUVZrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU40UkR0VFFVTkdPMUZCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTzFsQlF5OURMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVONFJDeFBRVUZQTEV0QlFVc3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF5eERRVUZETzI5Q1FVTnVReXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlF6RkVMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRM2hFTzFOQlEwWTdVVUZGUkN4SlFVRkpMRU5CUVVFc1RVRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETERCRFFVRkZMRmRCUVZjc1JVRkJSU3hMUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0WlFVTXpReXhKUVVGSkxFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVTdaMEpCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0dlFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPM2RDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdkMEpCUXpGRUxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSVUZCUlN4WlFVRlpMRVZCUVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJsQ1FVTjRSRHRoUVVOR08xTkJRMFk3VVVGRlJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpsRUxFTkJRVU03TzBGQmNFeGxMR3RDUVVGUExFZEJRVmNzV1VGQldTeERRVUZETzBGQlJTOUNMRzFEUVVGM1FpeEhRVUZYTERaQ1FVRTJRaXhEUVVGRE8wRkJSVEZGTEhsQ1FVRmpMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTTdRVUZGTjBJc1owSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEZGQlFWRTdTVUZEWWl4SFFVRkhMRVZCUVVVc1pVRkJaVHRKUVVOd1FpeEhRVUZITEVWQlFVVXNWMEZCVnp0SlFVTm9RaXhIUVVGSExFVkJRVVVzWlVGQlpUdEpRVU53UWl4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNaVUZCWlR0SlFVTndRaXhIUVVGSExFVkJRVVVzVTBGQlV6dEpRVU5rTEVkQlFVY3NSVUZCUlN4UlFVRlJPMGxCUTJJc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNWMEZCVnp0SlFVTm9RaXhIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4UlFVRlJPMGxCUTJJc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNXVUZCV1R0SlFVTnFRaXhIUVVGSExFVkJRVVVzV1VGQldUdEpRVU5xUWl4SFFVRkhMRVZCUVVVc1dVRkJXVHRKUVVOcVFpeEhRVUZITEVWQlFVVXNWMEZCVnp0RFFVTnFRaXhEUVVGRE8wRkJSVmtzYlVKQlFWRXNSMEZCY1VJN1NVRkRla01zUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc2MwSkJRWE5DTzBsQlF6TkNMRWRCUVVjc1JVRkJSU3d5UWtGQk1rSTdTVUZEYUVNc1IwRkJSeXhGUVVGRkxHTkJRV003U1VGRGJrSXNSMEZCUnl4RlFVRkZMSGxDUVVGNVFqdEpRVU01UWl4SFFVRkhMRVZCUVVVc2VVSkJRWGxDTzBsQlF6bENMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzZDBKQlFYZENPMGxCUXpkQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNNRUpCUVRCQ08wbEJReTlDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3hwUWtGQmFVSTdTVUZEZEVJc1IwRkJSeXhGUVVGRkxHOURRVUZ2UXp0SlFVTjZReXhIUVVGSExFVkJRVVVzTUVKQlFUQkNPMGxCUXk5Q0xFZEJRVWNzUlVGQlJTeG5Ra0ZCWjBJN1NVRkRja0lzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanREUVVOMlFpeERRVUZETzBGQlJWa3NORUpCUVdsQ0xFZEJRWEZDTzBsQlEyeEVMRWRCUVVjc1JVRkJSU3hMUVVGTE8wbEJRMVlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNjMEpCUVhOQ08wbEJRek5DTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxHOUNRVUZ2UWp0SlFVTjZRaXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeHRRa0ZCYlVJN1NVRkRlRUlzUjBGQlJ5eEZRVUZGTEcxQ1FVRnRRanRKUVVONFFpeEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGpRVUZqTzBsQlEyNUNMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzWjBKQlFXZENPMGxCUTNKQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hoUVVGaE8wbEJRMnhDTEVkQlFVY3NSVUZCUlN3clFrRkJLMEk3U1VGRGNFTXNSMEZCUnl4RlFVRkZMSEZDUVVGeFFqdEpRVU14UWl4SFFVRkhMRVZCUVVVc1YwRkJWenRKUVVOb1FpeEhRVUZITEVWQlFVVXNXVUZCV1R0RFFVTnNRaXhEUVVGRE8wRkJSVVk3UjBGRFJ6dEJRVU5YTEhOQ1FVRlhMRWRCUVhGQ08wbEJRelZETEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3UTBGRFdDeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYmx4dWFXMXdiM0owSUh0VGRISnBibWRFYVdOMGFXOXVZWEo1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR3hsYzJzNklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1RHVnpheWdwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCcFppQW9kR2hwY3k1c1pYTnJJRDA5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViR1Z6YXlBOUlIUm9hWE11YldGclpWQmhiR1YwZEdVb1cxeHVJQ0FnSUNBZ0lDQmJXeWRISnl3Z0owRW5MQ0FuVXljc0lDZFVKMTBzSUNkdmNtRnVaMlVuWFN4Y2JpQWdJQ0FnSUNBZ1cxc25ReWNzSUNkV0p5d2dKMGtuTENBblRDY3NJQ2RRSnl3Z0owWW5MQ0FuV1Njc0lDZE5KeXdnSjFjblhTd2dKMkZzYkY5bmNtVmxiaWRkTEZ4dUlDQWdJQ0FnSUNCYld5ZE9KeXdnSjFFbkxDQW5TQ2RkTENBbmJXRm5aVzUwWVNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRFSnl3Z0owVW5YU3dnSjNKbFpDZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkTEp5d2dKMUluWFN3Z0oyRnNiRjlpYkhWbEoxMHNYRzRnSUNBZ0lDQmRMQ0JtWVd4elpTd2dRVzFwYm05aFkybGtjMUJoYkdWMGRHVnpLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXViR1Z6YXp0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2MzUmhkR2xqSUdkeWIydEhjbTkxY0hNNklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1IzSnZhMGR5YjNWd2N5Z3BPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVuY205clIzSnZkWEJ6SUQwOVBTQjJiMmxrSURBcElIdGNiaUFnSUNBZ0lIUm9hWE11WjNKdmEwZHliM1Z3Y3lBOUlIUm9hWE11YldGclpWQmhiR1YwZEdVb1cxeHVJQ0FnSUNBZ0lDQmJXeWRESnl3Z0oxVW5YU3dnSjNsbGJHeHZkeWRkTEZ4dUlDQWdJQ0FnSUNCYld5ZEhKeXdnSjFBblhTd2dKM0psWkNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRCSnl3Z0oxWW5MQ0FuU1Njc0lDZE1KeXdnSjAwbkxDQW5SaWNzSUNkWkp5d2dKMWNuWFN3Z0oyRnNiRjluY21WbGJpZGRMRnh1SUNBZ0lDQWdJQ0JiV3lkU0p5d2dKMGduTENBblN5ZGRMQ0FuYkdsbmFIUmZZbXgxWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRFSnl3Z0owVW5YU3dnSjJSaGNtdGZZbXgxWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRUSnl3Z0oxUW5MQ0FuVGljc0lDZFJKMTBzSUNkdmNtRnVaMlVuWFN4Y2JpQWdJQ0FnSUYwc0lHWmhiSE5sTENCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bmNtOXJSM0p2ZFhCek8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2NtRnpUVzlzT2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUZKaGMwMXZiQ2dwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVlYTk5iMndnUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV5WVhOTmIyd2dQU0J1WlhjZ1FXMXBibTloWTJsa2MxQmhiR1YwZEdWektIdGNiaUFnSUNBZ0lDQWdMeThnYUhSMGNEb3ZMMkZqWTJWekxtVnVjeTFzZVc5dUxtWnlMMkpwYjNScFl5OXlZWE4wYjNBdmFHVnNjQzlqYjJ4dmRYSXVhSFJ0WEc0Z0lDQWdJQ0FnSUNkRUp6b2dKeU5GTmpCQk1FRW5MQ0F2THlCaGMzQXNJR0Z6Y0dGeWRHbGpJR0ZqYVdRc0lHRnpjRnh1SUNBZ0lDQWdJQ0FuUlNjNklDY2pSVFl3UVRCQkp5d2dMeThnWjJ4MUxDQm5iSFYwWVcxcFl5QmhZMmxrWEc0Z0lDQWdJQ0FnSUNkREp6b2dKeU5GTmtVMk1EQW5MQ0F2THlCamVYTXNJR041YzNSbGFXNWxYRzRnSUNBZ0lDQWdJQ2ROSnpvZ0p5TkZOa1UyTURBbkxDQXZMeUJ0WlhRc0lHMWxkR2hwYjI1cGJtVmNiaUFnSUNBZ0lDQWdKMHNuT2lBbkl6RTBOVUZHUmljc0lDOHZJR3g1Y3l3Z2JIbHphVzVsWEc0Z0lDQWdJQ0FnSUNkU0p6b2dKeU14TkRWQlJrWW5MQ0F2THlCaGNtY3NJR0Z5WjJsdWFXNWxYRzRnSUNBZ0lDQWdJQ2RUSnpvZ0p5TkdRVGsyTURBbkxDQXZMeUJ6WlhJc0lITmxjbWx1WlZ4dUlDQWdJQ0FnSUNBblZDYzZJQ2NqUmtFNU5qQXdKeXdnTHk4Z2RHaHlMQ0IwYUhKbGIyNXBibVZjYmlBZ0lDQWdJQ0FnSjBZbk9pQW5Jek15TXpKQlFTY3NJQzh2SUhCb1pTd2djR2hsYm5sc1lXeGhibWx1WlZ4dUlDQWdJQ0FnSUNBbldTYzZJQ2NqTXpJek1rRkJKeXdnTHk4Z2RIbHlMQ0IwZVhKdmMybHVaVnh1SUNBZ0lDQWdJQ0FuVGljNklDY2pNREJFUTBSREp5d2dMeThnWVhOdUxDQmhjM0JoY21GbmFXNWxYRzRnSUNBZ0lDQWdJQ2RSSnpvZ0p5TXdNRVJEUkVNbkxDQXZMeUJuYkc0c0lHZHNkWFJoYldsdVpWeHVJQ0FnSUNBZ0lDQW5SeWM2SUNjalJVSkZRa1ZDSnl3Z0x5OGdaMng1TENCbmJIbGphVzVsWEc0Z0lDQWdJQ0FnSUNkTUp6b2dKeU13UmpneU1FWW5MQ0F2THlCc1pYVXNJR3hsZFdOcGJtVmNiaUFnSUNBZ0lDQWdKMVluT2lBbkl6QkdPREl3Umljc0lDOHZJSFpoYkN3Z2RtRnNhVzVsWEc0Z0lDQWdJQ0FnSUNkSkp6b2dKeU13UmpneU1FWW5MQ0F2THlCcGJHVXNJR2x6YjJ4bGRXTnBibVZjYmlBZ0lDQWdJQ0FnSjBFbk9pQW5JME00UXpoRE9DY3NJQzh2SUdGc1lTd2dZV3hoYm1sdVpWeHVJQ0FnSUNBZ0lDQW5WeWM2SUNjalFqUTFRVUkwSnl3Z0x5OGdkSEp3TENCMGNubHdkRzl3YUdGdVhHNGdJQ0FnSUNBZ0lDZElKem9nSnlNNE1qZ3lSREluTENBdkx5Qm9hWE1zSUdocGMzUnBaR2x1WlZ4dUlDQWdJQ0FnSUNBblVDYzZJQ2NqUkVNNU5qZ3lKeXdnTHk4Z2NISnZMQ0J3Y205c2FXNWxYRzRnSUNBZ0lDQWdJQ2R2ZEdobGNuTW5PaUFuSTBKRlFUQTJSU2NzWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11Y21GelRXOXNPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QkJiV2x1YjJGamFXUnpJSHRjYmlBZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUZObGJWUjVjR1U2SUhOMGNtbHVaeUE5SUNkQmJXbHViMkZqYVdSekp6dGNibHh1SUNCemRHRjBhV01nY21WaFpHOXViSGtnVTJWdFZIbHdaVTExYkhScGNHeGxRV3hwWjI1dFpXNTBPaUJ6ZEhKcGJtY2dQU0FuUVcxcGJtOWhZMmxrYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J6ZEdGMGFXTWdkVzVrWldacGJtVmtRMjlzYjNJZ1BTQW5jbWRpS0RFd01Dd3hNREFzTVRBd0tTYzdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJPWVcxbGN6b2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVTQTlJSHRjYmlBZ0lDQW5SeWM2SUNkSGJIbGphVzVsSnl4Y2JpQWdJQ0FuVENjNklDZE1aWFZqYVc1bEp5eGNiaUFnSUNBbldTYzZJQ2RVZVhKdmMybHVaU2NzWEc0Z0lDQWdKMU1uT2lBblUyVnlhVzVsSnl4Y2JpQWdJQ0FuUlNjNklDZEhiSFYwWVcxcFl5QmhZMmxrSnl4Y2JpQWdJQ0FuVVNjNklDZEhiSFYwWVcxcGJtVW5MRnh1SUNBZ0lDZEVKem9nSjBGemNHRnlkR2xqSUdGamFXUW5MRnh1SUNBZ0lDZE9Kem9nSjBGemNHRnlZV2RwYm1VbkxGeHVJQ0FnSUNkR0p6b2dKMUJvWlc1NWJHRnNZVzVwYm1VbkxGeHVJQ0FnSUNkQkp6b2dKMEZzWVc1cGJtVW5MRnh1SUNBZ0lDZExKem9nSjB4NWMybHVaU2NzWEc0Z0lDQWdKMUluT2lBblFYSm5hVzVwYm1VbkxGeHVJQ0FnSUNkSUp6b2dKMGhwYzNScFpHbHVaU2NzWEc0Z0lDQWdKME1uT2lBblEzbHpkR1ZwYm1VbkxGeHVJQ0FnSUNkV0p6b2dKMVpoYkdsdVpTY3NYRzRnSUNBZ0oxQW5PaUFuVUhKdmJHbHVaU2NzWEc0Z0lDQWdKMWNuT2lBblZISjVjSFJ2Y0doaGJpY3NYRzRnSUNBZ0owa25PaUFuU1hOdmJHVjFZMmx1WlNjc1hHNGdJQ0FnSjAwbk9pQW5UV1YwYUdsdmJtbHVaU2NzWEc0Z0lDQWdKMVFuT2lBblZHaHlaVzl1YVc1bEp5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFRkJVMjFwYkdWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEhKem9nSjA1RFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVENjNklDZE9XME5BU0Ywb1EwTW9ReWxES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMWtuT2lBblRrTW9RME14UFVORFBVTW9UeWxEUFVNeEtVTW9QVThwVHljc1hHNGdJQ0FnSjFNbk9pQW5Ua01vUTA4cFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuUlNjNklDZE9XME5BUUVoZEtFTkRReWhQS1QxUEtVTW9QVThwVHljc1hHNGdJQ0FnSjFFbk9pQW5UbHREUUVCSVhTaERRME1vVGlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkRUp6b2dKMDViUTBCQVNGMG9RME1vVHlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkT0p6b2dKMDViUTBCQVNGMG9RME1vVGlrOVR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkR0p6b2dKMDVES0VORE1UMURRejFEUXoxRE1TbERLRDFQS1U4bkxGeHVJQ0FnSUNkQkp6b2dKMDViUTBCSVhTaERLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owc25PaUFuVGtNb1EwTkRRMDRwUXlnOVR5bFBKeXhjYmlBZ0lDQW5VaWM2SUNkT1cwTkFTRjBvUTBORFRrTW9QVTRwUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RJSnpvZ0owNURLRU5ETVQxRFRqMURXMDVkTVNsREtEMVBLVThuTEZ4dUlDQWdJQ2RESnpvZ0owNWJRMEJBU0Ywb1ExTXBReWc5VHlsUEp5eGNiaUFnSUNBblZpYzZJQ2RPUXloREtFTXBReWxES0QxUEtVOG5MRnh1SUNBZ0lDZFFKem9nSjA0b1EwTkRNU2xETVVNb1BVOHBUeWNzWEc0Z0lDQWdKMWNuT2lBblRsdERRRUJJWFNoRFl6RmpNbU5qWTJOak1tNG9XMGhkS1dNeEtVTW9QVThwVHljc1hHNGdJQ0FnSjBrbk9pQW5UbHREUUVoZEtGdERRRWhkS0VNcFEwTXBReWc5VHlsUEp5eGNiaUFnSUNBblRTYzZJQ2RPUXloRFExTkRLVU1vUFU4cFR5Y3NYRzRnSUNBZ0oxUW5PaUFuVGtNb1F5aFBLVU1wUXlnOVR5bFBKeXhjYmlBZ2ZUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRUZCVTIxcGJHVnpWSEoxYm1OaGRHVmtPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RISnpvZ0p5cERLaWNzWEc0Z0lDQWdKMHduT2lBblEwTW9ReWxEVzBOQVNGMG9LaWtxSnl4Y2JpQWdJQ0FuV1NjNklDZERNVDFEUXlnOVEwTTlRekZEUXlncUtTb3BUeWNzWEc0Z0lDQWdKMU1uT2lBblQwTkRLQ29wUXlvbkxGeHVJQ0FnSUNkRkp6b2dKeXBiUTBCQVNGMG9RME5ES0U4cFBVOHBLaWNzWEc0Z0lDQWdKMUVuT2lBbktrNWJRMEJBU0Ywb1EwTkRLRTRwUFU4cEtpY3NYRzRnSUNBZ0owUW5PaUFuS2x0RFFFQklYU2hEUXloUEtUMVBLU29uTEZ4dUlDQWdJQ2RPSnpvZ0p5cGJRMEJBU0Ywb1EwTW9UaWs5VHlrcUp5eGNiaUFnSUNBblJpYzZJQ2RETVQxRFF6MURLRU05UXpFcFEwTW9LaWtxSnl4Y2JpQWdJQ0FuUVNjNklDZERXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5TeWM2SUNkREtFTkRUaWxEUXlncUtTb25MRnh1SUNBZ0lDZFNKem9nSnlwYlEwQklYU2hEUTBOT1F5ZzlUaWxES1NvbkxGeHVJQ0FnSUNkSUp6b2dKME14UFVNb1RrTTlUakVwUTBNb0tpa3FKeXhjYmlBZ0lDQW5ReWM2SUNkREtGdERRRUJJWFNncUtTb3BVeWNzWEc0Z0lDQWdKMVluT2lBblEwTW9ReWxES0NvcEtpY3NYRzRnSUNBZ0oxQW5PaUFuUXpGRFEwNG9LaWxETVNvbkxGeHVJQ0FnSUNkWEp6b2dKeXBiUTBCQVNGMG9RMk14WXpKalkyTmpZekp1S0Z0SVhTbGpNU2txSnl4Y2JpQWdJQ0FuU1NjNklDZERRMXREUUVoZEtFTXBXME5BU0Ywb0tpa3FKeXhjYmlBZ0lDQW5UU2M2SUNkRFUwTkRReWdxS1NvbkxGeHVJQ0FnSUNkVUp6b2dKME5ES0U4cFF5Z3FLU29uTEZ4dUlDQjlPMXh1WEc0Z0lDOHFLaUJVVDBSUE9pQkdkV3hzUDF4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJCUVVaMWJHeE9ZVzFsY3pvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblFXeGhKem9nSjBFbkxGeHVJQ0FnSUNkQmNtY25PaUFuVWljc1hHNGdJQ0FnSjBGemJpYzZJQ2RPSnl4Y2JpQWdJQ0FuUVhOd0p6b2dKMFFuTEZ4dUlDQWdJQ2REZVhNbk9pQW5ReWNzWEc0Z0lDQWdKMGRzYmljNklDZFJKeXhjYmlBZ0lDQW5SMngxSnpvZ0owVW5MRnh1SUNBZ0lDZEhiSGtuT2lBblJ5Y3NYRzRnSUNBZ0owaHBjeWM2SUNkSUp5eGNiaUFnSUNBblNXeGxKem9nSjBrbkxGeHVJQ0FnSUNkTVpYVW5PaUFuVENjc1hHNGdJQ0FnSjB4NWN5YzZJQ2RMSnl4Y2JpQWdJQ0FuVFdWMEp6b2dKMDBuTEZ4dUlDQWdJQ2RRYUdVbk9pQW5SaWNzWEc0Z0lDQWdKMUJ5YnljNklDZFFKeXhjYmlBZ0lDQW5VMlZ5SnpvZ0oxTW5MRnh1SUNBZ0lDZFVhSEluT2lBblZDY3NYRzRnSUNBZ0oxUnljQ2M2SUNkWEp5eGNiaUFnSUNBblZIbHlKem9nSjFrbkxGeHVJQ0FnSUNkV1lXd25PaUFuVmljc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUlFZV3hsZEhSbEtITmphR1Z0WlRvZ2MzUnlhVzVuSUQwZ0oyZHliMnNuS1RvZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUNBZ2MzZHBkR05vSUNoelkyaGxiV1VwSUh0Y2JpQWdJQ0JqWVhObElDZG5jbTlySnpwY2JpQWdJQ0FnSUhKbGRIVnliaUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11UjNKdmEwZHliM1Z3Y3p0Y2JpQWdJQ0JqWVhObElDZHNaWE5ySnpwY2JpQWdJQ0FnSUhKbGRIVnliaUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11VEdWemF6dGNiaUFnSUNCa1pXWmhkV3gwT2x4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JEYUdWdFVHRnNaWFIwWlRvZ2MyTm9aVzFsSUZ4Y1lDUjdjMk5vWlcxbGZWeGNZQ0JrYjJWeklHNXZkQ0JsZUdsemRHQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJTWlhSMWNtNXpJR1JwZG1sa1pXUWdZVzFwYm04Z1lXTnBaQ0IzYVhSb0lHbDBjeUJqYjI1MFpXNTBJR2x1SUhSb1pTQmljbUZqYTJWMExDQnBaaUIwYUdVZ1kyOXVkR1Z1ZENCcGN5QnVkVzFpWlhJc0lIUm9aVzRnYVhSeklHOXRhWFIwWldSY2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTWdjbUYzSUdGdGFXNXZYRzRnSUNBcUlFQnlaWFIxY200Z2UxdHpkSEpwYm1jc0lITjBjbWx1WjExOUlHOTFkR1Z5SUdGdVpDQnBibTVsY2lCamIyNTBaVzUwWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEVsdWJtVnlUM1YwWlhJb1l6b2djM1J5YVc1bktUb2dXM04wY21sdVp5d2djM1J5YVc1blhTQjdYRzRnSUNBZ2JHVjBJR2x6U1c1dVpYSWdQU0F3TzF4dUlDQWdJR3hsZENCcGJtNWxjaUE5SUNjbk8xeHVJQ0FnSUd4bGRDQnZkWFJsY2lBOUlDY25PMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JqYUdGeUlHOW1JR01wSUh0Y2JpQWdJQ0FnSUdsbUlDaGphR0Z5SUQwOUlDY29KeWxjYmlBZ0lDQWdJQ0FnYVhOSmJtNWxjaXNyTzF4dUlDQWdJQ0FnWld4elpTQnBaaUFvWTJoaGNpQTlQU0FuS1NjcFhHNGdJQ0FnSUNBZ0lHbHpTVzV1WlhJdExUdGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHbHpTVzV1WlhJcFhHNGdJQ0FnSUNBZ0lHbHVibVZ5SUNzOUlHTm9ZWEk3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lHOTFkR1Z5SUNzOUlHTm9ZWEk3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlDRnBjMDVoVGlod1lYSnpaVWx1ZENocGJtNWxjaWtwSUQ4Z1cyOTFkR1Z5TENBbkoxMGdPaUJiYjNWMFpYSXNJR2x1Ym1WeVhUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBRMjlzYjNKQlFWQnBkbTkwS0cxdmJtOXRaWEk2SUhOMGNtbHVaeUE5SUNjbkxDQnpZMmhsYldVNklDZG5jbTlySnlBOUlDZG5jbTlySnlrNklGdHpkSEpwYm1jc0lITjBjbWx1Wnl3Z2MzUnlhVzVuTENCdWRXMWlaWEpkSUh0Y2JpQWdJQ0F2TDJOdmJuTjBJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUFNCQlFWQmhiR1YwZEdWekxrZHliMnRIY205MWNITW9LVHRjYmlBZ0lDQmpiMjV6ZENCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEMGdkR2hwY3k1blpYUlFZV3hsZEhSbEtITmphR1Z0WlNrN1hHNGdJQ0FnYkdWMElGdHZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNsMGdQU0IwYUdsekxtZGxkRWx1Ym1WeVQzVjBaWElvYlc5dWIyMWxjaWs3WEc0Z0lDQWdiM1YwWlhKTmIyNXZiV1Z5SUQwZ0tHOTFkR1Z5VFc5dWIyMWxjaTVzWlc1bmRHZ2dQaUEySUQ4Z1lDUjdiM1YwWlhKTmIyNXZiV1Z5TG5Oc2FXTmxLREFzSURNcGZTNHVMbUFnT2lCdmRYUmxjazF2Ym05dFpYSXBPMXh1SUNBZ0lHbHVibVZ5VFc5dWIyMWxjaUE5SUNocGJtNWxjazF2Ym05dFpYSXViR1Z1WjNSb0lENGdOaUEvSUdBa2UybHVibVZ5VFc5dWIyMWxjaTV6YkdsalpTZ3dMQ0F6S1gwdUxpNWdJRG9nYVc1dVpYSk5iMjV2YldWeUtUdGNibHh1SUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbXhsYm1kMGFDQTlQU0F4SUh4OElHMXZibTl0WlhKYk1WMGdQVDBnSnlnbktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCaGJXbHVieUE5SUcxdmJtOXRaWEpiTUYwL0xuUnZWWEJ3WlhKRFlYTmxLQ2toTzF4dUlDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBeFhTQTZYRzRnSUNBZ0lDQWdJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01WMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzF2Ym05dFpYSmJNRjBnUFQwZ0oyUW5JQ1ltSUcxdmJtOXRaWEpiTVYwaElHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVwSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUxteGxibWQwYUNBOVBTQXlJSHg4SUcxdmJtOXRaWEpiTWwwZ1BUMGdKeWduS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnYlc5dWIyMWxjbHN4WFQ4dWRHOVZjSEJsY2tOaGMyVW9LU0U3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJoYldsdWJ5QnBiaUJqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sSUQ5Y2JpQWdJQ0FnSUNBZ0lDQmJZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaUzVuWlhRb1lXMXBibThwTENCaGJXbHVieXdnYVc1dVpYSk5iMjV2YldWeUxDQXlYU0E2WEc0Z0lDQWdJQ0FnSUNBZ1czUm9hWE11ZFc1a1pXWnBibVZrUTI5c2IzSXNJRzkxZEdWeVRXOXViMjFsY2l3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F5WFR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JXOXViMjFsY2k1emRXSnpkSEpwYm1jb01Dd2dNeWtnYVc0Z2RHaHBjeTVCUVVaMWJHeE9ZVzFsY3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLRzF2Ym05dFpYSXViR1Z1WjNSb0lEMDlJRE1nZkh3Z2JXOXViMjFsY2xzelhTQTlQU0FuS0NjcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1lXMXBibThnUFNCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6VzIxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RBc0lETXBYVHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNBZ0lGdGphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxMbWRsZENoaGJXbHVieWtzSUdGdGFXNXZMQ0JwYm01bGNrMXZibTl0WlhJc0lETmRJRHBjYmlBZ0lDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJRE5kTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5V3pCZFB5NTBiMHh2ZDJWeVEyRnpaU2dwSUQwOUlHMXZibTl0WlhKYk1GMHBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG5OMVluTjBjbWx1WnlneExDQXpLU0JwYmlCMGFHbHpMa0ZCUm5Wc2JFNWhiV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h0YjI1dmJXVnlMbXhsYm1kMGFDQTlQU0EwSUh4OElHMXZibTl0WlhKYk5GMGdQVDBnSnlnbktTQjdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQjBhR2x6TGtGQlJuVnNiRTVoYldWelcyMXZibTl0WlhJdWMzVmljM1J5YVc1bktERXNJRE1wWFR0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXMXBibThnYVc0Z1kyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTQS9YRzRnSUNBZ0lDQWdJQ0FnSUNCYlkyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTNW5aWFFvWVcxcGJtOHBMQ0JoYldsdWJ5d2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhTQTZYRzRnSUNBZ0lDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJRFJkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01GMDdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIE51Y2xlb3RpZGVzUGFsZXR0ZXMgZXh0ZW5kcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIGdldCBDaHJvbWF0b2dyYW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmNocm9tYXRvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmNocm9tYXRvZ3JhbSA9IG5ldyBOdWNsZW90aWRlc1BhbGV0dGVzKHtcbiAgICAgICAgICAgICAgICAnQSc6ICdncmVlbicsXG4gICAgICAgICAgICAgICAgJ0MnOiAnYmx1ZScsXG4gICAgICAgICAgICAgICAgJ0cnOiAnYmxhY2snLFxuICAgICAgICAgICAgICAgICdUJzogJ3JlZCcsICdVJzogJ3JlZCcsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICdncmF5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdOdWNsZW90aWRlcyc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dG5Ra0ZETVVNc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRTFCUVUwN1owSkJRMWdzUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVXNTMEZCU3p0blFrRkRkRUlzVVVGQlVTeEZRVUZGTEUxQlFVMDdZVUZEYWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1NVRkRNMElzUTBGQlF6dERRVU5HTzBGQlJVUXNUVUZCVFN4UFFVRlBMRmRCUVZjN08wRkJRMDRzYlVKQlFVOHNSMEZCVnl4aFFVRmhMRU5CUVVNN1FVRkZhRU1zYjBOQlFYZENMRWRCUVZjc09FSkJRVGhDTEVOQlFVTTdRVUZGY0VVc2FVSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1VVRkJVVHREUVVOa0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR05vY205dFlYUnZaM0poYlRvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCRGFISnZiV0YwYjJkeVlXMG9LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDBnYm1WM0lFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0FuUVNjNklDZG5jbVZsYmljc1hHNGdJQ0FnSUNBZ0lDZERKem9nSjJKc2RXVW5MRnh1SUNBZ0lDQWdJQ0FuUnljNklDZGliR0ZqYXljc0lDOHZJRzl5WVc1blpTQS9YRzRnSUNBZ0lDQWdJQ2RVSnpvZ0ozSmxaQ2NzSUNkVkp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5aM0poZVNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRuVmpiR1Z2ZEdsa1pYTW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkT2RXTnNaVzkwYVdSbGMwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJKem9nSjBGa1pXNXBibVVuTEZ4dUlDQWdJQ2RESnpvZ0owTjVkRzl6YVc1bEp5eGNiaUFnSUNBblJ5YzZJQ2RIZFdGdWFXNWxKeXhjYmlBZ0lDQW5WQ2M2SUNkVWFIbHRhVzVsSnl4Y2JpQWdJQ0FuVlNjNklDZFZjbUZqYVd3bkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwYWxldHRlKSB7XG4gICAgICAgIHRoaXMuX3BhbGV0dGUgPSBwYWxldHRlO1xuICAgIH1cbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGUgPSBTZXFQYWxldHRlQmFzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICAgICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgICAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW29ial0gPSB0aGlzLmNvbG91clBhbGV0dGVbY29sb3VyXVtzaW1wbGlmaWVkID8gMCA6IGluZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICAgIH1cbn1cbi8qKiBQYWxldHRlIHdpdGggc2hhZGVzIG9mIHByaW1hcnkgY29sb3JzXG4gKi9cblNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUgPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICAgJ3JnYigyNCwxMTAsNzkpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdhbGxfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTIyLCAxMDIsIDE4OSknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTQxLCAxMjQsIDIxNyknLFxuICAgICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4TFhCaGJHVjBkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMlZ4TFhCaGJHVjBkR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXbENRU3hOUVVGTkxFOUJRVThzWTBGQll6dEpRVEJEZWtJc1dVRkJXU3hQUVVGblF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dEpRVU14UWl4RFFVRkRPMGxCYkVKVExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCZDBJc1JVRkRia1FzVlVGQlZTeEhRVUZITEV0QlFVc3NSVUZCUlN4alFVRnhReXhqUVVGak8xRkJSWFpGTEUxQlFVMHNUMEZCVHl4SFFVRTRRaXhGUVVGRkxFTkJRVU03VVVGRE9VTXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTzFsQlEyaENMRTFCUVUwc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjBRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja0lzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJUdG5Ra0ZETTBJc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyeEZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMHdzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWxCUVVrc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEyeERMRU5CUVVNN1NVRlJUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETVVJc1EwRkJRenM3UVVFdlEwUTdSMEZEUnp0QlFVTlhMRFJDUVVGaExFZEJRV2RETzBsQlEzcEVMRkZCUVZFc1JVRkJSU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEdsQ1FVRnBRaXhGUVVGRkxHMUNRVUZ0UWl4RFFVRkRPMGxCUXpGR0xGZEJRVmNzUlVGQlJTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWp0UlFVTndSeXhuUWtGQlowSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3h2UWtGQmIwSXNRMEZCUXp0SlFVTnVSaXhWUVVGVkxFVkJRVVVzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hwUWtGQmFVSXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSTdVVUZETDBjc2JVSkJRVzFDTEVOQlFVTTdTVUZEZEVJc1UwRkJVeXhGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRGRrVXNTMEZCU3l4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRE4wTXNVMEZCVXl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRja1VzVjBGQlZ5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYlVKQlFXMUNMRU5CUVVNN1NVRkRja1FzV1VGQldTeEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03U1VGRE9VWXNXVUZCV1N4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRNVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRGRFWXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRE4wTXNZVUZCWVN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYjBKQlFXOUNMRU5CUVVNN1NVRkRMMFVzVlVGQlZTeEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNaMEpCUVdkQ0xFTkJRVU03U1VGRGVFWXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdTVUZETlVJc1QwRkJUeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETDBNc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRU5CUVVNN1NVRkRNVVlzVVVGQlVTeEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03U1VGRE4wSXNUMEZCVHl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTTdRMEZET1VJc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVTJWeFVHRnNaWFIwWlNCN1hHNGdJQzh2SUZSb1pYSmxJR0Z5WlNCMGIyOGdiWFZqYUNCd2NtOWliR1Z0SUhkcGRHZ2dhVzVrWlhobGNpQndjbTl3WlhKMGVTQnBiaUIwZVhCbGMyTnlhWEIwTGx4dUlDQXZMeUF2S2lwY2JpQWdMeThnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2lCamFHRnlZV04wWlhKY2JpQWdMeThnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuZlNCRGIyeHZjbHh1SUNBdkx5QWdLaTljYmlBZ0x5OGdXMjA2SUhOMGNtbHVaMTA2SUhOMGNtbHVaenRjYmlBZ0x5b3FJRTF2Ym05dFpYSWdZMjlzYjNKY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJRzBnVFc5dWIyMWxjbHh1SUNBZ0tpOWNiaUFnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp6dGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRk5sY1ZCaGJHVjBkR1ZDWVhObElHbHRjR3hsYldWdWRITWdVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDOHFLaUJRWVd4bGRIUmxJSGRwZEdnZ2MyaGhaR1Z6SUc5bUlIQnlhVzFoY25rZ1kyOXNiM0p6WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR052Ykc5MWNsQmhiR1YwZEdVNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuVzEwZ2ZTQTlJSHRjYmlBZ0lDQW5iM0poYm1kbEp6b2dXeWR5WjJJb01qVTFMREU0Tnl3eE1qQXBKeXdnSjNKbllpZ3lORFVzTVRZM0xERXdNQ2tuTENBbmNtZGlLREl6TlN3eE16Y3NOekFwSnl3Z0ozSm5ZaWd5TURVc0lERXhNU3dnTnpFcEoxMHNYRzRnSUNBZ0oyRnNiRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtEYzBMREUyTUN3M05Da25MQ0FuY21kaUtESXpMREV3TXl3MU55a25MQ0FuY21kaUtETXdMREV4TUN3NU5pa25MQ0FuY21kaUtEWXdMREV6TVN3NU5Ta25MRnh1SUNBZ0lDQWdKM0puWWlneU5Dd3hNVEFzTnprcEp5d2dKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZGhiR3hmWW14MVpTYzZJRnNuY21kaUtETXhMREV4T1N3eE9EQXBKeXdnSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVEl5TENBeE1ESXNJREU0T1NrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UUXhMQ0F4TWpRc0lESXhOeWtuTEZ4dUlDQWdJQ0FnSjNKbllpZ3pNU3dnTVRJd0xDQXhOVEFwSjEwc1hHNGdJQ0FnSjIxaFoyVnVkR0VuT2lCYkozSm5ZaWd4TmpJc01UQTJMREU1TWlrbkxDQW5jbWRpS0RFNU55d3hOalVzTWpJMEtTY3NJQ2R5WjJJb01qQTRMREV4TXl3eU1UZ3BKMTBzWEc0Z0lDQWdKM0psWkNjNklGc25jbWRpS0RJeE5Dd3pPU3cwTUNrbkxDQW5jbWRpS0RJMU5Td3hOVElzTVRVd0tTZGRMRnh1SUNBZ0lDZHpkRjlpYkhWbEp6b2dXeWR5WjJJb01qTXNNVGt3TERJd055a25MQ0FuY21kaUtERTFPQ3d5TVRnc01qSTVLU2NzSUNkeVoySW9NekVzTVRFNUxERTRNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOWliSFZsSnpvZ1d5ZHlaMklvTXpFc01URTVMREU0TUNrbkxDQW5jbWRpS0RNeExDQXhNakFzSURFMU1Da25YU3hjYmlBZ0lDQW5iR2xuYUhSZllteDFaU2M2SUZzbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TlRnc01qRTRMREl5T1NrbkxDQW5jbWRpS0RFd09Dd2dNakU0TENBeU1qa3BKeXdnSjNKbllpZ3lNeXd4T1RBc01qSTNLU2RkTEZ4dUlDQWdJQ2RzYVd4aFkxOWliSFZsSnpvZ1d5ZHlaMklvTVRJMExERXdNaXd5TVRFcEp5d2dKM0puWWlneE5Ea3NNVE0wTERJeE55a25MQ0FuY21kaUtEazNMQ0E0TVN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RrWVhKclgyZHlaV1Z1SnpvZ1d5ZHlaMklvTWpNc01UQXpMRFUzS1Njc0lDZHlaMklvTXpBc01URXdMRGsyS1Njc0lDZHlaMklvTmpBc01UTXhMRGsxS1Njc0lDZHlaMklvTWpRc01URXdMRGM1S1NkZExGeHVJQ0FnSUNkbmNtVmxiaWM2SUZzbmNtZGlLRFEwTERFMk1DdzBOQ2tuTENBbmNtZGlLRGMwTERFMk1DdzNOQ2tuWFN4Y2JpQWdJQ0FuYkdsbmFIUmZaM0psWlc0bk9pQmJKM0puWWlneE5USXNNakl6TERFek9Da25MQ0FuY21kaUtERTRNaXdnTWpJekxDQXhNemdwSnl3Z0ozSm5ZaWd4TlRJc0lERTVNeXdnTVRNNEtTZGRMRnh1SUNBZ0lDZHpkRjluY21WbGJpYzZJRnNuY21kaUtEUTBMREUyTUN3ME5Da25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NemtzSURFM05Dd2dPVFlwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjNCcGJtc25PaUJiSjNKbllpZ3lORGNzTVRneUxESXhNQ2tuWFN4Y2JpQWdJQ0FuWW5KdmQyNG5PaUJiSjNKbllpZ3hOREFzT0RZc056VXBKeXdnSjNKbllpZ3hNRElzSURZeUxDQTFOQ2tuWFN4Y2JpQWdJQ0FuWjNKaGVTYzZJRnNuY21kaUtERXlOeXd4TWpjc01USTNLU2NzSUNkeVoySW9NVGs1TERFNU9Td3hPVGtwSnl3Z0ozSm5ZaWd4T1RZc01UVTJMREUwT0NrbkxDQW5jbWRpS0RJeU1pd2dNakl5TENBeE9EQXBKMTBzWEc0Z0lDQWdKM2xsYkd4dmR5YzZJRnNuY21kaUtERTRPQ3d4T0Rrc016UXBKMTBzWEc0Z0lDQWdKM2RvYVhSbEp6b2dXeWR5WjJJb01qTXdMREl6TUN3eU16QXBKMTBzWEc0Z0lIMDdYRzVjYmlBZ2NISnZkR1ZqZEdWa0lITjBZWFJwWXlCdFlXdGxVR0ZzWlhSMFpTaGtkRG9nVzNOMGNtbHVaMXRkTENCemRISnBibWRkVzEwc1hHNGdJQ0FnYzJsdGNHeHBabWxsWkNBOUlHWmhiSE5sTENCUVlXeGxkSFJsVkhsd1pUb2dkSGx3Wlc5bUlGTmxjVkJoYkdWMGRHVkNZWE5sSUQwZ1UyVnhVR0ZzWlhSMFpVSmhjMlZjYmlBZ0tTQjdYRzRnSUNBZ1kyOXVjM1FnY0dGc1pYUjBaVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmU0E5SUh0OU8xeHVJQ0FnSUdSMExtWnZja1ZoWTJnb0tHTndLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J2WW1wTWFYTjBJRDBnWTNCYk1GMDdYRzRnSUNBZ0lDQmpiMjV6ZENCamIyeHZkWElnUFNCamNGc3hYVHRjYmlBZ0lDQWdJRzlpYWt4cGMzUXVabTl5UldGamFDZ29iMkpxTENCcGJtUXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NHRnNaWFIwWlZ0dlltcGRJRDBnZEdocGN5NWpiMnh2ZFhKUVlXeGxkSFJsVzJOdmJHOTFjbDFiYzJsdGNHeHBabWxsWkNBL0lEQWdPaUJwYm1SZE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlFZV3hsZEhSbFZIbHdaU2h3WVd4bGRIUmxLVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWDNCaGJHVjBkR1U2SUhzZ1cyMDZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJoYkdWMGRHVTZJSHNnVzIwNklITjBjbWx1WjEwNklITjBjbWx1WnlCOUtTQjdYRzRnSUNBZ2RHaHBjeTVmY0dGc1pYUjBaU0E5SUhCaGJHVjBkR1U3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM0JoYkdWMGRHVmJiVjA3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5jbGFzcyBTaWRlQ2hhaW5TY2FsZXMge1xuICAgIHN0YXRpYyBnZXRBdmFpbGFibGVTY2FsZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnNjYWxlcykubWFwKChbaywgX10pID0+IGspO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0U2NhbGUobmFtZSkge1xuICAgICAgICBhc3NlcnQoISh0aGlzLnNjYWxlc1tuYW1lXSA9PT0gdW5kZWZpbmVkKSwgYFNjYWxlICcke25hbWV9JyB3YXMgbm90IGZvdW5kLmApO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZXNbbmFtZV07XG4gICAgfVxufVxuU2lkZUNoYWluU2NhbGVzLnNjYWxlcyA9IHtcbiAgICAvLyBXaW1sZXktV2hpdGUgaW50ZXJmYWNpYWwgaHlkcm9waG9iaWNpdHkgc2NhbGVcbiAgICAnV2ltbGV5V2hpdGUnOiB7XG4gICAgICAgICctJzogMCxcbiAgICAgICAgJ0EnOiAwLjE3LFxuICAgICAgICAnQyc6IC0wLjI0LFxuICAgICAgICAnRCc6IC0wLjA3LFxuICAgICAgICAnRSc6IC0wLjAxLFxuICAgICAgICAnRic6IC0xLjEzLFxuICAgICAgICAnRyc6IDAuMDEsXG4gICAgICAgICdIJzogMC4xNyxcbiAgICAgICAgJ0knOiAtMC4zMSxcbiAgICAgICAgJ0snOiAwLjk5LFxuICAgICAgICAnTCc6IC0wLjU2LFxuICAgICAgICAnTSc6IC0wLjIzLFxuICAgICAgICAnTic6IDAuNDIsXG4gICAgICAgICdQJzogMC40NSxcbiAgICAgICAgJ1EnOiAwLjU4LFxuICAgICAgICAnUic6IDAuODEsXG4gICAgICAgICdTJzogMC4xMyxcbiAgICAgICAgJ1QnOiAwLjE0LFxuICAgICAgICAnVic6IDAuMDcsXG4gICAgICAgICdXJzogLTEuODUsXG4gICAgICAgICdZJzogLTAuOTQsXG4gICAgfSxcbiAgICAnY2F0ZWdvcmlhbCc6IHtcbiAgICAgICAgJy0nOiAwLFxuICAgICAgICAnQSc6IDEsXG4gICAgICAgICdDJzogMixcbiAgICAgICAgJ0QnOiAzLFxuICAgICAgICAnRSc6IDQsXG4gICAgICAgICdGJzogNSxcbiAgICAgICAgJ0cnOiA2LFxuICAgICAgICAnSCc6IDcsXG4gICAgICAgICdJJzogOCxcbiAgICAgICAgJ0snOiA5LFxuICAgICAgICAnTCc6IDEwLFxuICAgICAgICAnTSc6IDExLFxuICAgICAgICAnTic6IDEyLFxuICAgICAgICAnUCc6IDEzLFxuICAgICAgICAnUSc6IDE0LFxuICAgICAgICAnUic6IDE1LFxuICAgICAgICAnUyc6IDE2LFxuICAgICAgICAnVCc6IDE3LFxuICAgICAgICAnVic6IDE4LFxuICAgICAgICAnVyc6IDE5LFxuICAgICAgICAnWSc6IDIwLFxuICAgIH0sXG59O1xuLyoqXG4gKiBDbGFzcyB0byBjYXRlZ29yaWFsIGVuY29kZS9kZWNvZGUgYWxpZ25lZCBhbWlubyBhY2lkIHJlc2lkdWVzIHNlcXVlbmNlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihzY2FsZSA9ICdjYXRlZ29yaWFsJykge1xuICAgICAgICB0aGlzLmFhMm51bSA9IFNpZGVDaGFpblNjYWxlcy5nZXRTY2FsZShzY2FsZSk7XG4gICAgICAgIHRoaXMubnVtMmFhID0ge307XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWEybnVtKS5mb3JFYWNoKChbaywgdl0pID0+ICh0aGlzLm51bTJhYVt2XSA9IGspKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICAgKiBUcnVuY2F0ZSBOSDIgYW5kIC1DT09IIHRlcm1pbmFscyBvZiB0aGUgZ2l2ZW4gc2VxdWVuY2UuXG4gICAgICAgKlxuICAgICAgICogQHN0YXRpY1xuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlcSBUaGUgc2VxdWVuY2UgcHJvdmlkZWQuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRydW5jYXRlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX3RydW5jYXRlU2VxdWVuY2Uoc2VxKSB7XG4gICAgICAgIGxldCBzdGFydCA9IDA7XG4gICAgICAgIGxldCBlbmQgPSBzZXEubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZXJtaW5hID0gWydOSDInLCAnQ09PSCddO1xuICAgICAgICBpZiAoc2VxLnN0YXJ0c1dpdGgodGVybWluYVswXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzBdLmxlbmd0aDsgLy8gQ3V0IG9ubHkgJ05IMicgd2l0aG91dCBmb2xsb3dpbmcgJy0nLlxuICAgICAgICAgICAgYXNzZXJ0KHNlcVtsXSA9PSAnLScsIGBXcm9uZyBzZXF1ZW5jZSBmb3JtYXQ6ICR7dGVybWluYVswXX0gd2l0aG91dCBmb2xsb3dpbmcgJy0nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgc3RhcnQgPSBsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXEuZW5kc1dpdGgodGVybWluYVsxXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0ZXJtaW5hWzFdLmxlbmd0aCArIDE7IC8vIEN1dCBib3RoICdDT09IJyBhbmQgcHJlY2VuZGluZyAnLScuXG4gICAgICAgICAgICBhc3NlcnQoc2VxW2VuZCAtIGxdID09ICctJywgYFdyb25nIHNlcXVlbmNlIGZvcm1hdDogJHt0ZXJtaW5hWzFdfSB3aXRob3V0ICctJyBwcmVjZW5kaW5nIGluICcke3NlcX0nLmApO1xuICAgICAgICAgICAgZW5kIC09IGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlcS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogQ3V0cyBhdXhpbGlhcnkgZGVmaXNlcyBiZWZvcmUgYSByZXNpZHVlLlxuICAgICAgICpcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgVGhlIHNlcXVlbmNlIHRvIHByb2Nlc3MuXG4gICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFByb2Nlc3NlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBzdGF0aWMgX2Ryb3BEZWZpc2VzKHNlcSkge1xuICAgICAgICByZXR1cm4gc2VxLnJlcGxhY2UoLygtKShbXi1dKykvZywgJyQyJyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogUGVyZm9ybXMgdHJ1bmNhdGlvbiBhbmQgY3V0dGluZyBhdXhpbGlhcnkgZGVmaXNlcy5cbiAgICAgICAqXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlIHdvcmsgdW5kZXIgcHJvY2Vzcy5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmVzdWx0IG9mIGNsZWFuaW5nLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIHN0YXRpYyBjbGVhbihzZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fZHJvcERlZmlzZXMoQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5fdHJ1bmNhdGVTZXF1ZW5jZShzZXF1ZW5jZSkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgICAqIENhdGVnb3JpYWwgZW5jb2RlIG9mIHRoZSBzZXF1ZW5jZSBwcm92aWRlZC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VxdWVuY2UgVGhlIHNlcXVlbmNlLlxuICAgICAgICogQHJldHVybiB7bnVtYmVyW119IEVuY29kZWQgdmVjdG9yLlxuICAgICAgICogQG1lbWJlcm9mIEFsaWduZWRTZXF1ZW5jZUVuY29kZXJcbiAgICAgICAqL1xuICAgIGVuY29kZShzZXF1ZW5jZSkge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSBzZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICAgIGFzc2VydChjaGFyIGluIHRoaXMuYWEybnVtLCBgVW5rbm93biBjaGFyICcke2NoYXJ9JyBmb3VuZCBpbiBzZXF1ZW5jZSAnJHtzZXF1ZW5jZX0nYCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLmVuY29kZUxldHR0ZXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgZW5jb2RlTGV0dHRlcihsZXR0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWEybnVtW2xldHRlcl07XG4gICAgfVxuICAgIC8qKlxuICAgICAgICogRGVjb2RlIHRoZSBlbmNvZGVkIHZlY3RvciBpbnRvIHRoZSBzZXF1ZW5jZSBiYWNrLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHZhbHVlIFRoZSB2ZWN0b3IgZW5jb2RlZC5cbiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gRGVjb2RlZCBzZXF1ZW5jZS5cbiAgICAgICAqIEBtZW1iZXJvZiBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyXG4gICAgICAgKi9cbiAgICBkZWNvZGUodmFsdWUpIHtcbiAgICAgICAgbGV0IHMgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHZhbHVlW2ldO1xuICAgICAgICAgICAgYXNzZXJ0KGNvZGUgaW4gdGhpcy5udW0yYWEsIGBVbmtub3duIGNvZGUgJyR7Y29kZX0nIGZvdW5kIGluIHZlY3RvciAnJHt2YWx1ZX0nYCk7XG4gICAgICAgICAgICBzICs9IHRoaXMubnVtMmFhW2NvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdFpXNWpiMlJsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbk5sY1hWbGJtTmxMV1Z1WTI5a1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJTM1pGTEUxQlFVMHNaVUZCWlR0SlFXMUVia0lzVFVGQlRTeERRVUZETEd0Q1FVRnJRanRSUVVOMlFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFJDeERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGWk8xRkJRekZDTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4VFFVRlRMRU5CUVVNc1JVRkJSU3hWUVVGVkxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRSUVVNM1JTeFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wSXNRMEZCUXpzN1FVRjZSRTBzYzBKQlFVMHNSMEZCTmtJN1NVRkRlRU1zWjBSQlFXZEVPMGxCUTJoRUxHRkJRV0VzUlVGQlJUdFJRVU5pTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpPMUZCUTFZc1IwRkJSeXhGUVVGRkxFTkJRVU1zU1VGQlNUdFJRVU5XTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrN1VVRkRWaXhIUVVGSExFVkJRVVVzUTBGQlF5eEpRVUZKTzFGQlExWXNSMEZCUnl4RlFVRkZMRWxCUVVrN1VVRkRWQ3hIUVVGSExFVkJRVVVzU1VGQlNUdFJRVU5VTEVkQlFVY3NSVUZCUlN4SlFVRkpPMUZCUTFRc1IwRkJSeXhGUVVGRkxFbEJRVWs3VVVGRFZDeEhRVUZITEVWQlFVVXNTVUZCU1R0UlFVTlVMRWRCUVVjc1JVRkJSU3hKUVVGSk8xRkJRMVFzUjBGQlJ5eEZRVUZGTEVsQlFVazdVVUZEVkN4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSk8xRkJRMVlzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1R0TFFVTllPMGxCUTBRc1dVRkJXU3hGUVVGRk8xRkJRMW9zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOT0xFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEwNHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRUaXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU5PTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTA0c1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFRpeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMDRzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEVGl4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzFGQlExQXNSMEZCUnl4RlFVRkZMRVZCUVVVN1VVRkRVQ3hIUVVGSExFVkJRVVVzUlVGQlJUdFJRVU5RTEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTFBc1IwRkJSeXhGUVVGRkxFVkJRVVU3VVVGRFVDeEhRVUZITEVWQlFVVXNSVUZCUlR0UlFVTlFMRWRCUVVjc1JVRkJSU3hGUVVGRk8xRkJRMUFzUjBGQlJ5eEZRVUZGTEVWQlFVVTdVVUZEVUN4SFFVRkhMRVZCUVVVc1JVRkJSVHRSUVVOUUxFZEJRVWNzUlVGQlJTeEZRVUZGTzB0QlExSTdRMEZEUml4RFFVRkRPMEZCV1VvN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxFOUJRVThzYzBKQlFYTkNPMGxCU1dwRExGbEJRVmtzVVVGQlowSXNXVUZCV1R0UlFVTjBReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEdWQlFXVXNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRE9VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRGFrSXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hGTEVOQlFVTTdTVUZGUkRzN096czdPenRUUVU5TE8wbEJRMHdzVFVGQlRTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFZEJRVmM3VVVGRGJFTXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVOeVFpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVN1dVRkRPVUlzVFVGQlRTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEhkRFFVRjNRenRaUVVOeVJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5dzRRa0ZCT0VJc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dFpRVU5xUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRMWc3VVVGRFJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETlVJc1RVRkJUU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHpRMEZCYzBNN1dVRkRja1VzVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTERCQ1FVRXdRaXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEN0Q1FVRXJRaXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRFZqdFJRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYmtNc1EwRkJRenRKUVVWRU96czdPenM3TzFOQlQwczdTVUZEVEN4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVmM3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3pzN096czdVMEZQU3p0SlFVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlowSTdVVUZETTBJc1QwRkJUeXh6UWtGQmMwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSeXhEUVVGRE8wbEJSVVE3T3pzN096dFRRVTFMTzBsQlEwVXNUVUZCVFN4RFFVRkRMRkZCUVdkQ08xRkJRelZDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGREwwSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRMMElzVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSWHBDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJc1NVRkJTU3gzUWtGQmQwSXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVWMFJpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjBRenRSUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBsQlEyaENMRU5CUVVNN1NVRkZUU3hoUVVGaExFTkJRVU1zVFVGQll6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZETjBJc1EwRkJRenRKUVVWRU96czdPenM3VTBGTlN6dEpRVU5GTEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUXpOQ0xFbEJRVWtzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXp0UlFVVnVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnlReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZkRUlzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHbENRVUZwUWl4SlFVRkpMSE5DUVVGelFpeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUldwR0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM2hDTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRXQ3hEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJGemMyVnlkSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dVhHNTBlWEJsSUZOcFpHVkRhR0ZwYmxOallXeGxJRDBnZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUJ1ZFcxaVpYSjlPMXh1ZEhsd1pTQlRhV1JsUTJoaGFXNVRZMkZzWlVOdmJHeGxZM1JwYjI0Z1BTQjdXMjVoYldVNklITjBjbWx1WjEwNklGTnBaR1ZEYUdGcGJsTmpZV3hsZlR0Y2JseHVZMnhoYzNNZ1UybGtaVU5vWVdsdVUyTmhiR1Z6SUh0Y2JpQWdjM1JoZEdsaklITmpZV3hsY3pvZ1UybGtaVU5vWVdsdVUyTmhiR1ZEYjJ4c1pXTjBhVzl1SUQwZ2UxeHVJQ0FnSUM4dklGZHBiV3hsZVMxWGFHbDBaU0JwYm5SbGNtWmhZMmxoYkNCb2VXUnliM0JvYjJKcFkybDBlU0J6WTJGc1pWeHVJQ0FnSUNkWGFXMXNaWGxYYUdsMFpTYzZJSHRjYmlBZ0lDQWdJQ2N0SnpvZ01DeGNiaUFnSUNBZ0lDZEJKem9nTUM0eE55eGNiaUFnSUNBZ0lDZERKem9nTFRBdU1qUXNYRzRnSUNBZ0lDQW5SQ2M2SUMwd0xqQTNMQ0F2THlCQmMzQXRPaUF4TGpJelhHNGdJQ0FnSUNBblJTYzZJQzB3TGpBeExDQXZMeUJIYkhVdE9pQXlMakF5WEc0Z0lDQWdJQ0FuUmljNklDMHhMakV6TENBdkwxeHVJQ0FnSUNBZ0owY25PaUF3TGpBeExGeHVJQ0FnSUNBZ0owZ25PaUF3TGpFM0xDQXZMeUJJYVhNck9pQXdMamsyWEc0Z0lDQWdJQ0FuU1NjNklDMHdMak14TEZ4dUlDQWdJQ0FnSjBzbk9pQXdMams1TENBdkx5Qk1lWE1yWEc0Z0lDQWdJQ0FuVENjNklDMHdMalUyTEZ4dUlDQWdJQ0FnSjAwbk9pQXRNQzR5TXl4Y2JpQWdJQ0FnSUNkT0p6b2dNQzQwTWl4Y2JpQWdJQ0FnSUNkUUp6b2dNQzQwTlN4Y2JpQWdJQ0FnSUNkUkp6b2dNQzQxT0N4Y2JpQWdJQ0FnSUNkU0p6b2dNQzQ0TVN3Z0x5OGdRWEpuSzF4dUlDQWdJQ0FnSjFNbk9pQXdMakV6TEZ4dUlDQWdJQ0FnSjFRbk9pQXdMakUwTEZ4dUlDQWdJQ0FnSjFZbk9pQXdMakEzTEZ4dUlDQWdJQ0FnSjFjbk9pQXRNUzQ0TlN4Y2JpQWdJQ0FnSUNkWkp6b2dMVEF1T1RRc1hHNGdJQ0FnZlN4Y2JpQWdJQ0FuWTJGMFpXZHZjbWxoYkNjNklIdGNiaUFnSUNBZ0lDY3RKem9nTUN4Y2JpQWdJQ0FnSUNkQkp6b2dNU3hjYmlBZ0lDQWdJQ2RESnpvZ01peGNiaUFnSUNBZ0lDZEVKem9nTXl4Y2JpQWdJQ0FnSUNkRkp6b2dOQ3hjYmlBZ0lDQWdJQ2RHSnpvZ05TeGNiaUFnSUNBZ0lDZEhKem9nTml4Y2JpQWdJQ0FnSUNkSUp6b2dOeXhjYmlBZ0lDQWdJQ2RKSnpvZ09DeGNiaUFnSUNBZ0lDZExKem9nT1N4Y2JpQWdJQ0FnSUNkTUp6b2dNVEFzWEc0Z0lDQWdJQ0FuVFNjNklERXhMRnh1SUNBZ0lDQWdKMDRuT2lBeE1peGNiaUFnSUNBZ0lDZFFKem9nTVRNc1hHNGdJQ0FnSUNBblVTYzZJREUwTEZ4dUlDQWdJQ0FnSjFJbk9pQXhOU3hjYmlBZ0lDQWdJQ2RUSnpvZ01UWXNYRzRnSUNBZ0lDQW5WQ2M2SURFM0xGeHVJQ0FnSUNBZ0oxWW5PaUF4T0N4Y2JpQWdJQ0FnSUNkWEp6b2dNVGtzWEc0Z0lDQWdJQ0FuV1NjNklESXdMRnh1SUNBZ0lIMHNYRzRnSUgwN1hHNWNiaUFnYzNSaGRHbGpJR2RsZEVGMllXbHNZV0pzWlZOallXeGxjeWdwT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNWxiblJ5YVdWektIUm9hWE11YzJOaGJHVnpLUzV0WVhBb0tGdHJMQ0JmWFNrZ1BUNGdheWs3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWjJWMFUyTmhiR1VvYm1GdFpUb2djM1J5YVc1bktUb2dVMmxrWlVOb1lXbHVVMk5oYkdVZ2UxeHVJQ0FnSUdGemMyVnlkQ2doS0hSb2FYTXVjMk5oYkdWelcyNWhiV1ZkSUQwOVBTQjFibVJsWm1sdVpXUXBMQ0JnVTJOaGJHVWdKeVI3Ym1GdFpYMG5JSGRoY3lCdWIzUWdabTkxYm1RdVlDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMk5oYkdWelcyNWhiV1ZkTzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyeGhjM01nZEc4Z1kyRjBaV2R2Y21saGJDQmxibU52WkdVdlpHVmpiMlJsSUdGc2FXZHVaV1FnWVcxcGJtOGdZV05wWkNCeVpYTnBaSFZsY3lCelpYRjFaVzVqWlM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCaFlUSnVkVzA2SUZOcFpHVkRhR0ZwYmxOallXeGxPMXh1SUNCd2NtOTBaV04wWldRZ2JuVnRNbUZoT2lCN1cyTnZaR1U2SUc1MWJXSmxjbDA2SUhOMGNtbHVaMzA3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYzJOaGJHVTZJSE4wY21sdVp5QTlJQ2RqWVhSbFoyOXlhV0ZzSnlrZ2UxeHVJQ0FnSUhSb2FYTXVZV0V5Ym5WdElEMGdVMmxrWlVOb1lXbHVVMk5oYkdWekxtZGxkRk5qWVd4bEtITmpZV3hsS1R0Y2JpQWdJQ0IwYUdsekxtNTFiVEpoWVNBOUlIdDlPMXh1SUNBZ0lFOWlhbVZqZEM1bGJuUnlhV1Z6S0hSb2FYTXVZV0V5Ym5WdEtTNW1iM0pGWVdOb0tDaGJheXdnZGwwcElEMCtJQ2gwYUdsekxtNTFiVEpoWVZ0MlhTQTlJR3NwS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0lDQXFJRlJ5ZFc1allYUmxJRTVJTWlCaGJtUWdMVU5QVDBnZ2RHVnliV2x1WVd4eklHOW1JSFJvWlNCbmFYWmxiaUJ6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLbHh1SUNBZ0lDQXFJRUJ6ZEdGMGFXTmNiaUFnSUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVnhJRlJvWlNCelpYRjFaVzVqWlNCd2NtOTJhV1JsWkM1Y2JpQWdJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUZSeWRXNWpZWFJsWkNCelpYRjFaVzVqWlM1Y2JpQWdJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1FXeHBaMjVsWkZObGNYVmxibU5sUlc1amIyUmxjbHh1SUNBZ0lDQXFMMXh1SUNCemRHRjBhV01nWDNSeWRXNWpZWFJsVTJWeGRXVnVZMlVvYzJWeE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUd4bGRDQnpkR0Z5ZENBOUlEQTdYRzRnSUNBZ2JHVjBJR1Z1WkNBOUlITmxjUzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnZEdWeWJXbHVZU0E5SUZzblRrZ3lKeXdnSjBOUFQwZ25YVHRjYmx4dUlDQWdJR2xtSUNoelpYRXVjM1JoY25SelYybDBhQ2gwWlhKdGFXNWhXekJkS1NrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYkNBOUlIUmxjbTFwYm1GYk1GMHViR1Z1WjNSb095QXZMeUJEZFhRZ2IyNXNlU0FuVGtneUp5QjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2N1WEc0Z0lDQWdJQ0JoYzNObGNuUW9jMlZ4VzJ4ZElEMDlJQ2N0Snl3Z1lGZHliMjVuSUhObGNYVmxibU5sSUdadmNtMWhkRG9nSkh0MFpYSnRhVzVoV3pCZGZTQjNhWFJvYjNWMElHWnZiR3h2ZDJsdVp5QW5MU2NnYVc0Z0p5UjdjMlZ4ZlNjdVlDazdYRzRnSUNBZ0lDQnpkR0Z5ZENBOUlHdzdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHpaWEV1Wlc1a2MxZHBkR2dvZEdWeWJXbHVZVnN4WFNrcElIdGNiaUFnSUNBZ0lHTnZibk4wSUd3Z1BTQjBaWEp0YVc1aFd6RmRMbXhsYm1kMGFDc3hPeUF2THlCRGRYUWdZbTkwYUNBblEwOVBTQ2NnWVc1a0lIQnlaV05sYm1ScGJtY2dKeTBuTGx4dUlDQWdJQ0FnWVhOelpYSjBLSE5sY1Z0bGJtUXRiRjBnUFQwZ0p5MG5MQ0JnVjNKdmJtY2djMlZ4ZFdWdVkyVWdabTl5YldGME9pQWtlM1JsY20xcGJtRmJNVjE5SUhkcGRHaHZkWFFnSnkwbklIQnlaV05sYm1ScGJtY2dhVzRnSnlSN2MyVnhmU2N1WUNrN1hHNGdJQ0FnSUNCbGJtUWdMVDBnYkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlITmxjUzV6ZFdKemRISnBibWNvYzNSaGNuUXNJR1Z1WkNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDQWdLaUJEZFhSeklHRjFlR2xzYVdGeWVTQmtaV1pwYzJWeklHSmxabTl5WlNCaElISmxjMmxrZFdVdVhHNGdJQ0FnSUNwY2JpQWdJQ0FnS2lCQWMzUmhkR2xqWEc0Z0lDQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY1NCVWFHVWdjMlZ4ZFdWdVkyVWdkRzhnY0hKdlkyVnpjeTVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZDlJRkJ5YjJObGMzTmxaQ0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBYldWdFltVnliMllnUVd4cFoyNWxaRk5sY1hWbGJtTmxSVzVqYjJSbGNseHVJQ0FnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdYMlJ5YjNCRVpXWnBjMlZ6S0hObGNUb2djM1J5YVc1bktUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnYzJWeExuSmxjR3hoWTJVb0x5Z3RLU2hiWGkxZEt5a3ZaeXdnSnlReUp5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ0FnS2lCUVpYSm1iM0p0Y3lCMGNuVnVZMkYwYVc5dUlHRnVaQ0JqZFhSMGFXNW5JR0YxZUdsc2FXRnllU0JrWldacGMyVnpMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSE4wWVhScFkxeHVJQ0FnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCelpYRjFaVzVqWlNCVWFHVWdjMlZ4ZFdWdVkyVWdkMjl5YXlCMWJtUmxjaUJ3Y205alpYTnpMbHh1SUNBZ0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVozMGdVbVZ6ZFd4MElHOW1JR05zWldGdWFXNW5MbHh1SUNBZ0lDQXFJRUJ0WlcxaVpYSnZaaUJCYkdsbmJtVmtVMlZ4ZFdWdVkyVkZibU52WkdWeVhHNGdJQ0FnSUNvdlhHNGdJSE4wWVhScFl5QmpiR1ZoYmloelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdRV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZlpISnZjRVJsWm1selpYTW9RV3hwWjI1bFpGTmxjWFZsYm1ObFJXNWpiMlJsY2k1ZmRISjFibU5oZEdWVFpYRjFaVzVqWlNoelpYRjFaVzVqWlNrcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQWdJQ29nUTJGMFpXZHZjbWxoYkNCbGJtTnZaR1VnYjJZZ2RHaGxJSE5sY1hWbGJtTmxJSEJ5YjNacFpHVmtMbHh1SUNBZ0lDQXFYRzRnSUNBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlITmxjWFZsYm1ObElGUm9aU0J6WlhGMVpXNWpaUzVjYmlBZ0lDQWdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnUlc1amIyUmxaQ0IyWldOMGIzSXVYRzRnSUNBZ0lDb2dRRzFsYldKbGNtOW1JRUZzYVdkdVpXUlRaWEYxWlc1alpVVnVZMjlrWlhKY2JpQWdJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnVZMjlrWlNoelpYRjFaVzVqWlRvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0FnSUdOdmJuTjBJRzVKZEdWdGN5QTlJSE5sY1hWbGJtTmxMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0J1WlhjZ1FYSnlZWGtvYmtsMFpXMXpLUzVtYVd4c0tEQXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTJoaGNpQTlJSE5sY1hWbGJtTmxXMmxkTzF4dVhHNGdJQ0FnSUNCaGMzTmxjblFvWTJoaGNpQnBiaUIwYUdsekxtRmhNbTUxYlN3Z1lGVnVhMjV2ZDI0Z1kyaGhjaUFuSkh0amFHRnlmU2NnWm05MWJtUWdhVzRnYzJWeGRXVnVZMlVnSnlSN2MyVnhkV1Z1WTJWOUoyQXBPMXh1WEc0Z0lDQWdJQ0IyWVd4MVpYTmJhVjBnUFNCMGFHbHpMbVZ1WTI5a1pVeGxkSFIwWlhJb1kyaGhjaWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlc1amIyUmxUR1YwZEhSbGNpaHNaWFIwWlhJNklITjBjbWx1WnlrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVlXRXliblZ0VzJ4bGRIUmxjbDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNBZ0tpQkVaV052WkdVZ2RHaGxJR1Z1WTI5a1pXUWdkbVZqZEc5eUlHbHVkRzhnZEdobElITmxjWFZsYm1ObElHSmhZMnN1WEc0Z0lDQWdJQ3BjYmlBZ0lDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0IyWVd4MVpTQlVhR1VnZG1WamRHOXlJR1Z1WTI5a1pXUXVYRzRnSUNBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkVaV052WkdWa0lITmxjWFZsYm1ObExseHVJQ0FnSUNBcUlFQnRaVzFpWlhKdlppQkJiR2xuYm1Wa1UyVnhkV1Z1WTJWRmJtTnZaR1Z5WEc0Z0lDQWdJQ292WEc0Z0lIQjFZbXhwWXlCa1pXTnZaR1VvZG1Gc2RXVTZJRzUxYldKbGNsdGRLVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ0p5YzdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFpoYkhWbExteGxibWQwYURzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMlJsSUQwZ2RtRnNkV1ZiYVYwN1hHNWNiaUFnSUNBZ0lHRnpjMlZ5ZENoamIyUmxJR2x1SUhSb2FYTXViblZ0TW1GaExDQmdWVzVyYm05M2JpQmpiMlJsSUNja2UyTnZaR1Y5SnlCbWIzVnVaQ0JwYmlCMlpXTjBiM0lnSnlSN2RtRnNkV1Y5SjJBcE8xeHVYRzRnSUNBZ0lDQnpJQ3M5SUhSb2FYTXViblZ0TW1GaFcyTnZaR1ZkTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2N6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcbiAgICBzdGF0aWMgaGFzaENvZGUocykge1xuICAgICAgICBsZXQgaGFzaCA9IDA7XG4gICAgICAgIGlmIChzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBoYXNoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNociA9IHMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgICAgIGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfVxufVxuaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGUge1xufVxuZXhwb3J0IGNsYXNzIEdyYXlBbGxQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiAnIzY2NjY2Nic7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVua25vd25Db2xvclBhbGV0dGUgZXh0ZW5kcyBVbmtub3duU2VxUGFsZXR0ZSB7XG4gICAgc3RhdGljIGJ1aWxkUGFsZXR0ZSgpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW10uY29uY2F0KC4uLk9iamVjdC52YWx1ZXMoU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICBnZXQobSkge1xuICAgICAgICBjb25zdCBoYXNoID0gU3RyaW5nVXRpbHMuaGFzaENvZGUobSk7XG4gICAgICAgIGNvbnN0IHBJID0gaGFzaCAlIFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGVbcEldO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTVUVzVFVGQlRTeFBRVUZQTEZkQlFWYzdTVUZEWml4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVk03VVVGRE9VSXNTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRE8xbEJRMmhDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMUZCUTJRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEZWtNc1RVRkJUU3hIUVVGSExFZEJRVmNzUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMREpDUVVFeVFqdFRRVU4yUXp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dERRVU5HTzBGQlJVUXNUMEZCVHl4RlFVRmhMR05CUVdNc1JVRkJReXhOUVVGTkxHZENRVUZuUWl4RFFVRkRPMEZCUlRGRUxFMUJRVTBzVDBGQlowSXNhVUpCUVdsQ08wTkJSWFJETzBGQlJVUXNUVUZCVFN4UFFVRlBMR05CUVdVc1UwRkJVU3hwUWtGQmFVSTdTVUZETlVNc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dERRVU5HTzBGQlIwUXNUVUZCVFN4UFFVRlBMRzFDUVVGdlFpeFRRVUZSTEdsQ1FVRnBRanRKUVVkb1JDeE5RVUZOTEVOQlFVTXNXVUZCV1R0UlFVTjZRaXhOUVVGTkxFZEJRVWNzUjBGQlNTeEZRVUZsTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eGpRVUZqTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1JpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRU5CUVVNN1NVRkZUU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU5zUWl4TlFVRk5MRWxCUVVrc1IwRkJWeXhYUVVGWExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNKRUxFOUJRVThzYlVKQlFXMUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBsQlEzcERMRU5CUVVNN08wRkJXR0VzTWtKQlFVOHNSMEZCWVN4dFFrRkJiVUlzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0QlFXTjJSU3hOUVVGTkxFOUJRVThzYTBKQlFXMUNMRk5CUVZFc1kwRkJZenRKUVVjM1F5eE5RVUZOTEV0QlFVc3NTVUZCU1R0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4alFVRmpMRVZCUVVVc1EwRkJRenRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TFFVRkxPMUZCUTNKQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4TFFVRkxMRU5CUVVNN1dVRkRka0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHZHliMnNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJkeWIyc25PMXh1YVcxd2IzSjBJQ29nWVhNZ2RXa2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMM1ZwSnp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRkSEpwYm1kVmRHbHNjeUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nYUdGemFFTnZaR1VvY3pvZ2MzUnlhVzVuS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2FHRnphRG9nYm5WdFltVnlJRDBnTUR0Y2JpQWdJQ0JwWmlBb2N5NXNaVzVuZEdnZ1BUMDlJREFwWEc0Z0lDQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnY3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyaHlPaUJ1ZFcxaVpYSWdQU0J6TG1Ob1lYSkRiMlJsUVhRb2FTazdYRzRnSUNBZ0lDQm9ZWE5vSUQwZ0tDaG9ZWE5vSUR3OElEVXBJQzBnYUdGemFDa2dLeUJqYUhJN1hHNGdJQ0FnSUNCb1lYTm9JSHc5SURBN0lDOHZJRU52Ym5abGNuUWdkRzhnTXpKaWFYUWdhVzUwWldkbGNseHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdhR0Z6YUR0Y2JpQWdmVnh1ZlZ4dVhHNXBiWEJ2Y25RZ2UxTmxjVkJoYkdWMGRHVXNJRk5sY1ZCaGJHVjBkR1ZDWVhObGZTQm1jbTl0SUNjdUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJWYm10dWIzZHVVMlZ4VUdGc1pYUjBaU0JwYlhCc1pXMWxiblJ6SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0J3ZFdKc2FXTWdZV0p6ZEhKaFkzUWdaMlYwS0cwNklITjBjbWx1WnlrNklITjBjbWx1Wnp0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklFZHlZWGxCYkd4UVlXeGxkSFJsSUdWNGRHVnVaSE1nVlc1cmJtOTNibE5sY1ZCaGJHVjBkR1VnZTF4dUlDQndkV0pzYVdNZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaeUI3WEc0Z0lDQWdjbVYwZFhKdUlDY2pOalkyTmpZMkp6dGNiaUFnZlZ4dWZWeHVYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlZibXR1YjNkdVEyOXNiM0pRWVd4bGRIUmxJR1Y0ZEdWdVpITWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVWdlMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEJoYkdWMGRHVTZJSE4wY21sdVoxdGRJRDBnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1aWRXbHNaRkJoYkdWMGRHVW9LVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCaWRXbHNaRkJoYkdWMGRHVW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJR052Ym5OMElISmxjeUE5SUNoYlhTQmhjeUJ6ZEhKcGJtZGJYU2t1WTI5dVkyRjBLQzR1TGs5aWFtVmpkQzUyWVd4MVpYTW9VMlZ4VUdGc1pYUjBaVUpoYzJVdVkyOXNiM1Z5VUdGc1pYUjBaU2twTzF4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYUdGemFEb2diblZ0WW1WeUlEMGdVM1J5YVc1blZYUnBiSE11YUdGemFFTnZaR1VvYlNrN1hHNGdJQ0FnWTI5dWMzUWdjRWtnUFNCb1lYTm9JQ1VnVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlM1d1lXeGxkSFJsTG14bGJtZDBhRHRjYmlBZ0lDQnlaWFIxY200Z1ZXNXJibTkzYmtOdmJHOXlVR0ZzWlhSMFpTNXdZV3hsZEhSbFczQkpYVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCIvLyBEYXRhIHN0cnVjdHVyZXMgZm9yIFYtRG9tYWluIHJlZ2lvbnMgb2YgYW50aWJvZGllc1xuZXhwb3J0IHZhciBWZFJlZ2lvblR5cGU7XG4oZnVuY3Rpb24gKFZkUmVnaW9uVHlwZSkge1xuICAgIFZkUmVnaW9uVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbiAgICBWZFJlZ2lvblR5cGVbXCJGUlwiXSA9IFwiZnJhbWV3b3JrXCI7XG4gICAgVmRSZWdpb25UeXBlW1wiQ0RSXCJdID0gXCJjZHJcIjtcbn0pKFZkUmVnaW9uVHlwZSB8fCAoVmRSZWdpb25UeXBlID0ge30pKTtcbi8qKiBEZXNjcmliZXMgVi1ET01BSU4gKElHIGFuZCBUUikgcmVnaW9uIChvZiBtdWx0aXBsZSBhbGlnbm1lbnQpXG4gKiBodHRwczovL3d3dy5pbWd0Lm9yZy9JTUdUU2NpZW50aWZpY0NoYXJ0L051bWJlcmluZy9JTUdUSUdWTHN1cGVyZmFtaWx5Lmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZkUmVnaW9uIHtcbiAgICAvKipcbiAgICAgKiBzdGFydCBhbmQgcG9zaXRpb24gYXJlIHN0cmluZ3MgYmVjYXVzZSB0aGV5IGNvcnJlc3BvbmQgdG8gcG9zaXRpb24gbmFtZXMgYXMgY29sdW1uIG5hbWVzIGluIEFOQVJDSSBvdXRwdXRcbiAgICAgKiBAcGFyYW0ge1ZkUmVnaW9uVHlwZX0gdHlwZSAgVHlwZSBvZiB0aGUgcmVnaW9uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIE5hbWUgb2YgdGhlIHJlZ2lvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmRlclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvblN0YXJ0TmFtZSAgUmVnaW9uIHN0YXJ0IHBvc2l0aW9uIChpbmNsdXNpdmUpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBvc2l0aW9uRW5kTmFtZSAgUmVnaW9uIGVuZCBwb3NpdGlvbiAoaW5jbHVzaXZlKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIG5hbWUsIGNoYWluLCBvcmRlciwgcG9zaXRpb25TdGFydE5hbWUsIHBvc2l0aW9uRW5kTmFtZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNoYWluID0gY2hhaW47XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5wb3NpdGlvblN0YXJ0TmFtZSA9IHBvc2l0aW9uU3RhcnROYW1lO1xuICAgICAgICB0aGlzLnBvc2l0aW9uRW5kTmFtZSA9IHBvc2l0aW9uRW5kTmFtZTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVF0Y21WbmFXOXVjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluWmtMWEpsWjJsdmJuTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc2NVUkJRWEZFTzBGQlJYSkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxGbEJTVmc3UVVGS1JDeFhRVUZaTEZsQlFWazdTVUZEZEVJc2JVTkJRVzFDTEVOQlFVRTdTVUZEYmtJc1owTkJRV2RDTEVOQlFVRTdTVUZEYUVJc01rSkJRVmNzUTBGQlFUdEJRVU5pTEVOQlFVTXNSVUZLVnl4WlFVRlpMRXRCUVZvc1dVRkJXU3hSUVVsMlFqdEJRVVZFT3p0SFFVVkhPMEZCUTBnc1RVRkJUU3hQUVVGUExGRkJRVkU3U1VGUmJrSTdPenM3T3pzN08wOUJVVWM3U1VGRFNDeFpRVUZaTEVsQlFXdENMRVZCUVVVc1NVRkJXU3hGUVVGRkxFdEJRV0VzUlVGQlJTeExRVUZoTEVWQlEzaEZMR2xDUVVGNVFpeEZRVUZGTEdWQlFYVkNPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXp0UlFVTXpReXhKUVVGSkxFTkJRVU1zWlVGQlpTeEhRVUZITEdWQlFXVXNRMEZCUXp0SlFVTjZReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkVZWFJoSUhOMGNuVmpkSFZ5WlhNZ1ptOXlJRll0Ukc5dFlXbHVJSEpsWjJsdmJuTWdiMllnWVc1MGFXSnZaR2xsYzF4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JXWkZKbFoybHZibFI1Y0dVZ2UxeHVJQ0JWYm10dWIzZHVJRDBnSjNWdWEyNXZkMjRuTEZ4dUlDQkdVaUE5SUNkbWNtRnRaWGR2Y21zbkxGeHVJQ0JEUkZJZ1BTQW5ZMlJ5Snl4Y2JuMWNibHh1THlvcUlFUmxjMk55YVdKbGN5QldMVVJQVFVGSlRpQW9TVWNnWVc1a0lGUlNLU0J5WldkcGIyNGdLRzltSUcxMWJIUnBjR3hsSUdGc2FXZHViV1Z1ZENsY2JpQXFJR2gwZEhCek9pOHZkM2QzTG1sdFozUXViM0puTDBsTlIxUlRZMmxsYm5ScFptbGpRMmhoY25RdlRuVnRZbVZ5YVc1bkwwbE5SMVJKUjFaTWMzVndaWEptWVcxcGJIa3VhSFJ0YkZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtUlNaV2RwYjI0Z2UxeHVJQ0IwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1U3WEc0Z0lHNWhiV1U2SUhOMGNtbHVaenRjYmlBZ1kyaGhhVzQ2SUhOMGNtbHVaenRjYmlBZ2IzSmtaWEk2SUc1MWJXSmxjanRjYmlBZ2NHOXphWFJwYjI1VGRHRnlkRTVoYldVNklITjBjbWx1Wnp0Y2JpQWdjRzl6YVhScGIyNUZibVJPWVcxbE9pQnpkSEpwYm1jN1hHNWNiaUFnTHlvcVhHNGdJQ0FxSUhOMFlYSjBJR0Z1WkNCd2IzTnBkR2x2YmlCaGNtVWdjM1J5YVc1bmN5QmlaV05oZFhObElIUm9aWGtnWTI5eWNtVnpjRzl1WkNCMGJ5QndiM05wZEdsdmJpQnVZVzFsY3lCaGN5QmpiMngxYlc0Z2JtRnRaWE1nYVc0Z1FVNUJVa05KSUc5MWRIQjFkRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmtVbVZuYVc5dVZIbHdaWDBnZEhsd1pTQWdWSGx3WlNCdlppQjBhR1VnY21WbmFXOXVYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCdVlXMWxJQ0JPWVcxbElHOW1JSFJvWlNCeVpXZHBiMjVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTm9ZV2x1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnZjbVJsY2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdjRzl6YVhScGIyNVRkR0Z5ZEU1aGJXVWdJRkpsWjJsdmJpQnpkR0Z5ZENCd2IzTnBkR2x2YmlBb2FXNWpiSFZ6YVhabEtWeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnY0c5emFYUnBiMjVGYm1ST1lXMWxJQ0JTWldkcGIyNGdaVzVrSUhCdmMybDBhVzl1SUNocGJtTnNkWE5wZG1VcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWgwZVhCbE9pQldaRkpsWjJsdmJsUjVjR1VzSUc1aGJXVTZJSE4wY21sdVp5d2dZMmhoYVc0NklITjBjbWx1Wnl3Z2IzSmtaWEk2SUc1MWJXSmxjaXhjYmlBZ0lDQndiM05wZEdsdmJsTjBZWEowVG1GdFpUb2djM1J5YVc1bkxDQndiM05wZEdsdmJrVnVaRTVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXVkSGx3WlNBOUlIUjVjR1U3WEc0Z0lDQWdkR2hwY3k1dVlXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbU5vWVdsdUlEMGdZMmhoYVc0N1hHNGdJQ0FnZEdocGN5NXZjbVJsY2lBOUlHOXlaR1Z5TzF4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1VGRHRnlkRTVoYldVZ1BTQndiM05wZEdsdmJsTjBZWEowVG1GdFpUdGNiaUFnSUNCMGFHbHpMbkJ2YzJsMGFXOXVSVzVrVG1GdFpTQTlJSEJ2YzJsMGFXOXVSVzVrVG1GdFpUdGNiaUFnZlZ4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQgKiBhcyByeGpzIGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgdmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzIH0gZnJvbSAnLi4vYW1pbm9hY2lkcyc7XG5pbXBvcnQgeyBOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXMgfSBmcm9tICcuLi91bmtub3duJztcbkhUTUxDYW52YXNFbGVtZW50LnByb3RvdHlwZS5nZXRDdXJzb3JQb3NpdGlvbiA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiBuZXcgREcuUG9pbnQoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCwgZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wKTtcbn07XG5ERy5SZWN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdCA8PSB4ICYmIHggPD0gdGhpcy5yaWdodCAmJiB0aGlzLnRvcCA8PSB5ICYmIHkgPD0gdGhpcy5ib3R0b207XG59O1xuZXhwb3J0IGNsYXNzIFBvc2l0aW9uTW9ub21lckluZm8ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBuZXcgREcuUmVjdCgwLCAwLCAwLCAwKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgUG9zaXRpb25JbmZvIHtcbiAgICAvKiogZnJlcSA9IHt9LCByb3dDb3VudCA9IDBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHBvc2l0aW9uICgnMTExQScsICcxMTEuMScsIGV0YylcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuZnJlcSA9IHt9O1xuICAgICAgICB0aGlzLnJvd0NvdW50ID0gMDtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgV2ViTG9nbyBleHRlbmRzIERHLkpzVmlld2VyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IC0xO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lID0gQ29sb3JTY2hlbWVzW051Y2xlb3RpZGVzV2ViTG9nby5yZXNpZHVlc1NldF07XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICB0aGlzLmF4aXNIZWlnaHQgPSAxMjtcbiAgICAgICAgdGhpcy5zZXFDb2wgPSBudWxsO1xuICAgICAgICAvLyBwcml2YXRlIG1heExlbmd0aDogbnVtYmVyID0gMTAwO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnJvd3NNYXNrZWQgPSAwO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gW107XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMudmlld1N1YnMgPSBbXTtcbiAgICAgICAgdGhpcy52aWV3ZXJJZCA9IFdlYkxvZ28udmlld2VyQ291bnQ7XG4gICAgICAgIFdlYkxvZ28udmlld2VyQ291bnQgKz0gMTtcbiAgICAgICAgdGhpcy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCA9IHRoaXMuZmxvYXQoJ3Bvc2l0aW9uV2lkdGgnLCAxNiAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiA0LCBtYXg6IDY0LCBwb3N0Zml4OiAncHgnfSovKTtcbiAgICAgICAgdGhpcy5taW5IZWlnaHQgPSB0aGlzLmZsb2F0KCdtaW5IZWlnaHQnLCA1MCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiAyNTAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZmxvYXQoJ21heEhlaWdodCcsIDEwMCAvKixcbiAgICAgICAgICB7ZWRpdG9yOiAnc2xpZGVyJywgbWluOiAyNSwgbWF4OiA1MDAsIHBvc3RmaXg6ICdweCd9Ki8pO1xuICAgICAgICB0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcyA9IHRoaXMuYm9vbCgnY29uc2lkZXJOdWxsU2VxdWVuY2VzJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdzdGFydFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5maXhXaWR0aCA9IHRoaXMuYm9vbCgnZml4V2lkdGgnLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudmVydGljYWxBbGlnbm1lbnQgPSB0aGlzLnN0cmluZygndmVydGljYWxBbGlnbm1lbnQnLCAnbWlkZGxlJywgeyBjaG9pY2VzOiBbJ3RvcCcsICdtaWRkbGUnLCAnYm90dG9tJ10gfSk7XG4gICAgICAgIHRoaXMuaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuc3RyaW5nKCdob3Jpem9udGFsQWxpZ25tZW50JywgJ2NlbnRlcicsIHsgY2hvaWNlczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddIH0pO1xuICAgICAgICB0aGlzLmZpdEFyZWEgPSB0aGlzLmJvb2woJ2ZpdEFyZWEnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zaHJpbmtFbXB0eVRhaWwgPSB0aGlzLmJvb2woJ3Nocmlua0VtcHR5VGFpbCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNraXBFbXB0eVBvc2l0aW9ucyA9IHRoaXMuYm9vbCgnc2tpcEVtcHR5UG9zaXRpb25zJywgZmFsc2UpO1xuICAgIH1cbiAgICAvKiogRm9yIHN0YXJ0UG9zaXRpb24gZXF1YWxzIHRvIGVuZFBvc2l0aW9uIExlbmd0aCBpcyAxICovXG4gICAgZ2V0IExlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRQb3NpdGlvbiA8PSB0aGlzLmVuZFBvc2l0aW9uID8gdGhpcy5lbmRQb3NpdGlvbiAtIHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgOiAwO1xuICAgIH1cbiAgICBpbml0KCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXZWJMb2dvIHNlY29uZCBpbml0aWFsaXphdGlvbiEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGVscFVybCA9ICcvaGVscC92aXN1YWxpemUvdmlld2Vycy93ZWItbG9nby5tZCc7XG4gICAgICAgICAgICB0aGlzLm1zZ0hvc3QgPSB1aS5kaXYoJ05vIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMgPSB1aS5jYW52YXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFt0aGlzLm1zZ0hvc3QsIHRoaXMuY2FudmFzXSk7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLmhlaWdodCA9ICcxMnB4JztcbiAgICAgICAgICAgIGNvbnN0IGdldE1vbm9tZXIgPSAocCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpQb3MgPSBNYXRoLmZsb29yKHAueCAvIHRoaXMuX3Bvc2l0aW9uV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IE9iamVjdC5rZXlzKHBvc2l0aW9uLmZyZXEpXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKChtKSA9PiBwb3NpdGlvbi5mcmVxW21dLmJvdW5kcy5jb250YWlucyhwLngsIHAueSkpO1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtqUG9zLCBtb25vbWVyLCBwb3NpdGlvbi5mcmVxW21vbm9tZXJdXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB0aGlzLnN1YnMucHVzaChyeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlb3ZlcicpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgYXJncy54ICsgMTYsIGFyZ3MueSArIDE2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMucHVzaChyeGpzLmZyb21FdmVudCh0aGlzLmNhbnZhcywgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgZS5idXR0b24gIT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIC8vIHByZXZlbnRzIGRlc2VsZWN0IGFsbCByb3dzIGlmIHdlIG1pc3MgbW9ub21lciBib3VuZHNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxTSA9IHNlcSA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHNlcSlbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlcU0gPT09IG1vbm9tZXIgJiYgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy52aWV3U3Vicy5wdXNoKHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKSk7XG4gICAgICAgICAgICB0aGlzLnJvb3QuYXBwZW5kKHRoaXMuaG9zdCk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5zbGlkZXIucm9vdCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Sb290U2l6ZUNoYW5nZWQoKSBgICtcbiAgICAgICAgLy8gICBgcm9vdC53aWR0aD0ke3RoaXMucm9vdC5jbGllbnRXaWR0aH0sIHJvb3QuaGVpZ2h0PSR7dGhpcy5yb290LmNsaWVudEhlaWdodH0sIGAgK1xuICAgICAgICAvLyAgIGBjYW52YXMud2lkdGg9JHt0aGlzLmNhbnZhcy53aWR0aH0sIGNhbnZhcy5oZWlnaHQ9JHt0aGlzLmNhbnZhcy5oZWlnaHR9IC5gKTtcbiAgICB9XG4gICAgLyoqIEFzc2lnbnMge0BsaW5rIHNlcUNvbH0gYW5kIHtAbGluayBjcH0gYmFzZWQgb24ge0BsaW5rIHNlcXVlbmNlQ29sdW1uTmFtZX0gYW5kIGNhbGxzIHtAbGluayByZW5kZXJ9KCkuXG4gICAgICovXG4gICAgdXBkYXRlU2VxQ29sKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPyB0aGlzLmRhdGFGcmFtZS5jb2wodGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXFDb2wgPSB0aGlzLnBpY2tVcFNlcUNvbCh0aGlzLmRhdGFGcmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnNlcUNvbCA/IHRoaXMuc2VxQ29sLm5hbWUgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKHRoaXMuc2VxQ29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICB1cGRhdGVQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZXFDb2wpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBjYXRlZ29yaWVzO1xuICAgICAgICBpZiAodGhpcy5zaHJpbmtFbXB0eVRhaWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbShuZXcgU2V0KEFycmF5LmZyb20oQXJyYXkoaW5kaWNlcy5sZW5ndGgpLmtleXMoKSkubWFwKChpKSA9PiB0aGlzLnNlcUNvbC5nZXQoaW5kaWNlc1tpXSkpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYXRlZ29yaWVzID0gdGhpcy5zZXFDb2wuY2F0ZWdvcmllcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi5jYXRlZ29yaWVzLm1hcCgocykgPT4gcyAhPT0gbnVsbCA/IFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKHMpLmxlbmd0aCA6IDApKSA6IDA7XG4gICAgICAgIC8vIEdldCBwb3NpdGlvbiBuYW1lcyBmcm9tIGRhdGEgY29sdW1uIHRhZyAncG9zaXRpb25OYW1lcydcbiAgICAgICAgY29uc3QgcG9zaXRpb25OYW1lc1R4dCA9IHRoaXMuc2VxQ29sLmdldFRhZygncG9zaXRpb25OYW1lcycpO1xuICAgICAgICAvLyBGYWxsYmFjayBpZiAncG9zaXRpb25OYW1lcycgdGFnIGlzIG5vdCBwcm92aWRlZFxuICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBwb3NpdGlvbk5hbWVzVHh0ID8gcG9zaXRpb25OYW1lc1R4dC5zcGxpdCgnLCAnKS5tYXAoKG4pID0+IG4udHJpbSgpKSA6XG4gICAgICAgICAgICBbLi4uQXJyYXkobWF4TGVuZ3RoKS5rZXlzKCldLm1hcCgoalBvcykgPT4gYCR7alBvcyArIDF9YCk7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9ICh0aGlzLnN0YXJ0UG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyAmJlxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluY2x1ZGVzKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLnN0YXJ0UG9zaXRpb25OYW1lKSA6IDA7XG4gICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAodGhpcy5lbmRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzICYmXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5jbHVkZXModGhpcy5lbmRQb3NpdGlvbk5hbWUpKSA/XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLmVuZFBvc2l0aW9uTmFtZSkgOiAobWF4TGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28ub25Qcm9wZXJ0eUNoYW5nZWQoICR7cHJvcGVydHkubmFtZX0gPSAnJyB9KWApO1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSk7XG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnY29uc2lkZXJOdWxsU2VxdWVuY2VzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlcXVlbmNlQ29sdW1uTmFtZSc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXFDb2woKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0UG9zaXRpb25OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5kUG9zaXRpb25OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncG9zaXRpb25XaWR0aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbkhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtYXhIZWlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZml4V2lkdGgnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndmVydGljYWxBbGlnbm1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbEFsaWdubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmaXRBcmVhJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Nocmlua0VtcHR5VGFpbCc6XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgICAgIGNvbnN0IF9zdXBlciA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgICAgICAgb25UYWJsZUF0dGFjaGVkOiB7IGdldDogKCkgPT4gc3VwZXIub25UYWJsZUF0dGFjaGVkIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhRnJhbWVUeHQgPSB0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJztcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoIGRhdGFGcmFtZSA9ICR7ZGF0YUZyYW1lVHh0fSApIHN0YXJ0YCk7XG4gICAgICAgICAgICBfc3VwZXIub25UYWJsZUF0dGFjaGVkLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24ub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4gdGhpcy5yZW5kZXIoKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdGhpcy5pbml0KCk7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBiaW86IFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4ub25UYWJsZUF0dGFjaGVkKCkgZW5kYCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXRhY2goKSB7XG4gICAgICAgIGNvbnN0IF9zdXBlciA9IE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgICAgICAgZGV0YWNoOiB7IGdldDogKCkgPT4gc3VwZXIuZGV0YWNoIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhRnJhbWVUeHQgPSBgJHt0aGlzLmRhdGFGcmFtZSA/ICdkYXRhJyA6ICdudWxsJ31gO1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgYmlvOiBXZWJMb2dvPCR7dGhpcy52aWV3ZXJJZH0+Lm9uVGFibGVBdHRhY2hlZCggZGF0YUZyYW1lID0gJHtkYXRhRnJhbWVUeHR9ICkgc3RhcnRgKTtcbiAgICAgICAgICAgIF9zdXBlci5kZXRhY2guY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMudmlld1N1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB0aGlzLmhvc3QucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaG9zdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYGJpbzogV2ViTG9nbzwke3RoaXMudmlld2VySWR9Pi5vblRhYmxlQXR0YWNoZWQoKSBlbmRgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9udWxsU2VxdWVuY2UoZmlsbGVyUmVzaWR1ZSA9ICdYJykge1xuICAgICAgICBpZiAodGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMpXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKS5maWxsKGZpbGxlclJlc2lkdWUpLmpvaW4oJycpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIF9jYWxjdWxhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuaG9zdCB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmNhbGNTaXplKCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICBjb25zdCBwb3NOYW1lID0gdGhpcy5wb3NpdGlvbk5hbWVzW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10gPSBuZXcgUG9zaXRpb25JbmZvKHBvc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDIwMjItMDUtMDUgYXNrYWxraW4gaW5zdHJ1Y3RlZCB0byBzaG93IFdlYkxvZ28gYmFzZWQgb24gZmlsdGVyIChub3Qgc2VsZWN0aW9uKVxuICAgICAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuZmlsdGVyLmdldFNlbGVjdGVkSW5kZXhlcygpO1xuICAgICAgICAvLyBjb25zdCBpbmRpY2VzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgPyB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkgOlxuICAgICAgICAvLyAgIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gaW5kaWNlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMucm93c051bGwgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5kaWNlcykge1xuICAgICAgICAgICAgbGV0IHMgPSAodGhpcy5zZXFDb2wuZ2V0KGkpKTtcbiAgICAgICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgICAgIHMgPSB0aGlzLl9udWxsU2VxdWVuY2UoKTtcbiAgICAgICAgICAgICAgICArK3RoaXMucm93c051bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZXFNID0gV2ViTG9nby5zcGxpdHRlckFzRmFzdGEocyk7XG4gICAgICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBzZXFNW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdIHx8ICctJztcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgICAgICAgICAgIHBtSW5mb1ttXSA9IG5ldyBQb3NpdGlvbk1vbm9tZXJJbmZvKCk7XG4gICAgICAgICAgICAgICAgcG1JbmZvW21dLmNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gaW4gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICBjb25zdCByID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMuY2FudmFzLmhlaWdodCAtIHRoaXMuYXhpc0hlaWdodCAqIHI7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ288JHt0aGlzLnZpZXdlcklkfT4uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG4gICAgICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgZnJlcSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuICAgICAgICAgICAgbGV0IHkgPSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcbiAgICAgICAgICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIHksIHRoaXMuX3Bvc2l0aW9uV2lkdGgsIGgpO1xuICAgICAgICAgICAgICAgIHkgKz0gaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb25cbiAgICB9XG4gICAgLy8gcmVmbGVjdCBjaGFuZ2VzIG1hZGUgdG8gZmlsdGVyL3NlbGVjdGlvblxuICAgIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LmlubmVyVGV4dCA9IGBVbmtub3duIHBhbGV0dGUgKGNvbHVtbiBzZW1UeXBlOiAnJHt0aGlzLnNlcUNvbC5zZW1UeXBlfScpLmA7XG4gICAgICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCAhdGhpcy5jcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmICghZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHJlY2FsYylcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZSgpO1xuICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcbiAgICAgICAgZy5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSB0aGlzLnRleHRCYXNlbGluZTtcbiAgICAgICAgLy8gUHJldmVudHMgZGl2aXNpb24gYnkgemVybyBvbiBMZW5ndGggPSAwXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyNyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgICAgICBnLnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgICAgICBjb25zdCBoU2NhbGUgPSBwb3NOYW1lTWF4V2lkdGggPCAodGhpcy5fcG9zaXRpb25XaWR0aCAtIDIpID8gMSA6ICh0aGlzLl9wb3NpdGlvbldpZHRoIC0gMikgLyBwb3NOYW1lTWF4V2lkdGg7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG4gICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBnLnNldFRyYW5zZm9ybShoU2NhbGUsIDAsIDAsIDEsIGpQb3MgKiB0aGlzLl9wb3NpdGlvbldpZHRoICsgdGhpcy5fcG9zaXRpb25XaWR0aCAvIDIsIDApO1xuICAgICAgICAgICAgZy5maWxsVGV4dChwb3MubmFtZSwgMCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21vbm9tZXIsIHBtSW5mb10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciAhPT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBwbUluZm8uYm91bmRzO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb250U3R5bGUgPSAnMTZweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhY2tzIHRvIHNjYWxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRvIHRhcmdldCByZWN0YW5nbGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVyQXNjZW50ID0gMC4yNTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBwZXJjYXNlTGV0dGVySGVpZ2h0ID0gMTIuMjtcbiAgICAgICAgICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ2xpZ2h0Z3JheSc7XG4gICAgICAgICAgICAgICAgICAgIGcubGluZVdpZHRoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgZy5yZWN0KGIubGVmdCwgYi50b3AsIGIud2lkdGgsIGIuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAoX2EgPSB0aGlzLmNwLmdldChtb25vbWVyKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5jcC5nZXQoJ290aGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIC8vZy5maWxsUmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1UbSA9IGcubWVhc3VyZVRleHQobW9ub21lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoYG06ICR7bX0sIG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50OiAke21NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50fWApO1xuICAgICAgICAgICAgICAgICAgICBnLnNldFRyYW5zZm9ybShiLndpZHRoIC8gbVRtLndpZHRoLCAwLCAwLCBiLmhlaWdodCAvIHVwcGVyY2FzZUxldHRlckhlaWdodCwgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQobW9ub21lciwgMCwgLXVwcGVyY2FzZUxldHRlckFzY2VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhbGNTaXplKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLmhvc3QpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0ID0gTWF0aC5taW4odGhpcy5tYXhIZWlnaHQsIE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0KSk7XG4gICAgICAgIGlmICh0aGlzLmZpdEFyZWEpIHtcbiAgICAgICAgICAgIGNvbnN0IHhTY2FsZSA9IHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCB5U2NhbGUgPSB0aGlzLnJvb3QuY2xpZW50V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oeFNjYWxlLCB5U2NhbGUpKTtcbiAgICAgICAgICAgIHdpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgICAgICAgdGhpcy5fcG9zaXRpb25XaWR0aCA9IHRoaXMucG9zaXRpb25XaWR0aCAqIHNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB3aWR0aCAqIHI7XG4gICAgICAgIHRoaXMuY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgICAgICAvLyBjb25zdCBjYW52YXNIZWlnaHQ6IG51bWJlciA9IHdpZHRoID4gdGhpcy5yb290LmNsaWVudFdpZHRoID8gaGVpZ2h0IC0gOCA6IGhlaWdodDtcbiAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnLCBgJHtoZWlnaHR9cHhgKTtcbiAgICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gdGhpcy5ob3N0LmNsaWVudEhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gY2FudmFzSGVpZ2h0ICogcjtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsIGAke2NhbnZhc0hlaWdodH1weGApO1xuICAgICAgICAvLyBBZGp1c3QgaG9zdCBhbmQgcm9vdCB3aWR0aFxuICAgICAgICBpZiAodGhpcy5maXhXaWR0aCkge1xuICAgICAgICAgICAgLy8gZnVsbCB3aWR0aCBmb3IgY2FudmFzIGhvc3QgYW5kIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsICdoaWRkZW4nLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBhbGxvdyBzY3JvbGwgY2FudmFzIGluIHJvb3RcbiAgICAgICAgICAgIHRoaXMucm9vdC5zdHlsZS53aWR0aCA9IHRoaXMuaG9zdC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byFpbXBvcnRhbnQnO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdycsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCd0ZXh0LWFsaWduJywgdGhpcy5ob3Jpem9udGFsQWxpZ25tZW50KTtcbiAgICAgICAgICAgIC8vIHZlcnRpY2FsIGFsaWdubWVudFxuICAgICAgICAgICAgbGV0IGhvc3RUb3BNYXJnaW4gPSAwO1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICAgICAgICAgIGhvc3RUb3BNYXJnaW4gPSBNYXRoLm1heCgwLCAodGhpcy5yb290LmNsaWVudEhlaWdodCAtIGhlaWdodCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICAgICAgaG9zdFRvcE1hcmdpbiA9IE1hdGgubWF4KDAsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQgLSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGAke2hvc3RUb3BNYXJnaW59cHhgLCAnaW1wb3J0YW50Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yb290LmNsaWVudEhlaWdodCA8IGhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnaGVpZ2h0JywgYCR7dGhpcy5yb290LmNsaWVudEhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ2hpZGRlbicsICdpbXBvcnRhbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFxuICAgICAgICAvLyAgIGB0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLnJvb3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLnJvb3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0ID0gJHt0aGlzLmhvc3Quc3R5bGUuaGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgIGB0aGlzLmhvc3QuY2xpZW50SGVpZ2h0ID0gJHt0aGlzLmhvc3QuY2xpZW50SGVpZ2h0fVxcbmAgK1xuICAgICAgICAvLyAgICdcXG4nICtcbiAgICAgICAgLy8gICBgdGhpcy5jYW52YXMuaGVpZ2h0ICAgICAgID0gJHt0aGlzLmNhbnZhcy5oZWlnaHR9XFxuYCArXG4gICAgICAgIC8vICAgYHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9ICR7dGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0fWApO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gIG1pbkxlbmd0aCBtaW5pbXVtIGxlbmd0aCBvZiBzZXF1ZW5jZSB0byBkZXRlY3QgcGFsZXR0ZSAoZW1wdHkgc3RyaW5ncyBhcmUgYWxsb3dlZClcbiAgICAgKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICAgICAqL1xuICAgIHN0YXRpYyBwaWNrVXBQYWxldHRlKHNlcUNvbCwgbWluTGVuZ3RoID0gNSkge1xuICAgICAgICBsZXQgcmVzID0gbnVsbDtcbiAgICAgICAgc3dpdGNoIChzZXFDb2wuc2VtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBBbWlub2FjaWRzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICAgICAgICByZXMgPSBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgICAgICAgICAgICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXRzID0gV2ViTG9nby5nZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgV2ViTG9nby5zcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhOdWNsZW90aWRlcy5OYW1lcykpLCBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbV0sXG4gICAgICAgICAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbSA9IGFscGhhYmV0Q2FuZGlkYXRlc1xuICAgICAgICAgICAgLm1hcCgoYykgPT4gV2ViTG9nby5nZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1swXSkpO1xuICAgICAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgICAgICBpZiAobWF4Q29zID4gMC42NSlcbiAgICAgICAgICAgIHJlcyA9IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzID0gVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHNlcUNvbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAgICAgKiBAcmV0dXJuIHsgU2VxQ29sU3RhdHMgfSwgc2FtZUxlbmd0aDogYm9vbGVhbiB9IHN0YXRzIG9mIGNvbHVtbiBzZXF1ZW5jZXNcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgICAgIGNvbnN0IGZyZXEgPSB7fTtcbiAgICAgICAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICAgICAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcSBvZiBzZXFDb2wuY2F0ZWdvcmllcykge1xuICAgICAgICAgICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG4gICAgICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgICAgICBmaXJzdExlbmd0aCA9IG1TZXEubGVuZ3RoO1xuICAgICAgICAgICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChtU2VxLmxlbmd0aCA+IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiBtU2VxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG0gaW4gZnJlcSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBmcmVxOiBmcmVxLCBzYW1lTGVuZ3RoOiBzYW1lTGVuZ3RoIH07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgICAgICBjb25zdCBrZXlzID0gbmV3IFNldChbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gICAgICAgIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG4gICAgICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgICAgIGNvbnN0IGFscGhhYmV0QSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2Yga2V5cykge1xuICAgICAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgICAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgICAgIGNvbnN0IGZyZXFWID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gICAgICAgIGNvbnN0IGFscGhhYmV0ViA9IG5ldyBWZWN0b3IoYWxwaGFiZXRBKTtcbiAgICAgICAgY29uc3QgY29zID0gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xuICAgICAgICByZXR1cm4gY29zO1xuICAgIH1cbiAgICAvKiogRmlyc3QgdHJ5IHRvIGZpbmQgY29sdW1uIHdpdGggc2VtVHlwZSAnYWxpZ25lZFNlcXVlbmNlJy5cbiAgICAgKiBOZXh0IGxvb2sgZm9yIGNvbHVtbiB3aXRoIGRhdGEgYWxwaGFiZXQgY29ycmVzcG9uZGluZyB0byBhbnkgb2YgdGhlIGtub3duIHBhbGV0dGVzLlxuICAgICAqIEBwYXJhbSB7REcuRGF0YUZyYW1lfSBkYXRhRnJhbWVcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IFRoZSBjb2x1bW4gd2Ugd2VyZSBsb29raW5nIGZvciBvciBudWxsXG4gICAgICovXG4gICAgcGlja1VwU2VxQ29sKGRhdGFGcmFtZSkge1xuICAgICAgICBsZXQgcmVzID0gZGF0YUZyYW1lLmNvbHVtbnMuYnlTZW1UeXBlKCdhbGlnbmVkU2VxdWVuY2UnKTtcbiAgICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkYXRhRnJhbWUuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwID0gV2ViTG9nby5waWNrVXBQYWxldHRlKGNvbCwgNSk7XG4gICAgICAgICAgICAgICAgaWYgKGNwICE9PSBudWxsICYmICEoY3AgaW5zdGFuY2VvZiBVbmtub3duU2VxUGFsZXR0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gY29sO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIFNwbGl0IHNlcXVlbmNlIGZvciBzaW5nbGUgY2hhcmFjdGVyIG1vbm9tZXJzLCBzcXVhcmUgYnJhY2tldHMgbXVsdGljaGFyIG1vbm9tZXIgbmFtZXMgb3IgZ2FwIHN5bWJvbC5cbiAgICAgKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gICAgICovXG4gICAgc3RhdGljIHNwbGl0dGVyQXNGYXN0YShzZXEpIHtcbiAgICAgICAgY29uc3QgcmVzID0gd3Uoc2VxLnRvU3RyaW5nKCkubWF0Y2hBbGwoV2ViTG9nby5tb25vbWVyUmUpKVxuICAgICAgICAgICAgLm1hcCgobWEpID0+IHtcbiAgICAgICAgICAgIGxldCBtUmVzO1xuICAgICAgICAgICAgY29uc3QgbSA9IG1hWzBdO1xuICAgICAgICAgICAgaWYgKG0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChtIGluIFdlYkxvZ28uYWFTeW5vbnltcykge1xuICAgICAgICAgICAgICAgICAgICBtUmVzID0gV2ViTG9nby5hYVN5bm9ueW1zW21dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbVJlcyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb25nIG1vbm9tZXIgJyR7bX0nIGhhcyBub3QgYSBzaG9ydCBzeW5vbnltLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1SZXM7XG4gICAgICAgIH0pLnRvQXJyYXkoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgLyoqIEdldHMgbWV0aG9kIHRvIHNwbGl0IHNlcXVlbmNlIGJ5IHNlcGFyYXRvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gICAgICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpIHtcbiAgICAgICAgcmV0dXJuIChzZXEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzICovXG4gICAgc3RhdGljIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnZmFzdGEnKSlcbiAgICAgICAgICAgIHJldHVybiBXZWJMb2dvLnNwbGl0dGVyQXNGYXN0YTtcbiAgICAgICAgZWxzZSBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSlcbiAgICAgICAgICAgIHJldHVybiBXZWJMb2dvLmdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3IpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuICAgICAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxuICAgIH1cbn1cbldlYkxvZ28ucmVzaWR1ZXNTZXQgPSAnbnVjbGVvdGlkZXMnO1xuV2ViTG9nby52aWV3ZXJDb3VudCA9IC0xO1xuV2ViTG9nby5tb25vbWVyUmUgPSAvXFxbKFxcdyspXFxdfChcXHcpfCgtKS9nO1xuLyoqIE9ubHkgc29tZSBvZiB0aGUgc3lub255bXMuIFRoZXNlIHdlcmUgb2J0YWluZWQgZnJvbSB0aGUgY2x1c3RlcmVkIG9saWdvcGVwdGlkZSBkYXRhc2V0LiAqL1xuV2ViTG9nby5hYVN5bm9ueW1zID0ge1xuICAgICdbTWVObGVdJzogJ0wnLFxuICAgICdbTWVBXSc6ICdBJyxcbiAgICAnW01lR10nOiAnRycsXG4gICAgJ1tNZUZdJzogJ0YnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWQyVmlMV3h2WjI4dWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUozWldJdGJHOW5ieTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3UVVGRFFTeFBRVUZQTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlEzUkRMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZkRU1zVDBGQlR5eEZRVUZGTEUxQlFVMHNTVUZCU1N4RFFVRkRPMEZCUTNCQ0xFOUJRVThzUzBGQlN5eEpRVUZKTEUxQlFVMHNUVUZCVFN4RFFVRkRPMEZCUlRkQ0xFOUJRVThzUlVGQlF5eE5RVUZOTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVU4yUlN4UFFVRlBMRVZCUVVNc1dVRkJXU3hGUVVGRkxHZENRVUZuUWl4RlFVRkRMRTFCUVUwc2FVUkJRV2xFTEVOQlFVTTdRVUZETDBZc1QwRkJUeXhGUVVGRExGVkJRVlVzUlVGQlJTeHJRa0ZCYTBJc1JVRkJReXhOUVVGTkxHVkJRV1VzUTBGQlF6dEJRVU0zUkN4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYUVVc1QwRkJUeXhGUVVGRExHbENRVUZwUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNXVUZCV1N4RFFVRkRPMEZCYjBKcVJTeHBRa0ZCYVVJc1EwRkJReXhUUVVGVExFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1ZVRkJVeXhMUVVGcFFqdEpRVU40UlN4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRVZCUVVVc1EwRkJRenRKUVVNeFF5eFBRVUZQTEVsQlFVa3NSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRNMFVzUTBGQlF5eERRVUZETzBGQlJVWXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1NVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVOb1JpeERRVUZETEVOQlFVTTdRVUZGUml4TlFVRk5MRTlCUVU4c2JVSkJRVzFDTzBsQlV6bENPMUZCUTBVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjRReXhEUVVGRE8wTkJRMFk3UVVGRlJDeE5RVUZOTEU5QlFVOHNXVUZCV1R0SlFVdDJRanM3VDBGRlJ6dEpRVU5JTEZsQlFWa3NTVUZCV1R0UlFVTjBRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzQkNMRU5CUVVNN1EwRkRSanRCUVVWRUxFMUJRVTBzVDBGQlR5eFBRVUZSTEZOQlFWRXNSVUZCUlN4RFFVRkRMRkZCUVZFN1NVRnpSSFJETzFGQlEwVXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRnVSRVlzWVVGQlVTeEhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNSQ0xHZENRVUZYTEVkQlFWa3NTMEZCU3l4RFFVRkRPMUZCUlhKRExEUkdRVUUwUmp0UlFVTnNSaXhQUVVGRkxFZEJRWE5DTEVsQlFVa3NRMEZCUXp0UlFWRXZRaXhsUVVGVkxFZEJRVmNzUlVGQlJTeERRVUZETzFGQlJYaENMRmRCUVUwc1IwRkJOa0lzU1VGQlNTeERRVUZETzFGQlEyaEVMRzFEUVVGdFF6dFJRVU16UWl4alFVRlRMRWRCUVcxQ0xFVkJRVVVzUTBGQlF6dFJRVVV2UWl4bFFVRlZMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM1pDTEdGQlFWRXNSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRnJRbkpDTEd0Q1FVRmhMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJSVGRDTEd0Q1FVRmhMRWRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk0wSXNaMEpCUVZjc1IwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVTk2UWl4aFFVRlJMRWRCUVcxQ0xFVkJRVVVzUTBGQlF6dFJRVXR3UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEY0VNc1QwRkJUeXhEUVVGRExGZEJRVmNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGZWtJc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZGTVVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeEZRVUZGTEVWQlFVVXNRMEZCUVRzNFJFRkRia0lzUTBGQlF5eERRVUZETzFGQlEzaEVMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hEUVVGQk8yZEZRVU5oTEVOQlFVTXNRMEZCUXp0UlFVTXhSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFZEJRVWNzUTBGQlFUdG5SVUZEV1N4RFFVRkRMRU5CUVVNN1VVRkZNVVFzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNkVUpCUVhWQ0xFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEZGtVc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYjBKQlFXOUNMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmJFVXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2JVSkJRVzFDTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRhRVVzU1VGQlNTeERRVUZETEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHbENRVUZwUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSVFZFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZOME1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFVkJRVVVzVVVGQlVTeEZRVU5vUlN4RlFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeFJRVUZSTEVWQlFVVXNVVUZCVVN4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEZGQlFWRXNSVUZEY0VVc1JVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRTlCUVU4c1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF6dFJRVU14UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU14UkN4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXh2UWtGQmIwSXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVOdVJTeERRVUZETzBsQmNrTkVMREJFUVVFd1JEdEpRVU14UkN4SlFVRlpMRTFCUVUwN1VVRkRhRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOb1J5eERRVUZETzBsQmIwTmhMRWxCUVVrN08xbEJRMmhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGRGNFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhuUTBGQlowTXNRMEZCUXl4RFFVRkRPMmRDUVVOb1JDeFBRVUZQTzJGQlExSTdXVUZGUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU40UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExIRkRRVUZ4UXl4RFFVRkRPMWxCUlhKRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFpRVU53UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUlhCRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRekZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZGYWtNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVWb1JDdzJRMEZCTmtNN1dVRkROME1zZVVOQlFYbERPMWxCUTNwRExEQkRRVUV3UXp0WlFVVXhReXhOUVVGTkxGVkJRVlVzUjBGQlJ5eERRVUZETEVOQlFWY3NSVUZCZFVRc1JVRkJSVHRuUWtGRGRFWXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dG5Ra0ZEYmtRc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRmRFTXNTVUZCU1N4UlFVRlJMRXRCUVVzc1MwRkJTeXhEUVVGRE8yOUNRVU55UWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkZOVUlzVFVGQlRTeFBRVUZQTEVkQlFYVkNMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXp0eFFrRkRNMFFzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBRc1NVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV6dHZRa0ZEZGtJc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSVFZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhGUVVGRkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOcVJDeERRVUZETEVOQlFVTTdXVUZIUml4eFIwRkJjVWM3V1VGRGNrY3NUMEZCVHp0WlFVVlFMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTzI5Q1FVTmtMRTlCUVU4N1owSkJSVlFzVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCWlN4RFFVRkRPMmRDUVVNM1FpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSWGhGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZPM2RDUVVNdlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0M1FrRkRia01zVFVGQlRTeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJRenQzUWtGRGJFWXNUMEZCVHl4SlFVRkpMRXRCUVVzc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHZRa0ZETjBRc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTTdhVUpCUXpsQ08zRkNRVUZOTzI5Q1FVTk1MRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdhVUpCUTI1Q08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVktMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVdFc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGaExFVkJRVVVzUlVGQlJUdG5Ra0ZEYkVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRE8yOUNRVU12UWl4UFFVRlBPMmRDUVVWVUxFMUJRVTBzU1VGQlNTeEhRVUZITEVOQlFXVXNRMEZCUXp0blFrRkROMElzVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVWNFJTeDFSRUZCZFVRN1owSkJRM1pFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEU5QlFVOHNSVUZCUlR0dlFrRkROVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVTdkMEpCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzNkQ1FVTnVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPM2RDUVVOc1JpeFBRVUZQTEVsQlFVa3NTMEZCU3l4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU0zUkN4RFFVRkRMRU5CUVVNc1EwRkJRenRwUWtGRFNqdFpRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZTaXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGTjBZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRelZDTERKRFFVRXlRenRaUVVVelF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0JDTEVOQlFVTTdTMEZCUVR0SlFVVlBMR2xDUVVGcFFpeERRVUZETEVsQlFWTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhwUkVGQmFVUTdVVUZEYWtRc2NVWkJRWEZHTzFGQlEzSkdMR2xHUVVGcFJqdEpRVU51Uml4RFFVRkRPMGxCUlVRN1QwRkRSenRKUVVOTExGbEJRVms3VVVGRGJFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExHdENRVUZyUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8xbEJRek5HTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzWkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03WjBKQlEyaEVMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETzJGQlEycEZPMWxCUTBRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTm1MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF6dG5Ra0ZEZGtJc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dGhRVU01UXp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRVZCUVVVc1EwRkJRenRuUWtGRGVFSXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRUlzU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1lVRkRhRUk3VTBGRFJqdFJRVU5FTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVOHNaVUZCWlR0UlFVTnlRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMDdXVUZEWkN4UFFVRlBPMUZCUlZRc1NVRkJTU3hWUVVFNFFpeERRVUZETzFGQlEyNURMRWxCUVVrc1NVRkJTU3hEUVVGRExHVkJRV1VzUlVGQlJUdFpRVU40UWl4TlFVRk5MRTlCUVU4c1IwRkJaU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeERRVUZETzFsQlEzWkZMRlZCUVZVc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVTTNRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJReTlHTzJGQlFVMDdXVUZEVEN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEY2tNN1VVRkRSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eFZRVUZWTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRMnhGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RkxEQkVRVUV3UkR0UlFVTXhSQ3hOUVVGTkxHZENRVUZuUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxHdEVRVUZyUkR0UlFVTnNSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BHTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRk5VUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllUdFpRVU5vUlN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVR0WlFVTTFSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzQkVMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRka1VzUTBGQlF6dEpRVVZsTEdsQ1FVRnBRaXhEUVVGRExGRkJRWEZDTzFGQlEzSkVMSGRGUVVGM1JUdFJRVU40UlN4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkZiRU1zVVVGQlVTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZPMWxCUTNaQ0xFdEJRVXNzZFVKQlFYVkNPMmRDUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU5zUWl4TlFVRk5PMWxCUTFJc1MwRkJTeXh2UWtGQmIwSTdaMEpCUTNaQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0blFrRkRjRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NiVUpCUVcxQ08yZENRVU4wUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03WjBKQlEzQkNMRTFCUVUwN1dVRkRVaXhMUVVGTExHbENRVUZwUWp0blFrRkRjRUlzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMmRDUVVOd1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4bFFVRmxPMmRDUVVOc1FpeEpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU03WjBKQlEzcERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEZkQlFWYzdaMEpCUTJRc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NWMEZCVnp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVOc1FpeE5RVUZOTzFsQlExSXNTMEZCU3l4VlFVRlZPMmRDUVVOaUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnhDTEUxQlFVMDdXVUZEVWl4TFFVRkxMRzFDUVVGdFFqdG5Ra0ZEZEVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRiRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NjVUpCUVhGQ08yZENRVU40UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xbEJRMUlzUzBGQlN5eFRRVUZUTzJkQ1FVTmFMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJ4Q0xFMUJRVTA3V1VGRFVpeExRVUZMTEdsQ1FVRnBRanRuUWtGRGNFSXNTVUZCU1N4RFFVRkRMR1ZCUVdVc1JVRkJSU3hEUVVGRE8yZENRVU4yUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnNRaXhOUVVGTk8xTkJRMUE3U1VGRFNDeERRVUZETzBsQlJYRkNMR1ZCUVdVN096czdPMWxCUTI1RExFMUJRVTBzV1VGQldTeEhRVUZYTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUXpsRUxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEd0RFFVRnJReXhaUVVGWkxGVkJRVlVzUTBGQlF5eERRVUZETzFsQlEzSkhMRTlCUVUwc1pVRkJaU3haUVVGSE8xbEJSWGhDTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRaUVVWd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3WjBKQlF6ZENMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMjVHTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlR0dlFrRkROMFFzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRPMjlDUVVOMlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNN1owSkJRMmhDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1lVRkRURHRaUVVWRUxFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMWxCUTJ4Q0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlhGQ0xFMUJRVTA3T3pzN08xbEJRekZDTEUxQlFVMHNXVUZCV1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dFpRVU16UkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hyUTBGQmEwTXNXVUZCV1N4VlFVRlZMRU5CUVVNc1EwRkJRenRaUVVOeVJ5eFBRVUZOTEUxQlFVMHNXVUZCUnp0WlFVVm1MRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTnNSQ3hKUVVGSkxFTkJRVU1zU1VGQlN5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNoQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUTNwQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRPMWxCUlhSQ0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTMEZCU3l4RFFVRkRPMWxCUTNwQ0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNRMEZCUXp0TFFVRkJPMGxCUlZNc1lVRkJZU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEhRVUZITzFGQlEzcERMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWp0WlFVTTFRaXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSVGRFTEU5QlFVOHNSVUZCUlN4RFFVRkRPMGxCUTFvc1EwRkJRenRKUVVWVExGVkJRVlU3VVVGRGJFSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRPMWxCUXk5RUxFOUJRVTg3VVVGRlZDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkZhRUlzU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZUVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVWQlFVVTdXVUZETjBNc1RVRkJUU3hQUVVGUExFZEJRVmNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzUkZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRGJFUTdVVUZGUkN4cFJrRkJhVVk3VVVGRGFrWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF6dFJRVU16UkN3eVIwRkJNa2M3VVVGRE0wY3NaMFJCUVdkRU8xRkJSV2hFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF6dFJRVU5xUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZzUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU4yUWl4SlFVRkpMRU5CUVVNc1IwRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUZERMRWxCUVVrc1EwRkJReXhEUVVGRExFVkJRVVU3WjBKQlEwNHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFVkJRVVVzUTBGQlF6dG5Ra0ZEZWtJc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzJGQlEycENPMWxCUlVRc1RVRkJUU3hKUVVGSkxFZEJRV0VzVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOc1JDeExRVUZMTEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSVHRuUWtGRE4wTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1owSkJRM3BETEUxQlFVMHNRMEZCUXl4SFFVRlhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJRenRuUWtGRGVrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF6dHZRa0ZEYUVJc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NiVUpCUVcxQ0xFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMkZCUTI1Q08xTkJRMFk3VVVGRlJDdzBRa0ZCTkVJN1VVRkROVUlzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zZVVOQlFYbERPMWxCUlhwRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5zUXl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTVHRuUWtGRGRrTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8xTkJRM1pGTzFGQlEwUXNXVUZCV1R0UlFVVmFMRTFCUVUwc1EwRkJReXhIUVVGSExFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRSUVVOc1F5eE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNelJDeHRSa0ZCYlVZN1VVRkZia1lzTUVKQlFUQkNPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzU1VGQlNTeEhRVUY1UXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTTNSU3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF6dFpRVVV2UXl4SlFVRkpMRU5CUVVNc1IwRkJWeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETzFsQlJXaERMRTFCUVUwc1QwRkJUeXhIUVVGSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMmRDUVVOcVJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjN2IwSkJRemxDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8zRkNRVU0xUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3YjBKQlEyNURMRTlCUVU4c1EwRkJReXhEUVVGRE8zRkNRVU5PTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3YjBKQlEyNUNMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03Y1VKQlExQXNiMEpCUVc5Q08yOUNRVU4yUWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMlFzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEU0N4TFFVRkxMRTFCUVUwc1MwRkJTeXhKUVVGSkxFOUJRVThzUlVGQlJUdG5Ra0ZETTBJc1RVRkJUU3hOUVVGTkxFZEJRWGRDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE4wTXNPRUpCUVRoQ08yZENRVU01UWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4UlFVRlJMRU5CUVVNN1owSkJSWFJFTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU51Uml4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJRMUk3VTBGRFJqdFJRVU5FTEZsQlFWazdTVUZEWkN4RFFVRkRPMGxCUlVRc01rTkJRVEpETzBsQlF6TkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNUczdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlEyaENMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEVsQlFVa3NRMEZCUXl4UFFVRlJMRU5CUVVNc1UwRkJVeXhIUVVGSExIRkRRVUZ4UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUzBGQlN5eERRVUZETzJkQ1FVTjRSaXhKUVVGSkxFTkJRVU1zVDBGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8yRkJRMnhETzJsQ1FVRk5PMmRDUVVOTUxFbEJRVWtzUTBGQlF5eFBRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU03WVVGRGRFTTdVMEZEUmp0UlFVVkVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVNM1JDeFBRVUZQTzFGQlJWUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRka01zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZCUlN4UFFVRlBPMUZCUldZc1NVRkJTU3hOUVVGTk8xbEJRMUlzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUlhCQ0xFTkJRVU1zUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0UlFVTnVRaXhEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEU5QlFVOHNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU40UkN4RFFVRkRMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZGYmtNc01FTkJRVEJETzFGQlF6RkRMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU4wUkN4UFFVRlBPMUZCUlZRc05FSkJRVFJDTzFGQlF6VkNMRU5CUVVNc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dFJRVU51UWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFOUJRVThzUTBGQlF6dFJRVU4wUWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU4yUWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExIVkRRVUYxUXl4RFFVRkRPMUZCUTJwRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxFMUJRVTBzUjBGQlJ5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRk4wY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRE4wTXNUVUZCVFN4SFFVRkhMRWRCUVdsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRMME1zUTBGQlF5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMWxCUTI1Q0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVU5tTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRek5FTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkROVUk3VVVGRFJDd3JRa0ZCSzBJN1VVRkZMMElzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zUzBGQlN5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0blFrRkRla1VzU1VGQlNTeFBRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8yOUNRVVY0UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXgxUTBGQmRVTXNRMEZCUXp0dlFrRkRNVVFzTUVSQlFUQkVPMjlDUVVNeFJDeE5RVUZOTEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF6dHZRa0ZEYmtNc1RVRkJUU3h4UWtGQmNVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJSVzVETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1IwRkJSeXhYUVVGWExFTkJRVU03YjBKQlF6VkNMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTm9RaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dHZRa0ZEZWtNc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eE5RVUZCTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eHRRMEZCU1N4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkRNMFFzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNN2IwSkJRM0pDTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRE8yOUNRVU51UWl3clEwRkJLME03YjBKQlF5OURMRTFCUVUwc1IwRkJSeXhIUVVGblFpeERRVUZETEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yOUNRVVZvUkN4MVEwRkJkVU03YjBKQlEzWkRMSGxHUVVGNVJqdHZRa0ZGZWtZc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGRFdpeERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExIRkNRVUZ4UWl4RlFVTXpSQ3hEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGFrSXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zUTBGQlF6dHBRa0ZEYUVRN1lVRkRSanRUUVVOR08wbEJRMGdzUTBGQlF6dEpRVVZQTEZGQlFWRTdVVUZEWkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUXpWQ0xFOUJRVTg3VVVGRlZDeEpRVUZKTEV0QlFVc3NSMEZCVnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZEY2tRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZlRVlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMWxCUTJoQ0xFMUJRVTBzVFVGQlRTeEhRVUZYTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hIUVVGSExFMUJRVTBzUTBGQlF6dFpRVU4yUkN4TlFVRk5MRTFCUVUwc1IwRkJWeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4TFFVRkxMRU5CUVVNN1dVRkRja1FzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU53UkN4TFFVRkxMRWRCUVVjc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFpRVU4wUWl4TlFVRk5MRWRCUVVjc1RVRkJUU3hIUVVGSExFdEJRVXNzUTBGQlF6dFpRVU40UWl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NTMEZCU3l4RFFVRkRPMU5CUTJ4RU8xRkJSVVFzVFVGQlRTeERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZGZGtNc2IwWkJRVzlHTzFGQlEzQkdMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEzSkVMRTFCUVUwc1dVRkJXU3hIUVVGWExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTNCRUxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlN4SFFVRkhMRmxCUVZrc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRk4wUXNOa0pCUVRaQ08xRkJRemRDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRaUVVOcVFpeHpRMEZCYzBNN1dVRkRkRU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFdEJRVXNzU1VGQlNTeERRVUZETzFsQlF6ZEVMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRE8xbEJRM1pETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8xTkJRMmhGTzJGQlFVMDdXVUZEVEN3NFFrRkJPRUk3V1VGRE9VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUjBGQlJ5eE5RVUZOTEVOQlFVTTdXVUZEZGtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4SFFVRkhMR2RDUVVGblFpeERRVUZETzFsQlF6ZERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRk9VTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZsQlFWa3NSVUZCUlN4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0WlFVVndSU3h4UWtGQmNVSTdXVUZEY2tJc1NVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzUkNMRkZCUVZFc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RlFVRkZPMmRDUVVOb1F5eExRVUZMTEV0QlFVczdiMEpCUTFJc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEYkVJc1RVRkJUVHRuUWtGRFVpeExRVUZMTEZGQlFWRTdiMEpCUTFnc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEyNUZMRTFCUVUwN1owSkJRMUlzUzBGQlN5eFJRVUZSTzI5Q1FVTllMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXp0dlFrRkROMFFzVFVGQlRUdGhRVU5RTzFsQlEwUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEZsQlFWa3NSVUZCUlN4SFFVRkhMR0ZCUVdFc1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF5eERRVUZETzFsQlJUZEZMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NUVUZCVFN4RlFVRkZPMmRDUVVOdVF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFbEJRVWtzUTBGQlF5eERRVUZETzJkQ1FVTnlSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzJGQlEycEVPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUTBGQlF5eFpRVUZaTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8yRkJRMnhGTzFOQlEwWTdVVUZGUkN4cFFrRkJhVUk3VVVGRGFrSXNOa1JCUVRaRU8xRkJRemRFTERaRVFVRTJSRHRSUVVNM1JDdzJSRUZCTmtRN1VVRkROMFFzTmtSQlFUWkVPMUZCUXpkRUxGZEJRVmM3VVVGRFdDd3lSRUZCTWtRN1VVRkRNMFFzSzBSQlFTdEVPMGxCUTJwRkxFTkJRVU03U1VGRlJEczdPenRQUVVsSE8wbEJRMGtzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRnBRaXhGUVVGRkxGbEJRVzlDTEVOQlFVTTdVVUZEYkVVc1NVRkJTU3hIUVVGSExFZEJRWE5DTEVsQlFVa3NRMEZCUXp0UlFVTnNReXhSUVVGUkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEZUVJc1MwRkJTeXhWUVVGVkxFTkJRVU1zZDBKQlFYZENPMmRDUVVOMFF5eEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVlVGQlZTeERRVUZETzJkQ1FVTndReXhOUVVGTk8xbEJRMUlzUzBGQlN5eFhRVUZYTEVOQlFVTXNkMEpCUVhkQ08yZENRVU4yUXl4SFFVRkhMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMmRDUVVOMlF5eE5RVUZOTzFOQlExQTdVVUZEUkN4TlFVRk5MRXRCUVVzc1IwRkJaMElzVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFOUJRVThzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0UlFVVjRSaXhOUVVGTkxHdENRVUZyUWl4SFFVRm5RenRaUVVOMFJDeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMWxCUXpORkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEZUVVc1EwRkJRenRSUVVOR0xHZEVRVUZuUkR0UlFVTm9SQ3hOUVVGTkxIRkNRVUZ4UWl4SFFVRmhMR3RDUVVGclFqdGhRVU4yUkN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETDBRc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdVVUZEYkVRc1NVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFpRVU5tTEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenM3V1VGRmJrVXNSMEZCUnl4SFFVRkhMR3RDUVVGclFpeERRVUZETEV0QlFVc3NRMEZCUXp0UlFVVnFReXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTklMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQmFVSXNSVUZCUlN4VFFVRnBRaXhGUVVGRkxGRkJRWE5DTzFGQlF6RkZMRTFCUVUwc1NVRkJTU3hIUVVFMFFpeEZRVUZGTEVOQlFVTTdVVUZEZWtNc1NVRkJTU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEzUkNMRWxCUVVrc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVVYyUWl4TFFVRkxMRTFCUVUwc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVWQlFVVTdXVUZEYmtNc1RVRkJUU3hKUVVGSkxFZEJRVWNzVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUlROQ0xFbEJRVWtzVjBGQlZ5eEpRVUZKTEVsQlFVazdaMEpCUTNKQ0xGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMmxDUVVOMlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1YwRkJWenRuUWtGRGJFTXNWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVWeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1UwRkJVeXhGUVVGRk8yZENRVU16UWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdHZRa0ZEY0VJc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXp0M1FrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOa0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN2FVSkJRMlE3WVVGRFJqdFRRVU5HTzFGQlEwUXNUMEZCVHl4RlFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVlVGQlZTeEZRVUZGTEZWQlFWVXNSVUZCUXl4RFFVRkRPMGxCUXpsRExFTkJRVU03U1VGRlRTeE5RVUZOTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zU1VGQmEwSXNSVUZCUlN4UlFVRnhRaXhGUVVGRkxGbEJRVzlDTEVkQlFVYzdVVUZEY0Vjc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFWTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hIUVVGSExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETTBVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVVjJRaXhOUVVGTkxFdEJRVXNzUjBGQllTeEZRVUZGTEVOQlFVTTdVVUZETTBJc1RVRkJUU3hUUVVGVExFZEJRV0VzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEzQkNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRaUVVOd1F5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZWtNN1VVRkRSQ3d3UmtGQk1FWTdVVUZETVVZc1RVRkJUU3hMUVVGTExFZEJRVmNzU1VGQlNTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVFVGQlRTeFRRVUZUTEVkQlFWY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03VVVGRGFFUXNUVUZCVFN4SFFVRkhMRWRCUVZjc1owSkJRV2RDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcEhMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVVZFT3pzN08wOUJTVWM3U1VGRFN5eFpRVUZaTEVOQlFVTXNVMEZCZFVJN1VVRkRNVU1zU1VGQlNTeEhRVUZITEVkQlFYRkNMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VVVGRE0wVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1NVRkJTU3hGUVVGRk8xbEJRMllzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRk8yZENRVU51UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVkQlFXZENMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzUkVMRWxCUVVrc1JVRkJSU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4WlFVRlpMR2xDUVVGcFFpeERRVUZETEVWQlFVVTdiMEpCUTNKRUxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTTdiMEpCUTFZc1RVRkJUVHRwUWtGRFVEdGhRVU5HTzFOQlEwWTdVVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03U1VGSlJEczdPMDlCUjBjN1NVRkRTU3hOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEVkQlFWRTdVVUZEY0VNc1RVRkJUU3hIUVVGSExFZEJRV0VzUlVGQlJTeERRVUZ0UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRoUVVOdVJpeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRnZRaXhGUVVGRkxFVkJRVVU3V1VGRE5VSXNTVUZCU1N4SlFVRlpMRU5CUVVNN1dVRkRha0lzVFVGQlRTeERRVUZETEVkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3WjBKQlEyaENMRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZWTEVWQlFVVTdiMEpCUXpOQ0xFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8ybENRVU01UWp0eFFrRkJUVHR2UWtGRFRDeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRPMjlDUVVOV0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1EwRkJRenRwUWtGREwwUTdZVUZEUmp0cFFrRkJUVHRuUWtGRFRDeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTFZN1dVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8xRkJSV1lzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlVRN096dFBRVWRITzBsQlEwa3NUVUZCVFN4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZOQlFXbENPMUZCUTNSRUxFOUJRVThzUTBGQlF5eEhRVUZYTEVWQlFVVXNSVUZCUlR0WlFVTnlRaXhQUVVGUExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkRPVUlzUTBGQlF5eERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVMSGxFUVVGNVJEdEpRVU5zUkN4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hKUVVGSkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVGRE8xbEJRM3BETEU5QlFVOHNUMEZCVHl4RFFVRkRMR1ZCUVdVc1EwRkJRenRoUVVNMVFpeEpRVUZKTEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zVjBGQlZ5eERRVUZETzFsQlEyeEVMRTlCUVU4c1QwRkJUeXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE96dFpRVVZ1UkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOUNRVUZ2UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3BFTERCQ1FVRXdRanRKUVVNMVFpeERRVUZET3p0QlFYSnlRbUVzYlVKQlFWY3NSMEZCUnl4aFFVRmhMRU5CUVVNN1FVRkRNMElzYlVKQlFWY3NSMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVhGdlFucENMR2xDUVVGVExFZEJRVWNzY1VKQlFYRkNMRU5CUVVNN1FVRnBSR3BFTERoR1FVRTRSanRCUVVNdlJTeHJRa0ZCVlN4SFFVRXJRanRKUVVOMFJDeFRRVUZUTEVWQlFVVXNSMEZCUnp0SlFVTmtMRTlCUVU4c1JVRkJSU3hIUVVGSE8wbEJRMW9zVDBGQlR5eEZRVUZGTEVkQlFVYzdTVUZEV2l4UFFVRlBMRVZCUVVVc1IwRkJSenREUVVOaUxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZDNVZ1puSnZiU0FuZDNVbk8xeHVhVzF3YjNKMElDb2dZWE1nY25ocWN5Qm1jbTl0SUNkeWVHcHpKenRjYmx4dWFXMXdiM0owSUh0V1pXTjBiM0o5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2RtVmpkRzl5VEdWdVozUm9MQ0IyWldOMGIzSkViM1JRY205a2RXTjBmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTBGdGFXNXZZV05wWkhNc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZZVzFwYm05aFkybGtjeWM3WEc1cGJYQnZjblFnZTA1MVkyeGxiM1JwWkdWekxDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTl1ZFdOc1pXOTBhV1JsY3ljN1hHNXBiWEJ2Y25RZ2UxVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbExDQlZibXR1YjNkdVUyVnhVR0ZzWlhSMFpYTjlJR1p5YjIwZ0p5NHVMM1Z1YTI1dmQyNG5PMXh1YVcxd2IzSjBJSHRUWlhGUVlXeGxkSFJsZlNCbWNtOXRJQ2N1TGk5elpYRXRjR0ZzWlhSMFpYTW5PMXh1YVcxd2IzSjBJSHRUZFdKelkzSnBjSFJwYjI1OUlHWnliMjBnSjNKNGFuTW5PMXh1WEc1a1pXTnNZWEpsSUcxdlpIVnNaU0FuWkdGMFlXZHliMnN0WVhCcEwzTnlZeTluY21sa0p5QjdYRzRnSUdsdWRHVnlabUZqWlNCU1pXTjBJSHRjYmlBZ0lDQmpiMjUwWVdsdWN5aDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWs2SUdKdmIyeGxZVzQ3WEc0Z0lIMWNibjFjYmx4dVpHVmpiR0Z5WlNCbmJHOWlZV3dnZTF4dUlDQnBiblJsY21aaFkyVWdTRlJOVEVOaGJuWmhjMFZzWlcxbGJuUWdlMXh1SUNBZ0lHZGxkRU4xY25OdmNsQnZjMmwwYVc5dUtHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtUb2dSRWN1VUc5cGJuUTdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1RXOXViMjFsY2taeVpYRnpJRDBnZXlCYmJUb2djM1J5YVc1blhUb2diblZ0WW1WeUlIMDdYRzVsZUhCdmNuUWdkSGx3WlNCVFpYRkRiMnhUZEdGMGN5QTlJSHNnWm5KbGNUb2dUVzl1YjIxbGNrWnlaWEZ6TENCellXMWxUR1Z1WjNSb09pQmliMjlzWldGdUlIMWNibVY0Y0c5eWRDQjBlWEJsSUZOd2JHbDBkR1Z5Um5WdVl5QTlJQ2h6WlhFNklITjBjbWx1WnlrZ1BUNGdjM1J5YVc1blcxMDdYRzVjYmtoVVRVeERZVzUyWVhORmJHVnRaVzUwTG5CeWIzUnZkSGx3WlM1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmlBOUlHWjFibU4wYVc5dUtHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtUb2dSRWN1VUc5cGJuUWdlMXh1SUNCamIyNXpkQ0J5WldOMElEMGdkR2hwY3k1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVHRjYmlBZ2NtVjBkWEp1SUc1bGR5QkVSeTVRYjJsdWRDaGxkbVZ1ZEM1amJHbGxiblJZSUMwZ2NtVmpkQzVzWldaMExDQmxkbVZ1ZEM1amJHbGxiblJaSUMwZ2NtVmpkQzUwYjNBcE8xeHVmVHRjYmx4dVJFY3VVbVZqZEM1d2NtOTBiM1I1Y0dVdVkyOXVkR0ZwYm5NZ1BTQm1kVzVqZEdsdmJpaDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWs2SUdKdmIyeGxZVzRnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTVzWldaMElEdzlJSGdnSmlZZ2VDQThQU0IwYUdsekxuSnBaMmgwSUNZbUlIUm9hWE11ZEc5d0lEdzlJSGtnSmlZZ2VTQThQU0IwYUdsekxtSnZkSFJ2YlR0Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlFiM05wZEdsdmJrMXZibTl0WlhKSmJtWnZJSHRjYmlBZ0x5b3FJRk5sY1hWbGJtTmxjeUJqYjNWdWRDQjNhWFJvSUcxdmJtOXRaWElnYVc0Z2NHOXphWFJwYjI1Y2JpQWdJQ292WEc0Z0lHTnZkVzUwT2lCdWRXMWlaWEk3WEc1Y2JpQWdMeW9xSUZKbGJXVnRZbVZ5SUhOamNtVmxiaUJqYjI5eVpITWdjbVZqZEZ4dUlDQWdLaTljYmlBZ1ltOTFibVJ6T2lCRVJ5NVNaV04wTzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0NrZ2UxeHVJQ0FnSUhSb2FYTXVZMjkxYm5RZ1BTQXdPMXh1SUNBZ0lIUm9hWE11WW05MWJtUnpJRDBnYm1WM0lFUkhMbEpsWTNRb01Dd2dNQ3dnTUN3Z01DazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGQnZjMmwwYVc5dVNXNW1ieUI3WEc0Z0lIQjFZbXhwWXlCeVpXRmtiMjVzZVNCdVlXMWxPaUJ6ZEhKcGJtYzdYRzRnSUdaeVpYRTZJSHNnVzIwNklITjBjbWx1WjEwNklGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOGdmVHRjYmlBZ2NtOTNRMjkxYm5RNklHNTFiV0psY2p0Y2JseHVJQ0F2S2lvZ1puSmxjU0E5SUh0OUxDQnliM2REYjNWdWRDQTlJREJjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHNWhiV1VnVG1GdFpTQnZaaUJ3YjNOcGRHbHZiaUFvSnpFeE1VRW5MQ0FuTVRFeExqRW5MQ0JsZEdNcFhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh1WVcxbE9pQnpkSEpwYm1jcElIdGNiaUFnSUNCMGFHbHpMbTVoYldVZ1BTQnVZVzFsTzF4dUlDQWdJSFJvYVhNdVpuSmxjU0E5SUh0OU8xeHVJQ0FnSUhSb2FYTXVjbTkzUTI5MWJuUWdQU0F3TzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJYWldKTWIyZHZJR1Y0ZEdWdVpITWdSRWN1U25OV2FXVjNaWElnZTF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbGMybGtkV1Z6VTJWMElEMGdKMjUxWTJ4bGIzUnBaR1Z6Snp0Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ2RtbGxkMlZ5UTI5MWJuUTZJRzUxYldKbGNpQTlJQzB4TzF4dVhHNGdJSEJ5YVhaaGRHVWdkbWxsZDJWeVNXUTZJRzUxYldKbGNpQTlJQzB4TzF4dUlDQndjbWwyWVhSbElHbHVhWFJwWVd4cGVtVmtPaUJpYjI5c1pXRnVJRDBnWm1Gc2MyVTdYRzVjYmlBZ0x5OGdjSEpwZG1GMFpTQnlaV0ZrYjI1c2VTQmpiMnh2Y2xOamFHVnRaVG9nUTI5c2IzSlRZMmhsYldVZ1BTQkRiMnh2Y2xOamFHVnRaWE5iVG5WamJHVnZkR2xrWlhOWFpXSk1iMmR2TG5KbGMybGtkV1Z6VTJWMFhUdGNiaUFnY0hKdmRHVmpkR1ZrSUdOd09pQlRaWEZRWVd4bGRIUmxJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNWNiaUFnY0hKcGRtRjBaU0JvYjNOMFB6b2dTRlJOVEVScGRrVnNaVzFsYm5RN1hHNGdJSEJ5YVhaaGRHVWdiWE5uU0c5emREODZJRWhVVFV4RmJHVnRaVzUwTzF4dUlDQndjbWwyWVhSbElHTmhiblpoY3o4NklFaFVUVXhEWVc1MllYTkZiR1Z0Wlc1ME8xeHVJQ0J3Y21sMllYUmxJSE5zYVdSbGNqODZJRVJITGxKaGJtZGxVMnhwWkdWeU8xeHVJQ0J3Y21sMllYUmxJSFJsZUhSQ1lYTmxiR2x1WlRvZ1EyRnVkbUZ6VkdWNGRFSmhjMlZzYVc1bE8xeHVYRzRnSUhCeWFYWmhkR1VnWVhocGMwaGxhV2RvZERvZ2JuVnRZbVZ5SUQwZ01USTdYRzVjYmlBZ2NISnBkbUYwWlNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Ymp4emRISnBibWMrSUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzRnSUM4dklIQnlhWFpoZEdVZ2JXRjRUR1Z1WjNSb09pQnVkVzFpWlhJZ1BTQXhNREE3WEc0Z0lIQnlhWFpoZEdVZ2NHOXphWFJwYjI1ek9pQlFiM05wZEdsdmJrbHVabTliWFNBOUlGdGRPMXh1WEc0Z0lIQnlhWFpoZEdVZ2NtOTNjMDFoYzJ0bFpEb2diblZ0WW1WeUlEMGdNRHRjYmlBZ2NISnBkbUYwWlNCeWIzZHpUblZzYkRvZ2JuVnRZbVZ5SUQwZ01EdGNibHh1SUNBdkx5QldhV1YzWlhJbmN5QndjbTl3WlhKMGFXVnpJQ2hzYVd0bGJIa2dkR2hsZVNCemFHOTFiR1FnWW1VZ2NIVmliR2xqSUhOdklIUm9ZWFFnZEdobGVTQmpZVzRnWW1VZ2MyVjBJRzkxZEhOcFpHVXBYRzRnSUhCeWFYWmhkR1VnWDNCdmMybDBhVzl1VjJsa2RHZzZJRzUxYldKbGNqdGNiaUFnY0hWaWJHbGpJSEJ2YzJsMGFXOXVWMmxrZEdnNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklHMXBia2hsYVdkb2REb2diblZ0WW1WeU8xeHVJQ0J3ZFdKc2FXTWdiV0Y0U0dWcFoyaDBPaUJ1ZFcxaVpYSTdYRzRnSUhCMVlteHBZeUJqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNNklHSnZiMnhsWVc0N1hHNGdJSEIxWW14cFl5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVTZJSE4wY21sdVp5QjhJRzUxYkd3N1hHNGdJSEIxWW14cFl5QnpkR0Z5ZEZCdmMybDBhVzl1VG1GdFpUb2djM1J5YVc1bklId2diblZzYkR0Y2JpQWdjSFZpYkdsaklHVnVaRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuSUh3Z2JuVnNiRHRjYmlBZ2NIVmliR2xqSUdacGVGZHBaSFJvT2lCaWIyOXNaV0Z1TzF4dUlDQndkV0pzYVdNZ2RtVnlkR2xqWVd4QmJHbG5ibTFsYm5RNklITjBjbWx1WnlCOElHNTFiR3c3WEc0Z0lIQjFZbXhwWXlCb2IzSnBlbTl1ZEdGc1FXeHBaMjV0Wlc1ME9pQnpkSEpwYm1jZ2ZDQnVkV3hzTzF4dUlDQndkV0pzYVdNZ1ptbDBRWEpsWVRvZ1ltOXZiR1ZoYmp0Y2JpQWdjSFZpYkdsaklITm9jbWx1YTBWdGNIUjVWR0ZwYkRvZ1ltOXZiR1ZoYmp0Y2JpQWdjSFZpYkdsaklITnJhWEJGYlhCMGVWQnZjMmwwYVc5dWN6b2dZbTl2YkdWaGJqdGNibHh1SUNCd2NtbDJZWFJsSUhCdmMybDBhVzl1VG1GdFpYTTZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGeWRGQnZjMmwwYVc5dU9pQnVkVzFpWlhJZ1BTQXRNVHRjYmx4dUlDQndjbWwyWVhSbElHVnVaRkJ2YzJsMGFXOXVPaUJ1ZFcxaVpYSWdQU0F0TVR0Y2JseHVJQ0F2S2lvZ1JtOXlJSE4wWVhKMFVHOXphWFJwYjI0Z1pYRjFZV3h6SUhSdklHVnVaRkJ2YzJsMGFXOXVJRXhsYm1kMGFDQnBjeUF4SUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwSUV4bGJtZDBhQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdQRDBnZEdocGN5NWxibVJRYjNOcGRHbHZiaUEvSUhSb2FYTXVaVzVrVUc5emFYUnBiMjRnTFNCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z0t5QXhJRG9nTUR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ2RtbGxkMU4xWW5NNklGTjFZbk5qY21sd2RHbHZibHRkSUQwZ1cxMDdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9LU0I3WEc0Z0lDQWdjM1Z3WlhJb0tUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQyVnlTV1FnUFNCWFpXSk1iMmR2TG5acFpYZGxja052ZFc1ME8xeHVJQ0FnSUZkbFlreHZaMjh1ZG1sbGQyVnlRMjkxYm5RZ0t6MGdNVHRjYmx4dUlDQWdJSFJvYVhNdWRHVjRkRUpoYzJWc2FXNWxJRDBnSjNSdmNDYzdYRzVjYmlBZ0lDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NXdiM05wZEdsdmJsZHBaSFJvSUQwZ2RHaHBjeTVtYkc5aGRDZ25jRzl6YVhScGIyNVhhV1IwYUNjc0lERTJMeW9zWEc0Z0lDQWdJQ0I3WldScGRHOXlPaUFuYzJ4cFpHVnlKeXdnYldsdU9pQTBMQ0J0WVhnNklEWTBMQ0J3YjNOMFptbDRPaUFuY0hnbmZTb3ZLVHRjYmlBZ0lDQjBhR2x6TG0xcGJraGxhV2RvZENBOUlIUm9hWE11Wm14dllYUW9KMjFwYmtobGFXZG9kQ2NzSURVd0x5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBeU5Td2diV0Y0T2lBeU5UQXNJSEJ2YzNSbWFYZzZJQ2R3ZUNkOUtpOHBPMXh1SUNBZ0lIUm9hWE11YldGNFNHVnBaMmgwSUQwZ2RHaHBjeTVtYkc5aGRDZ25iV0Y0U0dWcFoyaDBKeXdnTVRBd0x5b3NYRzRnSUNBZ0lDQjdaV1JwZEc5eU9pQW5jMnhwWkdWeUp5d2diV2x1T2lBeU5Td2diV0Y0T2lBMU1EQXNJSEJ2YzNSbWFYZzZJQ2R3ZUNkOUtpOHBPMXh1WEc0Z0lDQWdkR2hwY3k1amIyNXphV1JsY2s1MWJHeFRaWEYxWlc1alpYTWdQU0IwYUdsekxtSnZiMndvSjJOdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5Y3NJR1poYkhObEtUdGNiaUFnSUNCMGFHbHpMbk5sY1hWbGJtTmxRMjlzZFcxdVRtRnRaU0E5SUhSb2FYTXVjM1J5YVc1bktDZHpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVW5MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJrNWhiV1VnUFNCMGFHbHpMbk4wY21sdVp5Z25jM1JoY25SUWIzTnBkR2x2Yms1aGJXVW5MQ0J1ZFd4c0tUdGNiaUFnSUNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTQTlJSFJvYVhNdWMzUnlhVzVuS0NkbGJtUlFiM05wZEdsdmJrNWhiV1VuTENCdWRXeHNLVHRjYmx4dUlDQWdJSFJvYVhNdVptbDRWMmxrZEdnZ1BTQjBhR2x6TG1KdmIyd29KMlpwZUZkcFpIUm9KeXdnWm1Gc2MyVXBPMXh1WEc0Z0lDQWdkR2hwY3k1MlpYSjBhV05oYkVGc2FXZHViV1Z1ZENBOUlIUm9hWE11YzNSeWFXNW5LQ2QyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ2NzSUNkdGFXUmtiR1VuTEZ4dUlDQWdJQ0FnZTJOb2IybGpaWE02SUZzbmRHOXdKeXdnSjIxcFpHUnNaU2NzSUNkaWIzUjBiMjBuWFgwcE8xeHVJQ0FnSUhSb2FYTXVhRzl5YVhwdmJuUmhiRUZzYVdkdWJXVnVkQ0E5SUhSb2FYTXVjM1J5YVc1bktDZG9iM0pwZW05dWRHRnNRV3hwWjI1dFpXNTBKeXdnSjJObGJuUmxjaWNzWEc0Z0lDQWdJQ0I3WTJodmFXTmxjem9nV3lkc1pXWjBKeXdnSjJObGJuUmxjaWNzSUNkeWFXZG9kQ2RkZlNrN1hHNGdJQ0FnZEdocGN5NW1hWFJCY21WaElEMGdkR2hwY3k1aWIyOXNLQ2RtYVhSQmNtVmhKeXdnZEhKMVpTazdYRzRnSUNBZ2RHaHBjeTV6YUhKcGJtdEZiWEIwZVZSaGFXd2dQU0IwYUdsekxtSnZiMndvSjNOb2NtbHVhMFZ0Y0hSNVZHRnBiQ2NzSUhSeWRXVXBPMXh1SUNBZ0lIUm9hWE11YzJ0cGNFVnRjSFI1VUc5emFYUnBiMjV6SUQwZ2RHaHBjeTVpYjI5c0tDZHphMmx3Ulcxd2RIbFFiM05wZEdsdmJuTW5MQ0JtWVd4elpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR0Z6ZVc1aklHbHVhWFFvS1RvZ1VISnZiV2x6WlR4MmIybGtQaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVhVzVwZEdsaGJHbDZaV1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9KMWRsWWt4dloyOGdjMlZqYjI1a0lHbHVhWFJwWVd4cGVtRjBhVzl1SVNjcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNXBkR2xoYkdsNlpXUWdQU0IwY25WbE8xeHVJQ0FnSUhSb2FYTXVhR1ZzY0ZWeWJDQTlJQ2N2YUdWc2NDOTJhWE4xWVd4cGVtVXZkbWxsZDJWeWN5OTNaV0l0Ykc5bmJ5NXRaQ2M3WEc1Y2JpQWdJQ0IwYUdsekxtMXpaMGh2YzNRZ1BTQjFhUzVrYVhZb0owNXZJRzFsYzNOaFoyVW5LVHRjYmlBZ0lDQjBhR2x6TG0xelowaHZjM1F1YzNSNWJHVXVaR2x6Y0d4aGVTQTlJQ2R1YjI1bEp6dGNibHh1SUNBZ0lIUm9hWE11WTJGdWRtRnpJRDBnZFdrdVkyRnVkbUZ6S0NrN1hHNGdJQ0FnZEdocGN5NWpZVzUyWVhNdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzVjYmlBZ0lDQjBhR2x6TG1odmMzUWdQU0IxYVM1a2FYWW9XM1JvYVhNdWJYTm5TRzl6ZEN3Z2RHaHBjeTVqWVc1MllYTmRLVHRjYmx4dUlDQWdJQzh2SUhSb2FYTXVjMnhwWkdWeUlEMGdkV2t1Y21GdVoyVlRiR2xrWlhJb01Dd2dNakFzSURJc0lEVXBPMXh1SUNBZ0lDOHZJSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXVjM1I1YkdVdWQybGtkR2dnUFNBbk1UQXdKU2M3WEc0Z0lDQWdMeThnZEdocGN5NXpiR2xrWlhJdWNtOXZkQzV6ZEhsc1pTNW9aV2xuYUhRZ1BTQW5NVEp3ZUNjN1hHNWNiaUFnSUNCamIyNXpkQ0JuWlhSTmIyNXZiV1Z5SUQwZ0tIQTZJRVJITGxCdmFXNTBLVG9nVzI1MWJXSmxjaXdnYzNSeWFXNW5JSHdnYm5Wc2JDd2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI4SUc1MWJHeGRJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR3BRYjNNZ1BTQk5ZWFJvTG1ac2IyOXlLSEF1ZUNBdklIUm9hWE11WDNCdmMybDBhVzl1VjJsa2RHZ3BPMXh1SUNBZ0lDQWdZMjl1YzNRZ2NHOXphWFJwYjI0Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIQnZjMmwwYVc5dUlEMDlQU0IyYjJsa0lEQXBYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmJhbEJ2Y3l3Z2JuVnNiQ3dnYm5Wc2JGMDdYRzVjYmlBZ0lDQWdJR052Ym5OMElHMXZibTl0WlhJNklITjBjbWx1WnlCOElIVnVaR1ZtYVc1bFpDQTlJRTlpYW1WamRDNXJaWGx6S0hCdmMybDBhVzl1TG1aeVpYRXBYRzRnSUNBZ0lDQWdJQzVtYVc1a0tDaHRLU0E5UGlCd2IzTnBkR2x2Ymk1bWNtVnhXMjFkTG1KdmRXNWtjeTVqYjI1MFlXbHVjeWh3TG5nc0lIQXVlU2twTzF4dUlDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJZ1BUMDlJSFZ1WkdWbWFXNWxaQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnVkV3hzTENCdWRXeHNYVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJRnRxVUc5ekxDQnRiMjV2YldWeUxDQndiM05wZEdsdmJpNW1jbVZ4VzIxdmJtOXRaWEpkWFR0Y2JpQWdJQ0I5TzF4dVhHNWNiaUFnSUNBdkx5QjBhR2x6TG5OMVluTXVjSFZ6YUNoeWVHcHpMbVp5YjIxRmRtVnVkRHhOYjNWelpVVjJaVzUwUGloMGFHbHpMbU5oYm5aaGN5d2dKMjF2ZFhObGIzWmxjaWNwTG5OMVluTmpjbWxpWlNnb1pUb2dUVzkxYzJWRmRtVnVkQ2tnUFQ0Z2UxeHVJQ0FnSUM4dklIMHBLVHRjYmx4dUlDQWdJSFJvYVhNdWRtbGxkMU4xWW5NdWNIVnphQ2h5ZUdwekxtWnliMjFGZG1WdWREeE5iM1Z6WlVWMlpXNTBQaWgwYUdsekxtTmhiblpoY3l3Z0oyMXZkWE5sYlc5MlpTY3BMbk4xWW5OamNtbGlaU2dvWlRvZ1RXOTFjMlZGZG1WdWRDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeWxjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbWR6SUQwZ1pTQmhjeUJOYjNWelpVVjJaVzUwTzF4dUlDQWdJQ0FnWTI5dWMzUWdXMnBRYjNNc0lHMXZibTl0WlhKZElEMGdaMlYwVFc5dWIyMWxjaWgwYUdsekxtTmhiblpoY3k1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmloaGNtZHpLU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBbUppQjBhR2x6TG5ObGNVTnZiQ0FtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIVnBMblJ2YjJ4MGFYQXVjMmh2ZDFKdmQwZHliM1Z3S0hSb2FYTXVaR0YwWVVaeVlXMWxMQ0FvYVZKdmR5a2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhObGNTQTlJSFJvYVhNdWMyVnhRMjlzSVM1blpYUW9hVkp2ZHlrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MyVnhUU0E5SUhObGNTQS9JRmRsWWt4dloyOHVjM0JzYVhSMFpYSkJjMFpoYzNSaEtITmxjU2xiZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUNzZ2FsQnZjMTBnT2lCdWRXeHNPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJ6WlhGTklEMDlQU0J0YjI1dmJXVnlJQ1ltSUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJSDBzSUdGeVozTXVlQ0FySURFMkxDQmhjbWR6TG5rZ0t5QXhOaWs3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IxYVM1MGIyOXNkR2x3TG1ocFpHVW9LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLU2s3WEc1Y2JpQWdJQ0IwYUdsekxuWnBaWGRUZFdKekxuQjFjMmdvY25ocWN5NW1jbTl0UlhabGJuUThUVzkxYzJWRmRtVnVkRDRvZEdocGN5NWpZVzUyWVhNc0lDZHRiM1Z6WldSdmQyNG5LUzV6ZFdKelkzSnBZbVVvS0dVNklFMXZkWE5sUlhabGJuUXBJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hkR2hwY3k1allXNTJZWE1nZkh3Z1pTNWlkWFIwYjI0Z0lUMGdNQ2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbWR6SUQwZ1pTQmhjeUJOYjNWelpVVjJaVzUwTzF4dUlDQWdJQ0FnWTI5dWMzUWdXMnBRYjNNc0lHMXZibTl0WlhKZElEMGdaMlYwVFc5dWIyMWxjaWgwYUdsekxtTmhiblpoY3k1blpYUkRkWEp6YjNKUWIzTnBkR2x2YmloaGNtZHpLU2s3WEc1Y2JpQWdJQ0FnSUM4dklIQnlaWFpsYm5SeklHUmxjMlZzWldOMElHRnNiQ0J5YjNkeklHbG1JSGRsSUcxcGMzTWdiVzl1YjIxbGNpQmliM1Z1WkhOY2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG1SaGRHRkdjbUZ0WlNBbUppQjBhR2x6TG5ObGNVTnZiQ0FtSmlCdGIyNXZiV1Z5S1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1cGJtbDBLQ2hwVW05M0tTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnYzJWeElEMGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBVbTkzS1R0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCelpYRk5JRDBnYzJWeElEOGdWMlZpVEc5bmJ5NXpjR3hwZEhSbGNrRnpSbUZ6ZEdFb2MyVnhLVnQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYU0E2SUc1MWJHdzdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE5sY1UwZ1BUMDlJRzF2Ym05dFpYSWdKaVlnZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtZGxkQ2hwVW05M0tUdGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2twTzF4dVhHNGdJQ0FnZEdocGN5NTJhV1YzVTNWaWN5NXdkWE5vS0hWcExtOXVVMmw2WlVOb1lXNW5aV1FvZEdocGN5NXliMjkwS1M1emRXSnpZM0pwWW1Vb2RHaHBjeTV5YjI5MFQyNVRhWHBsUTJoaGJtZGxaQzVpYVc1a0tIUm9hWE1wS1NrN1hHNWNiaUFnSUNCMGFHbHpMbkp2YjNRdVlYQndaVzVrS0hSb2FYTXVhRzl6ZENrN1hHNGdJQ0FnTHk4Z2RHaHBjeTV5YjI5MExtRndjR1Z1WkVOb2FXeGtLSFJvYVhNdWMyeHBaR1Z5TG5KdmIzUXBPMXh1WEc0Z0lDQWdkR2hwY3k1eVpXNWtaWElvZEhKMVpTazdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSEp2YjNSUGJsTnBlbVZEYUdGdVoyVmtLR0Z5WjNNNklHRnVlU2tnZTF4dUlDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1WEc0Z0lDQWdMeThnWTI5dWMyOXNaUzVrWldKMVp5aGdWMlZpVEc5bmJ5NXZibEp2YjNSVGFYcGxRMmhoYm1kbFpDZ3BJR0FnSzF4dUlDQWdJQzh2SUNBZ1lISnZiM1F1ZDJsa2RHZzlKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBWMmxrZEdoOUxDQnliMjkwTG1obGFXZG9kRDBrZTNSb2FYTXVjbTl2ZEM1amJHbGxiblJJWldsbmFIUjlMQ0JnSUN0Y2JpQWdJQ0F2THlBZ0lHQmpZVzUyWVhNdWQybGtkR2c5Skh0MGFHbHpMbU5oYm5aaGN5NTNhV1IwYUgwc0lHTmhiblpoY3k1b1pXbG5hSFE5Skh0MGFHbHpMbU5oYm5aaGN5NW9aV2xuYUhSOUlDNWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkJjM05wWjI1eklIdEFiR2x1YXlCelpYRkRiMng5SUdGdVpDQjdRR3hwYm1zZ1kzQjlJR0poYzJWa0lHOXVJSHRBYkdsdWF5QnpaWEYxWlc1alpVTnZiSFZ0Yms1aGJXVjlJR0Z1WkNCallXeHNjeUI3UUd4cGJtc2djbVZ1WkdWeWZTZ3BMbHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0IxY0dSaGRHVlRaWEZEYjJ3b0tUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WkdGMFlVWnlZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbElEOGdkR2hwY3k1a1lYUmhSbkpoYldVdVkyOXNLSFJvYVhNdWMyVnhkV1Z1WTJWRGIyeDFiVzVPWVcxbEtTQTZJRzUxYkd3N1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1elpYRkRiMndnUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sY1VOdmJDQTlJSFJvYVhNdWNHbGphMVZ3VTJWeFEyOXNLSFJvYVhNdVpHRjBZVVp5WVcxbEtUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYRjFaVzVqWlVOdmJIVnRiazVoYldVZ1BTQjBhR2x6TG5ObGNVTnZiQ0EvSUhSb2FYTXVjMlZ4UTI5c0xtNWhiV1VnT2lCdWRXeHNPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVjMlZ4UTI5c0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYQmtZWFJsVUc5emFYUnBiMjV6S0NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTNBZ1BTQlhaV0pNYjJkdkxuQnBZMnRWY0ZCaGJHVjBkR1VvZEdocGN5NXpaWEZEYjJ3cE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZiazVoYldWeklEMGdXMTA3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBOUlDMHhPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVJRDBnTFRFN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTNBZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TG5KbGJtUmxjaWdwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCMWNHUmhkR1ZRYjNOcGRHbHZibk1vS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbk5sY1VOdmJDbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUd4bGRDQmpZWFJsWjI5eWFXVnpPaUFvYzNSeWFXNW5JSHdnYm5Wc2JDa2dXMTA3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjMmh5YVc1clJXMXdkSGxVWVdsc0tTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCcGJtUnBZMlZ6T2lCSmJuUXpNa0Z5Y21GNUlEMGdkR2hwY3k1a1lYUmhSbkpoYldVdVptbHNkR1Z5TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncE8xeHVJQ0FnSUNBZ1kyRjBaV2R2Y21sbGN5QTlJRUZ5Y21GNUxtWnliMjBvYm1WM0lGTmxkQ2hjYmlBZ0lDQWdJQ0FnUVhKeVlYa3Vabkp2YlNoQmNuSmhlU2hwYm1ScFkyVnpMbXhsYm1kMGFDa3VhMlY1Y3lncEtTNXRZWEFvS0drNklHNTFiV0psY2lrZ1BUNGdkR2hwY3k1elpYRkRiMndoTG1kbGRDaHBibVJwWTJWelcybGRLU2twS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMkYwWldkdmNtbGxjeUE5SUhSb2FYTXVjMlZ4UTI5c0xtTmhkR1ZuYjNKcFpYTTdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJRzFoZUV4bGJtZDBhQ0E5SUdOaGRHVm5iM0pwWlhNdWJHVnVaM1JvSUQ0Z01DQS9JRTFoZEdndWJXRjRLQzR1TG1OaGRHVm5iM0pwWlhNdWJXRndLRnh1SUNBZ0lDQWdLSE1wSUQwK0lITWdJVDA5SUc1MWJHd2dQeUJYWldKTWIyZHZMbk53YkdsMGRHVnlRWE5HWVhOMFlTaHpLUzVzWlc1bmRHZ2dPaUF3S1NrZ09pQXdPMXh1WEc0Z0lDQWdMeThnUjJWMElIQnZjMmwwYVc5dUlHNWhiV1Z6SUdaeWIyMGdaR0YwWVNCamIyeDFiVzRnZEdGbklDZHdiM05wZEdsdmJrNWhiV1Z6SjF4dUlDQWdJR052Ym5OMElIQnZjMmwwYVc5dVRtRnRaWE5VZUhRZ1BTQjBhR2x6TG5ObGNVTnZiQzVuWlhSVVlXY29KM0J2YzJsMGFXOXVUbUZ0WlhNbktUdGNiaUFnSUNBdkx5QkdZV3hzWW1GamF5QnBaaUFuY0c5emFYUnBiMjVPWVcxbGN5Y2dkR0ZuSUdseklHNXZkQ0J3Y205MmFXUmxaRnh1SUNBZ0lIUm9hWE11Y0c5emFYUnBiMjVPWVcxbGN5QTlJSEJ2YzJsMGFXOXVUbUZ0WlhOVWVIUWdQeUJ3YjNOcGRHbHZiazVoYldWelZIaDBMbk53YkdsMEtDY3NJQ2NwTG0xaGNDZ29iaWtnUFQ0Z2JpNTBjbWx0S0NrcElEcGNiaUFnSUNBZ0lGc3VMaTVCY25KaGVTaHRZWGhNWlc1bmRHZ3BMbXRsZVhNb0tWMHViV0Z3S0NocVVHOXpLU0E5UGlCZ0pIdHFVRzl6SUNzZ01YMWdLVHRjYmx4dUlDQWdJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUE5SUNoMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxJQ1ltSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBbUpseHVJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZiazVoYldWekxtbHVZMngxWkdWektIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJrNWhiV1VwS1NBL1hHNGdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNdWFXNWtaWGhQWmloMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxLU0E2SURBN1hHNGdJQ0FnZEdocGN5NWxibVJRYjNOcGRHbHZiaUE5SUNoMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTQW1KaUIwYUdsekxuQnZjMmwwYVc5dVRtRnRaWE1nSmlaY2JpQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3k1cGJtTnNkV1JsY3loMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTa3BJRDljYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjeTVwYm1SbGVFOW1LSFJvYVhNdVpXNWtVRzl6YVhScGIyNU9ZVzFsS1NBNklDaHRZWGhNWlc1bmRHZ2dMU0F4S1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCdmRtVnljbWxrWlNCdmJsQnliM0JsY25SNVEyaGhibWRsWkNod2NtOXdaWEowZVRvZ1JFY3VVSEp2Y0dWeWRIa3BPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QmpiMjV6YjJ4bExtUmxZblZuS0dCWFpXSk1iMmR2TG05dVVISnZjR1Z5ZEhsRGFHRnVaMlZrS0NBa2UzQnliM0JsY25SNUxtNWhiV1Y5SUQwZ0p5Y2dmU2xnS1R0Y2JpQWdJQ0J6ZFhCbGNpNXZibEJ5YjNCbGNuUjVRMmhoYm1kbFpDaHdjbTl3WlhKMGVTazdYRzVjYmlBZ0lDQnpkMmwwWTJnZ0tIQnliM0JsY25SNUxtNWhiV1VwSUh0Y2JpQWdJQ0JqWVhObElDZGpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1uT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R6WlhGMVpXNWpaVU52YkhWdGJrNWhiV1VuT2x4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNOMFlYSjBVRzl6YVhScGIyNU9ZVzFsSnpwY2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFUyVnhRMjlzS0NrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkbGJtUlFiM05wZEdsdmJrNWhiV1VuT2x4dUlDQWdJQ0FnZEdocGN5NTFjR1JoZEdWVFpYRkRiMndvS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lHTmhjMlVnSjNCdmMybDBhVzl1VjJsa2RHZ25PbHh1SUNBZ0lDQWdkR2hwY3k1ZmNHOXphWFJwYjI1WGFXUjBhQ0E5SUhSb2FYTXVjRzl6YVhScGIyNVhhV1IwYUR0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYldsdVNHVnBaMmgwSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYldGNFNHVnBaMmgwSnpwY2JpQWdJQ0FnSUhSb2FYTXVjbVZ1WkdWeUtIUnlkV1VwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuWm1sNFYybGtkR2duT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2QyWlhKMGFXTmhiRUZzYVdkdWJXVnVkQ2M2WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdKMmh2Y21sNmIyNTBZV3hCYkdsbmJtMWxiblFuT2x4dUlDQWdJQ0FnZEdocGN5NXlaVzVrWlhJb2RISjFaU2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2RtYVhSQmNtVmhKenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5jMmh5YVc1clJXMXdkSGxVWVdsc0p6cGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxVRzl6YVhScGIyNXpLQ2s3WEc0Z0lDQWdJQ0IwYUdsekxuSmxibVJsY2loMGNuVmxLVHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCdmRtVnljbWxrWlNCaGMzbHVZeUJ2YmxSaFlteGxRWFIwWVdOb1pXUW9LU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHRjBZVVp5WVcxbFZIaDBPaUJ6ZEhKcGJtY2dQU0IwYUdsekxtUmhkR0ZHY21GdFpTQS9JQ2RrWVhSaEp5QTZJQ2R1ZFd4c0p6dGNiaUFnSUNCamIyNXpiMnhsTG1SbFluVm5LR0JpYVc4NklGZGxZa3h2WjI4OEpIdDBhR2x6TG5acFpYZGxja2xrZlQ0dWIyNVVZV0pzWlVGMGRHRmphR1ZrS0NCa1lYUmhSbkpoYldVZ1BTQWtlMlJoZEdGR2NtRnRaVlI0ZEgwZ0tTQnpkR0Z5ZEdBcE8xeHVJQ0FnSUhOMWNHVnlMbTl1VkdGaWJHVkJkSFJoWTJobFpDZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1MWNHUmhkR1ZUWlhGRGIyd29LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVJoZEdGR2NtRnRaU0FoUFQwZ2RtOXBaQ0F3S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk4xWW5NdWNIVnphQ2gwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHViMjVEYUdGdVoyVmtMbk4xWW5OamNtbGlaU2dvWHlrZ1BUNGdkR2hwY3k1eVpXNWtaWElvS1NrcE8xeHVJQ0FnSUNBZ2RHaHBjeTV6ZFdKekxuQjFjMmdvZEdocGN5NWtZWFJoUm5KaGJXVXVabWxzZEdWeUxtOXVRMmhoYm1kbFpDNXpkV0p6WTNKcFltVW9LRjhwSUQwK0lIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1MWNHUmhkR1ZRYjNOcGRHbHZibk1vS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9LVHRjYmlBZ0lDQWdJSDBwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JoZDJGcGRDQjBhR2x6TG1sdWFYUW9LVHRjYmlBZ0lDQmpiMjV6YjJ4bExtUmxZblZuS0dCaWFXODZJRmRsWWt4dloyODhKSHQwYUdsekxuWnBaWGRsY2tsa2ZUNHViMjVVWVdKc1pVRjBkR0ZqYUdWa0tDa2daVzVrWUNrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2IzWmxjbkpwWkdVZ1lYTjVibU1nWkdWMFlXTm9LQ2tnZTF4dUlDQWdJR052Ym5OMElHUmhkR0ZHY21GdFpWUjRkQ0E5SUdBa2UzUm9hWE11WkdGMFlVWnlZVzFsSUQ4Z0oyUmhkR0VuSURvZ0oyNTFiR3duZldBN1hHNGdJQ0FnWTI5dWMyOXNaUzVrWldKMVp5aGdZbWx2T2lCWFpXSk1iMmR2UENSN2RHaHBjeTUyYVdWM1pYSkpaSDArTG05dVZHRmliR1ZCZEhSaFkyaGxaQ2dnWkdGMFlVWnlZVzFsSUQwZ0pIdGtZWFJoUm5KaGJXVlVlSFI5SUNrZ2MzUmhjblJnS1R0Y2JpQWdJQ0J6ZFhCbGNpNWtaWFJoWTJnb0tUdGNibHh1SUNBZ0lIUm9hWE11ZG1sbGQxTjFZbk11Wm05eVJXRmphQ2dvYzNWaUtTQTlQaUJ6ZFdJdWRXNXpkV0p6WTNKcFltVW9LU2s3WEc0Z0lDQWdkR2hwY3k1b2IzTjBJUzV5WlcxdmRtVW9LVHRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0IwYUdsekxtMXpaMGh2YzNRZ1BTQjFibVJsWm1sdVpXUTdYRzRnSUNBZ2RHaHBjeTVvYjNOMElEMGdkVzVrWldacGJtVmtPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtbDBhV0ZzYVhwbFpDQTlJR1poYkhObE8xeHVJQ0FnSUdOdmJuTnZiR1V1WkdWaWRXY29ZR0pwYnpvZ1YyVmlURzluYnp3a2UzUm9hWE11ZG1sbGQyVnlTV1I5UGk1dmJsUmhZbXhsUVhSMFlXTm9aV1FvS1NCbGJtUmdLVHRjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCZmJuVnNiRk5sY1hWbGJtTmxLR1pwYkd4bGNsSmxjMmxrZFdVZ1BTQW5XQ2NwT2lCemRISnBibWNnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ym5OcFpHVnlUblZzYkZObGNYVmxibU5sY3lsY2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1FYSnlZWGtvZEdocGN5NU1aVzVuZEdncExtWnBiR3dvWm1sc2JHVnlVbVZ6YVdSMVpTa3VhbTlwYmlnbkp5azdYRzVjYmlBZ0lDQnlaWFIxY200Z0p5YzdYRzRnSUgxY2JseHVJQ0J3Y205MFpXTjBaV1FnWDJOaGJHTjFiR0YwWlNncElIdGNiaUFnSUNCcFppQW9JWFJvYVhNdVkyRnVkbUZ6SUh4OElDRjBhR2x6TG1odmMzUWdmSHdnSVhSb2FYTXVjMlZ4UTI5c0lIeDhJQ0YwYUdsekxtUmhkR0ZHY21GdFpTbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUhSb2FYTXVZMkZzWTFOcGVtVW9LVHRjYmx4dUlDQWdJSFJvYVhNdWNHOXphWFJwYjI1eklEMGdibVYzSUVGeWNtRjVLSFJvYVhNdVRHVnVaM1JvS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JxVUc5eklEMGdNRHNnYWxCdmN5QThJSFJvYVhNdVRHVnVaM1JvT3lCcVVHOXpLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSEJ2YzA1aGJXVTZJSE4wY21sdVp5QTlJSFJvYVhNdWNHOXphWFJwYjI1T1lXMWxjMXQwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnS3lCcVVHOXpYVHRjYmlBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kSUQwZ2JtVjNJRkJ2YzJsMGFXOXVTVzVtYnlod2IzTk9ZVzFsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0F2THlBeU1ESXlMVEExTFRBMUlHRnphMkZzYTJsdUlHbHVjM1J5ZFdOMFpXUWdkRzhnYzJodmR5QlhaV0pNYjJkdklHSmhjMlZrSUc5dUlHWnBiSFJsY2lBb2JtOTBJSE5sYkdWamRHbHZiaWxjYmlBZ0lDQmpiMjV6ZENCcGJtUnBZMlZ6SUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1V1Wm1sc2RHVnlMbWRsZEZObGJHVmpkR1ZrU1c1a1pYaGxjeWdwTzF4dUlDQWdJQzh2SUdOdmJuTjBJR2x1WkdsalpYTWdQU0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVkSEoxWlVOdmRXNTBJRDRnTUNBL0lIUm9hWE11WkdGMFlVWnlZVzFsTG5ObGJHVmpkR2x2Ymk1blpYUlRaV3hsWTNSbFpFbHVaR1Y0WlhNb0tTQTZYRzRnSUNBZ0x5OGdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNW1hV3gwWlhJdVoyVjBVMlZzWldOMFpXUkpibVJsZUdWektDazdYRzVjYmlBZ0lDQjBhR2x6TG5KdmQzTk5ZWE5yWldRZ1BTQnBibVJwWTJWekxteGxibWQwYUR0Y2JpQWdJQ0IwYUdsekxuSnZkM05PZFd4c0lEMGdNRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYVNCdlppQnBibVJwWTJWektTQjdYRzRnSUNBZ0lDQnNaWFFnY3pvZ2MzUnlhVzVuSUQwZ1BITjBjbWx1Wno0b2RHaHBjeTV6WlhGRGIyd3VaMlYwS0drcEtUdGNibHh1SUNBZ0lDQWdhV1lnS0NGektTQjdYRzRnSUNBZ0lDQWdJSE1nUFNCMGFHbHpMbDl1ZFd4c1UyVnhkV1Z1WTJVb0tUdGNiaUFnSUNBZ0lDQWdLeXQwYUdsekxuSnZkM05PZFd4c08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpiMjV6ZENCelpYRk5PaUJ6ZEhKcGJtZGJYU0E5SUZkbFlreHZaMjh1YzNCc2FYUjBaWEpCYzBaaGMzUmhLSE1wTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYWxCdmN5QTlJREE3SUdwUWIzTWdQQ0IwYUdsekxreGxibWQwYURzZ2FsQnZjeXNyS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUhCdFNXNW1ieUE5SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEU3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzA2SUhOMGNtbHVaeUE5SUhObGNVMWJkR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVJQ3NnYWxCdmMxMGdmSHdnSnkwbk8xeHVJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJSEJ0U1c1bWJ5a3BYRzRnSUNBZ0lDQWdJQ0FnY0cxSmJtWnZXMjFkSUQwZ2JtVjNJRkJ2YzJsMGFXOXVUVzl1YjIxbGNrbHVabThvS1R0Y2JpQWdJQ0FnSUNBZ2NHMUpibVp2VzIxZExtTnZkVzUwS3lzN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4amNtVm5hVzl1SUZCdmJHbHphQ0JtY21WeElHTnZkVzUwYzF4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnTHk4Z1pHVnNaWFJsSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEZiSnkwblhUdGNibHh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTB1Y205M1EyOTFiblFnUFNBd08xeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnRJR2x1SUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExtWnlaWEVwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjRzl6YVhScGIyNXpXMnBRYjNOZExuSnZkME52ZFc1MElDczlJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRmJiVjB1WTI5MWJuUTdYRzRnSUNBZ2ZWeHVJQ0FnSUM4dkkyVnVaSEpsWjJsdmJseHVYRzRnSUNBZ1kyOXVjM1FnY2lBOUlIZHBibVJ2ZHk1a1pYWnBZMlZRYVhobGJGSmhkR2x2TzF4dUlDQWdJR052Ym5OMElHMWhlRWhsYVdkb2RDQTlJSFJvYVhNdVkyRnVkbUZ6TG1obGFXZG9kQ0F0SUhSb2FYTXVZWGhwYzBobGFXZG9kQ0FxSUhJN1hHNGdJQ0FnTHk4Z1kyOXVjMjlzWlM1a1pXSjFaeWhnVjJWaVRHOW5iendrZTNSb2FYTXVkbWxsZDJWeVNXUjlQaTVmWTJGc1kzVnNZWFJsS0NrZ2JXRjRTR1ZwWjJoMFBTUjdiV0Y0U0dWcFoyaDBmUzVnS1R0Y2JseHVJQ0FnSUM4dkkzSmxaMmx2YmlCRFlXeGpkV3hoZEdVZ2MyTnlaV1Z1WEc0Z0lDQWdabTl5SUNoc1pYUWdhbEJ2Y3lBOUlEQTdJR3BRYjNNZ1BDQjBhR2x6TGt4bGJtZDBhRHNnYWxCdmN5c3JLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQm1jbVZ4T2lCN0lGdGpPaUJ6ZEhKcGJtZGRPaUJRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUgwZ1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeE8xeHVJQ0FnSUNBZ1kyOXVjM1FnY205M1EyOTFiblFnUFNCMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNXliM2REYjNWdWREdGNibHh1SUNBZ0lDQWdiR1YwSUhrNklHNTFiV0psY2lBOUlIUm9hWE11WVhocGMwaGxhV2RvZER0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWlc1MGNtbGxjeUE5SUU5aWFtVmpkQzVsYm5SeWFXVnpLR1p5WlhFcExuTnZjblFvS0dFc0lHSXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ZiTUYwZ0lUMDlJQ2N0SnlBbUppQmlXekJkSUNFOVBTQW5MU2NwWEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdKYk1WMHVZMjkxYm5RZ0xTQmhXekZkTG1OdmRXNTBPMXh1SUNBZ0lDQWdJQ0JsYkhObElHbG1JQ2hoV3pCZElEMDlQU0FuTFNjZ0ppWWdZbHN3WFNBOVBUMGdKeTBuS1Z4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBd08xeHVJQ0FnSUNBZ0lDQmxiSE5sSUdsbUlDaGhXekJkSUQwOVBTQW5MU2NwWEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUMweE8xeHVJQ0FnSUNBZ0lDQmxiSE5sSUM4cUlDaGlXekJkSUQwOVBTQW5MU2NwSUNvdlhHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlDc3hPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdWdWRISjVJRzltSUdWdWRISnBaWE1wSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY0cxSmJtWnZPaUJRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUQwZ1pXNTBjbmxiTVYwN1hHNGdJQ0FnSUNBZ0lDOHZJR052Ym5OMElHMDZJSE4wY21sdVp5QTlJR1Z1ZEhKNVd6QmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm9PaUJ1ZFcxaVpYSWdQU0J0WVhoSVpXbG5hSFFnS2lCd2JVbHVabTh1WTI5MWJuUWdMeUJ5YjNkRGIzVnVkRHRjYmx4dUlDQWdJQ0FnSUNCd2JVbHVabTh1WW05MWJtUnpJRDBnYm1WM0lFUkhMbEpsWTNRb2FsQnZjeUFxSUhSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnc0lIa3NJSFJvYVhNdVgzQnZjMmwwYVc5dVYybGtkR2dzSUdncE8xeHVJQ0FnSUNBZ0lDQjVJQ3M5SUdnN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2Ymx4dUlDQjlYRzVjYmlBZ0x5OGdjbVZtYkdWamRDQmphR0Z1WjJWeklHMWhaR1VnZEc4Z1ptbHNkR1Z5TDNObGJHVmpkR2x2Ymx4dUlDQnlaVzVrWlhJb2NtVmpZV3hqSUQwZ2RISjFaU2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbTF6WjBodmMzUXBJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbk5sY1VOdmJDQW1KaUFoZEdocGN5NWpjQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbTF6WjBodmMzUWhMbWx1Ym1WeVZHVjRkQ0E5SUdCVmJtdHViM2R1SUhCaGJHVjBkR1VnS0dOdmJIVnRiaUJ6WlcxVWVYQmxPaUFuSkh0MGFHbHpMbk5sY1VOdmJDNXpaVzFVZVhCbGZTY3BMbUE3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViWE5uU0c5emRDRXVjM1I1YkdVdVpHbHpjR3hoZVNBOUlDY25PMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dGMyZEliM04wSVM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSjI1dmJtVW5PMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NWpZVzUyWVhNZ2ZId2dJWFJvYVhNdWMyVnhRMjlzSUh4OElDRjBhR2x6TG1SaGRHRkdjbUZ0WlNCOGZDQWhkR2hwY3k1amNDbGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUdOdmJuTjBJR2NnUFNCMGFHbHpMbU5oYm5aaGN5NW5aWFJEYjI1MFpYaDBLQ2N5WkNjcE8xeHVJQ0FnSUdsbUlDZ2haeWtnY21WMGRYSnVPMXh1WEc0Z0lDQWdhV1lnS0hKbFkyRnNZeWxjYmlBZ0lDQWdJSFJvYVhNdVgyTmhiR04xYkdGMFpTZ3BPMXh1WEc0Z0lDQWdaeTV5WlhObGRGUnlZVzV6Wm05eWJTZ3BPMXh1SUNBZ0lHY3VabWxzYkZOMGVXeGxJRDBnSjNkb2FYUmxKenRjYmlBZ0lDQm5MbVpwYkd4U1pXTjBLREFzSURBc0lIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0xDQjBhR2x6TG1OaGJuWmhjeTVvWldsbmFIUXBPMXh1SUNBZ0lHY3VkR1Y0ZEVKaGMyVnNhVzVsSUQwZ2RHaHBjeTUwWlhoMFFtRnpaV3hwYm1VN1hHNWNiaUFnSUNBdkx5QlFjbVYyWlc1MGN5QmthWFpwYzJsdmJpQmllU0I2WlhKdklHOXVJRXhsYm1kMGFDQTlJREJjYmlBZ0lDQnBaaUFvZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUQwOVBTQXRNU0I4ZkNCMGFHbHpMbVZ1WkZCdmMybDBhVzl1SUQwOVBTQXRNU2xjYmlBZ0lDQWdJSEpsZEhWeWJqdGNibHh1SUNBZ0lDOHZJM0psWjJsdmJpQlFiRzkwSUhCdmMybDBhVzl1VG1GdFpYTmNiaUFnSUNCbkxuSmxjMlYwVkhKaGJuTm1iM0p0S0NrN1hHNGdJQ0FnWnk1bWFXeHNVM1I1YkdVZ1BTQW5ZbXhoWTJzbk8xeHVJQ0FnSUdjdWRHVjRkRUZzYVdkdUlEMGdKMk5sYm5SbGNpYzdYRzRnSUNBZ1p5NW1iMjUwSUQwZ0p6RXdjSGdnVW05aWIzUnZMQ0JTYjJKdmRHOGdURzlqWVd3c0lITmhibk10YzJWeWFXWW5PMXh1SUNBZ0lHTnZibk4wSUhCdmMwNWhiV1ZOWVhoWGFXUjBhQ0E5SUUxaGRHZ3ViV0Y0S0M0dUxuUm9hWE11Y0c5emFYUnBiMjV6TG0xaGNDZ29jRzl6S1NBOVBpQm5MbTFsWVhOMWNtVlVaWGgwS0hCdmN5NXVZVzFsS1M1M2FXUjBhQ2twTzF4dUlDQWdJR052Ym5OMElHaFRZMkZzWlNBOUlIQnZjMDVoYldWTllYaFhhV1IwYUNBOElDaDBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JQzBnTWlrZ1B5QXhJRG9nS0hSb2FYTXVYM0J2YzJsMGFXOXVWMmxrZEdnZ0xTQXlLU0F2SUhCdmMwNWhiV1ZOWVhoWGFXUjBhRHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjRzl6T2lCUWIzTnBkR2x2YmtsdVptOGdQU0IwYUdsekxuQnZjMmwwYVc5dWMxdHFVRzl6WFR0Y2JpQWdJQ0FnSUdjdWNtVnpaWFJVY21GdWMyWnZjbTBvS1R0Y2JpQWdJQ0FnSUdjdWMyVjBWSEpoYm5ObWIzSnRLRnh1SUNBZ0lDQWdJQ0JvVTJOaGJHVXNJREFzSURBc0lERXNYRzRnSUNBZ0lDQWdJR3BRYjNNZ0tpQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JQ3NnZEdocGN5NWZjRzl6YVhScGIyNVhhV1IwYUNBdklESXNJREFwTzF4dUlDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENod2IzTXVibUZ0WlN3Z01Dd2dNQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lDOHZJMlZ1WkhKbFoybHZiaUJRYkc5MElIQnZjMmwwYVc5dVRtRnRaWE5jYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCYmJXOXViMjFsY2l3Z2NHMUpibVp2WFNCdlppQlBZbXBsWTNRdVpXNTBjbWxsY3loMGFHbHpMbkJ2YzJsMGFXOXVjMXRxVUc5elhTNW1jbVZ4S1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaUFoUFQwZ0p5MG5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWWlBOUlIQnRTVzVtYnk1aWIzVnVaSE03WEc1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCbWIyNTBVM1I1YkdVZ1BTQW5NVFp3ZUNCU2IySnZkRzhzSUZKdlltOTBieUJNYjJOaGJDd2djMkZ1Y3kxelpYSnBaaWM3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdTR0ZqYTNNZ2RHOGdjMk5oYkdVZ2RYQndaWEpqWVhObElHTm9ZWEpoWTNSbGNuTWdkRzhnZEdGeVoyVjBJSEpsWTNSaGJtZHNaVnh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSFZ3Y0dWeVkyRnpaVXhsZEhSbGNrRnpZMlZ1ZENBOUlEQXVNalU3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXVjM1FnZFhCd1pYSmpZWE5sVEdWMGRHVnlTR1ZwWjJoMElEMGdNVEl1TWp0Y2JseHVJQ0FnSUNBZ0lDQWdJR2N1Y21WelpYUlVjbUZ1YzJadmNtMG9LVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuTjBjbTlyWlZOMGVXeGxJRDBnSjJ4cFoyaDBaM0poZVNjN1hHNGdJQ0FnSUNBZ0lDQWdaeTVzYVc1bFYybGtkR2dnUFNBeE8xeHVJQ0FnSUNBZ0lDQWdJR2N1Y21WamRDaGlMbXhsWm5Rc0lHSXVkRzl3TENCaUxuZHBaSFJvTENCaUxtaGxhV2RvZENrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1UzUjViR1VnUFNCMGFHbHpMbU53TG1kbGRDaHRiMjV2YldWeUtTQS9QeUIwYUdsekxtTndMbWRsZENnbmIzUm9aWEluS1R0Y2JpQWdJQ0FnSUNBZ0lDQm5MblJsZUhSQmJHbG5iaUE5SUNkc1pXWjBKenRjYmlBZ0lDQWdJQ0FnSUNCbkxtWnZiblFnUFNCbWIyNTBVM1I1YkdVN1hHNGdJQ0FnSUNBZ0lDQWdMeTluTG1acGJHeFNaV04wS0dJdWJHVm1kQ3dnWWk1MGIzQXNJR0l1ZDJsa2RHZ3NJR0l1YUdWcFoyaDBLVHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0VkcwNklGUmxlSFJOWlhSeWFXTnpJRDBnWnk1dFpXRnpkWEpsVkdWNGRDaHRiMjV2YldWeUtUdGNibHh1SUNBZ0lDQWdJQ0FnSUM4dklHbG1JQ2h0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkQ0FoUFNBd0tWeHVJQ0FnSUNBZ0lDQWdJQzh2SUNBZ1kyOXVjMjlzWlM1a1pXSjFaeWhnYlRvZ0pIdHRmU3dnYlUwdVlXTjBkV0ZzUW05MWJtUnBibWRDYjNoQmMyTmxiblE2SUNSN2JVMHVZV04wZFdGc1FtOTFibVJwYm1kQ2IzaEJjMk5sYm5SOVlDazdYRzVjYmlBZ0lDQWdJQ0FnSUNCbkxuTmxkRlJ5WVc1elptOXliU2hjYmlBZ0lDQWdJQ0FnSUNBZ0lHSXVkMmxrZEdnZ0x5QnRWRzB1ZDJsa2RHZ3NJREFzSURBc0lHSXVhR1ZwWjJoMElDOGdkWEJ3WlhKallYTmxUR1YwZEdWeVNHVnBaMmgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdZaTVzWldaMExDQmlMblJ2Y0NrN1hHNGdJQ0FnSUNBZ0lDQWdaeTVtYVd4c1ZHVjRkQ2h0YjI1dmJXVnlMQ0F3TENBdGRYQndaWEpqWVhObFRHVjBkR1Z5UVhOalpXNTBLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnWTJGc1kxTnBlbVVvS1NCN1hHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTVvYjNOMEtWeHVJQ0FnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnYkdWMElIZHBaSFJvT2lCdWRXMWlaWElnUFNCMGFHbHpMa3hsYm1kMGFDQXFJSFJvYVhNdWNHOXphWFJwYjI1WGFXUjBhRHRjYmlBZ0lDQnNaWFFnYUdWcFoyaDBJRDBnVFdGMGFDNXRhVzRvZEdocGN5NXRZWGhJWldsbmFIUXNJRTFoZEdndWJXRjRLSFJvYVhNdWJXbHVTR1ZwWjJoMExDQjBhR2x6TG5KdmIzUXVZMnhwWlc1MFNHVnBaMmgwS1NrN1hHNWNiaUFnSUNCcFppQW9kR2hwY3k1bWFYUkJjbVZoS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0I0VTJOaGJHVTZJRzUxYldKbGNpQTlJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUklaV2xuYUhRZ0x5Qm9aV2xuYUhRN1hHNGdJQ0FnSUNCamIyNXpkQ0I1VTJOaGJHVTZJRzUxYldKbGNpQTlJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUlhhV1IwYUNBdklIZHBaSFJvTzF4dUlDQWdJQ0FnWTI5dWMzUWdjMk5oYkdVZ1BTQk5ZWFJvTG0xaGVDZ3hMQ0JOWVhSb0xtMXBiaWg0VTJOaGJHVXNJSGxUWTJGc1pTa3BPMXh1SUNBZ0lDQWdkMmxrZEdnZ1BTQjNhV1IwYUNBcUlITmpZV3hsTzF4dUlDQWdJQ0FnYUdWcFoyaDBJRDBnYUdWcFoyaDBJQ29nYzJOaGJHVTdYRzRnSUNBZ0lDQjBhR2x6TGw5d2IzTnBkR2x2YmxkcFpIUm9JRDBnZEdocGN5NXdiM05wZEdsdmJsZHBaSFJvSUNvZ2MyTmhiR1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2NpQTlJSGRwYm1SdmR5NWtaWFpwWTJWUWFYaGxiRkpoZEdsdk8xeHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GekxuZHBaSFJvSUQwZ2QybGtkR2dnS2lCeU8xeHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GekxuTjBlV3hsTG5kcFpIUm9JRDBnWUNSN2QybGtkR2g5Y0hoZ08xeHVYRzRnSUNBZ0x5OGdZMjl1YzNRZ1kyRnVkbUZ6U0dWcFoyaDBPaUJ1ZFcxaVpYSWdQU0IzYVdSMGFDQStJSFJvYVhNdWNtOXZkQzVqYkdsbGJuUlhhV1IwYUNBL0lHaGxhV2RvZENBdElEZ2dPaUJvWldsbmFIUTdYRzRnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZG9aV2xuYUhRbkxDQmdKSHRvWldsbmFIUjljSGhnS1R0Y2JpQWdJQ0JqYjI1emRDQmpZVzUyWVhOSVpXbG5hSFE2SUc1MWJXSmxjaUE5SUhSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUTdYRzRnSUNBZ2RHaHBjeTVqWVc1MllYTXVhR1ZwWjJoMElEMGdZMkZ1ZG1GelNHVnBaMmgwSUNvZ2NqdGNiaUFnSUNCMGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25hR1ZwWjJoMEp5d2dZQ1I3WTJGdWRtRnpTR1ZwWjJoMGZYQjRZQ2s3WEc1Y2JpQWdJQ0F2THlCQlpHcDFjM1FnYUc5emRDQmhibVFnY205dmRDQjNhV1IwYUZ4dUlDQWdJR2xtSUNoMGFHbHpMbVpwZUZkcFpIUm9LU0I3WEc0Z0lDQWdJQ0F2THlCbWRXeHNJSGRwWkhSb0lHWnZjaUJqWVc1MllYTWdhRzl6ZENCaGJtUWdjbTl2ZEZ4dUlDQWdJQ0FnZEdocGN5NXliMjkwTG5OMGVXeGxMbmRwWkhSb0lEMGdkR2hwY3k1b2IzTjBMbk4wZVd4bExuZHBaSFJvSUQwZ1lDUjdkMmxrZEdoOWNIaGdPMXh1SUNBZ0lDQWdkR2hwY3k1eWIyOTBMbk4wZVd4bExtaGxhV2RvZENBOUlHQWtlMmhsYVdkb2RIMXdlR0E3WEc0Z0lDQWdJQ0IwYUdsekxtaHZjM1F1YzNSNWJHVXVjMlYwVUhKdmNHVnlkSGtvSjI5MlpYSm1iRzkzSnl3Z0oyaHBaR1JsYmljc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdZV3hzYjNjZ2MyTnliMnhzSUdOaGJuWmhjeUJwYmlCeWIyOTBYRzRnSUNBZ0lDQjBhR2x6TG5KdmIzUXVjM1I1YkdVdWQybGtkR2dnUFNCMGFHbHpMbWh2YzNRdWMzUjViR1V1ZDJsa2RHZ2dQU0FuTVRBd0pTYzdYRzRnSUNBZ0lDQjBhR2x6TG1odmMzUXVjM1I1YkdVdWIzWmxjbVpzYjNkWUlEMGdKMkYxZEc4aGFXMXdiM0owWVc1MEp6dGNiaUFnSUNBZ0lIUm9hWE11YUc5emRDNXpkSGxzWlM1elpYUlFjbTl3WlhKMGVTZ25iM1psY21ac2IzY25MQ0J1ZFd4c0tUdGNibHh1SUNBZ0lDQWdkR2hwY3k1b2IzTjBMbk4wZVd4bExuTmxkRkJ5YjNCbGNuUjVLQ2QwWlhoMExXRnNhV2R1Snl3Z2RHaHBjeTVvYjNKcGVtOXVkR0ZzUVd4cFoyNXRaVzUwS1R0Y2JseHVJQ0FnSUNBZ0x5OGdkbVZ5ZEdsallXd2dZV3hwWjI1dFpXNTBYRzRnSUNBZ0lDQnNaWFFnYUc5emRGUnZjRTFoY21kcGJpQTlJREE3WEc0Z0lDQWdJQ0J6ZDJsMFkyZ2dLSFJvYVhNdWRtVnlkR2xqWVd4QmJHbG5ibTFsYm5RcElIdGNiaUFnSUNBZ0lHTmhjMlVnSjNSdmNDYzZYRzRnSUNBZ0lDQWdJR2h2YzNSVWIzQk5ZWEpuYVc0Z1BTQXdPMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lHTmhjMlVnSjIxcFpHUnNaU2M2WEc0Z0lDQWdJQ0FnSUdodmMzUlViM0JOWVhKbmFXNGdQU0JOWVhSb0xtMWhlQ2d3TENBb2RHaHBjeTV5YjI5MExtTnNhV1Z1ZEVobGFXZG9kQ0F0SUdobGFXZG9kQ2tnTHlBeUtUdGNiaUFnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNCallYTmxJQ2RpYjNSMGIyMG5PbHh1SUNBZ0lDQWdJQ0JvYjNOMFZHOXdUV0Z5WjJsdUlEMGdUV0YwYUM1dFlYZ29NQ3dnZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RDQXRJR2hsYVdkb2RDazdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZHRZWEpuYVc0dGRHOXdKeXdnWUNSN2FHOXpkRlJ2Y0UxaGNtZHBibjF3ZUdBc0lDZHBiWEJ2Y25SaGJuUW5LVHRjYmx4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Y205dmRDNWpiR2xsYm5SSVpXbG5hSFFnUENCb1pXbG5hSFFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZG9aV2xuYUhRbkxDQmdKSHQwYUdsekxuSnZiM1F1WTJ4cFpXNTBTR1ZwWjJoMGZYQjRZQ2s3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVhRzl6ZEM1emRIbHNaUzV6WlhSUWNtOXdaWEowZVNnbmIzWmxjbVpzYjNjdGVTY3NJRzUxYkd3cE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVvYjNOMExuTjBlV3hsTG5ObGRGQnliM0JsY25SNUtDZHZkbVZ5Wm14dmR5MTVKeXdnSjJocFpHUmxiaWNzSUNkcGJYQnZjblJoYm5RbktUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNBdkx5QmpiMjV6YjJ4bExtUmxZblZuS0Z4dUlDQWdJQzh2SUNBZ1lIUm9hWE11Y205dmRDNXpkSGxzWlM1b1pXbG5hSFFnUFNBa2UzUm9hWE11Y205dmRDNXpkSGxzWlM1b1pXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RDQTlJQ1I3ZEdocGN5NXliMjkwTG1Oc2FXVnVkRWhsYVdkb2RIMWNYRzVnSUN0Y2JpQWdJQ0F2THlBZ0lHQjBhR2x6TG1odmMzUXVjM1I1YkdVdWFHVnBaMmgwSUQwZ0pIdDBhR2x6TG1odmMzUXVjM1I1YkdVdWFHVnBaMmgwZlZ4Y2JtQWdLMXh1SUNBZ0lDOHZJQ0FnWUhSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUWdQU0FrZTNSb2FYTXVhRzl6ZEM1amJHbGxiblJJWldsbmFIUjlYRnh1WUNBclhHNGdJQ0FnTHk4Z0lDQW5YRnh1SnlBclhHNGdJQ0FnTHk4Z0lDQmdkR2hwY3k1allXNTJZWE11YUdWcFoyaDBJQ0FnSUNBZ0lEMGdKSHQwYUdsekxtTmhiblpoY3k1b1pXbG5hSFI5WEZ4dVlDQXJYRzRnSUNBZ0x5OGdJQ0JnZEdocGN5NWpZVzUyWVhNdWMzUjViR1V1YUdWcFoyaDBJRDBnSkh0MGFHbHpMbU5oYm5aaGN5NXpkSGxzWlM1b1pXbG5hSFI5WUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdEVSeTVEYjJ4MWJXNTlJSE5sY1VOdmJDQkRiMngxYlc0Z2RHOGdiRzl2YXlCbWIzSWdZU0J3WVd4bGRIUmxYRzRnSUNBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNBZ2JXbHVUR1Z1WjNSb0lHMXBibWx0ZFcwZ2JHVnVaM1JvSUc5bUlITmxjWFZsYm1ObElIUnZJR1JsZEdWamRDQndZV3hsZEhSbElDaGxiWEIwZVNCemRISnBibWR6SUdGeVpTQmhiR3h2ZDJWa0tWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0VFpYRlFZV3hsZEhSbGZTQlFZV3hsZEhSbElHTnZjbkpsYzNCdmJtUnBibWNnZEc4Z2RHaGxJR0ZzY0doaFltVjBJRzltSUhSb1pTQnpaWEYxWlc1alpYTWdhVzRnZEdobElHTnZiSFZ0Ymx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJ3YVdOclZYQlFZV3hsZEhSbEtITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQnRhVzVNWlc1bmRHZzZJRzUxYldKbGNpQTlJRFVwT2lCVFpYRlFZV3hsZEhSbElIdGNiaUFnSUNCc1pYUWdjbVZ6T2lCVFpYRlFZV3hsZEhSbElId2diblZzYkNBOUlHNTFiR3c3WEc0Z0lDQWdjM2RwZEdOb0lDaHpaWEZEYjJ3dWMyVnRWSGx3WlNrZ2UxeHVJQ0FnSUdOaGMyVWdRVzFwYm05aFkybGtjeTVUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZYRzRnSUNBZ0lDQnlaWE1nUFNCQmJXbHViMkZqYVdSelVHRnNaWFIwWlhNdVIzSnZhMGR5YjNWd2N6dGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ1RuVmpiR1Z2ZEdsa1pYTXVVMlZ0Vkhsd1pVMTFiSFJwY0d4bFFXeHBaMjV0Wlc1ME9seHVJQ0FnSUNBZ2NtVnpJRDBnVG5WamJHVnZkR2xrWlhOUVlXeGxkSFJsY3k1RGFISnZiV0YwYjJkeVlXMDdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0I5WEc0Z0lDQWdZMjl1YzNRZ2MzUmhkSE02SUZObGNVTnZiRk4wWVhSeklEMGdWMlZpVEc5bmJ5NW5aWFJUZEdGMGN5aHpaWEZEYjJ3c0lHMXBia3hsYm1kMGFDd2dWMlZpVEc5bmJ5NXpjR3hwZEhSbGNrRnpSbUZ6ZEdFcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWVd4d2FHRmlaWFJEWVc1a2FXUmhkR1Z6T2lCYlUyVjBQSE4wY21sdVp6NHNJRk5sY1ZCaGJHVjBkR1ZkVzEwZ1BTQmJYRzRnSUNBZ0lDQmJibVYzSUZObGRDaFBZbXBsWTNRdWEyVjVjeWhPZFdOc1pXOTBhV1JsY3k1T1lXMWxjeWtwTENCT2RXTnNaVzkwYVdSbGMxQmhiR1YwZEdWekxrTm9jbTl0WVhSdlozSmhiVjBzWEc0Z0lDQWdJQ0JiYm1WM0lGTmxkQ2hQWW1wbFkzUXVhMlY1Y3loQmJXbHViMkZqYVdSekxrNWhiV1Z6S1Nrc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5NUhjbTlyUjNKdmRYQnpYU3hjYmlBZ0lDQmRPMXh1SUNBZ0lDOHZJRU5oYkdOMWJHRjBaU0JzYVd0bGJHbG9iMjlrY3lCbWIzSWdZV3h3YUdGaVpYUmZZMkZ1Wkdsa1lYUmxjMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsYzFOcGJUb2diblZ0WW1WeVcxMGdQU0JoYkhCb1lXSmxkRU5oYm1ScFpHRjBaWE5jYmlBZ0lDQWdJQzV0WVhBb0tHTXBJRDArSUZkbFlreHZaMjh1WjJWMFFXeHdhR0ZpWlhSVGFXMXBiR0Z5YVhSNUtITjBZWFJ6TG1aeVpYRXNJR05iTUYwcEtUdGNiaUFnSUNCamIyNXpkQ0J0WVhoRGIzTWdQU0JOWVhSb0xtMWhlQ2d1TGk1aGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOVGFXMHBPMXh1SUNBZ0lHbG1JQ2h0WVhoRGIzTWdQaUF3TGpZMUtWeHVJQ0FnSUNBZ2NtVnpJRDBnWVd4d2FHRmlaWFJEWVc1a2FXUmhkR1Z6VzJGc2NHaGhZbVYwUTJGdVpHbGtZWFJsYzFOcGJTNXBibVJsZUU5bUtHMWhlRU52Y3lsZFd6RmRPMXh1SUNBZ0lHVnNjMlZjYmlBZ0lDQWdJSEpsY3lBOUlGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbGN5NURiMnh2Y2p0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhNN1hHNGdJSDFjYmx4dUlDQXZLaW9nVTNSaGRITWdiMllnYzJWeGRXVnVZMlZ6SUhkcGRHZ2djM0JsWTJsbWFXVmtJSE53YkdsMGRHVnlJR1oxYm1Nc0lISmxkSFZ5Ym5NZ2V5Qm1jbVZ4TENCellXMWxUR1Z1WjNSb0lIMHVYRzRnSUNBcUlFQndZWEpoYlNCN1JFY3VRMjlzZFcxdWZTQnpaWEZEYjJ4Y2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRzFwYmt4bGJtZDBhRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UxTndiR2wwZEdWeVJuVnVZMzBnYzNCc2FYUjBaWEpjYmlBZ0lDb2dRSEpsZEhWeWJpQjdJRk5sY1VOdmJGTjBZWFJ6SUgwc0lITmhiV1ZNWlc1bmRHZzZJR0p2YjJ4bFlXNGdmU0J6ZEdGMGN5QnZaaUJqYjJ4MWJXNGdjMlZ4ZFdWdVkyVnpYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwVTNSaGRITW9jMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNJRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aktUb2dVMlZ4UTI5c1UzUmhkSE1nZTF4dUlDQWdJR052Ym5OMElHWnlaWEU2SUhzZ1cyMDZJSE4wY21sdVoxMDZJRzUxYldKbGNpQjlJRDBnZTMwN1hHNGdJQ0FnYkdWMElITmhiV1ZNWlc1bmRHZ2dQU0IwY25WbE8xeHVJQ0FnSUd4bGRDQm1hWEp6ZEV4bGJtZDBhQ0E5SUc1MWJHdzdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJSE5sY1NCdlppQnpaWEZEYjJ3dVkyRjBaV2R2Y21sbGN5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2JWTmxjU0E5SUhOd2JHbDBkR1Z5S0hObGNTazdYRzVjYmlBZ0lDQWdJR2xtSUNobWFYSnpkRXhsYm1kMGFDQTlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ0lDQm1hWEp6ZEV4bGJtZDBhQ0E5SUcxVFpYRXViR1Z1WjNSb08xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb2JWTmxjUzVzWlc1bmRHZ2dJVDA5SUdacGNuTjBUR1Z1WjNSb0tWeHVJQ0FnSUNBZ0lDQnpZVzFsVEdWdVozUm9JRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQWdJR2xtSUNodFUyVnhMbXhsYm1kMGFDQStJRzFwYmt4bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR052Ym5OMElHMGdiMllnYlZObGNTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDZ2hLRzBnYVc0Z1puSmxjU2twWEc0Z0lDQWdJQ0FnSUNBZ0lDQm1jbVZ4VzIxZElEMGdNRHRjYmlBZ0lDQWdJQ0FnSUNCbWNtVnhXMjFkSUNzOUlERTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUh0bWNtVnhPaUJtY21WeExDQnpZVzFsVEdWdVozUm9PaUJ6WVcxbFRHVnVaM1JvZlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFFXeHdhR0ZpWlhSVGFXMXBiR0Z5YVhSNUtHWnlaWEU2SUUxdmJtOXRaWEpHY21WeGN5d2dZV3h3YUdGaVpYUTZJRk5sZER4emRISnBibWMrTENCbllYQlRlVzFpYjJ3NklITjBjbWx1WnlBOUlDY3RKeWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdZMjl1YzNRZ2EyVjVjeUE5SUc1bGR5QlRaWFE4YzNSeWFXNW5QaWhiTGk0dWJtVjNJRk5sZENoUFltcGxZM1F1YTJWNWN5aG1jbVZ4S1Nrc0lDNHVMbUZzY0doaFltVjBYU2s3WEc0Z0lDQWdhMlY1Y3k1a1pXeGxkR1VvWjJGd1UzbHRZbTlzS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR1p5WlhGQk9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQWdJR052Ym5OMElHRnNjR2hoWW1WMFFUb2diblZ0WW1WeVcxMGdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdhMlY1Y3lrZ2UxeHVJQ0FnSUNBZ1puSmxjVUV1Y0hWemFDaHRJR2x1SUdaeVpYRWdQeUJtY21WeFcyMWRJRG9nTUNrN1hHNGdJQ0FnSUNCaGJIQm9ZV0psZEVFdWNIVnphQ2hoYkhCb1lXSmxkQzVvWVhNb2JTa2dQeUF4SURvZ01DazdYRzRnSUNBZ2ZWeHVJQ0FnSUM4cUlGUm9aWEpsSUhkbGNtVWdZU0JtWlhjZ2FXUmxZWE02SUdOb2FTMXpjWFZoY21Wa0xDQndaV0Z5YzI5dUlHTnZjbkpsYkdGMGFXOXVJQ2gyWVhKcFlXNWpaVDhwTENCelkyRnNZWElnY0hKdlpIVmpkQ0FxTDF4dUlDQWdJR052Ym5OMElHWnlaWEZXT2lCV1pXTjBiM0lnUFNCdVpYY2dWbVZqZEc5eUtHWnlaWEZCS1R0Y2JpQWdJQ0JqYjI1emRDQmhiSEJvWVdKbGRGWTZJRlpsWTNSdmNpQTlJRzVsZHlCV1pXTjBiM0lvWVd4d2FHRmlaWFJCS1R0Y2JpQWdJQ0JqYjI1emRDQmpiM002SUc1MWJXSmxjaUE5SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvWm5KbGNWWXNJR0ZzY0doaFltVjBWaWtnTHlBb2RtVmpkRzl5VEdWdVozUm9LR1p5WlhGV0tTQXFJSFpsWTNSdmNreGxibWQwYUNoaGJIQm9ZV0psZEZZcEtUdGNiaUFnSUNCeVpYUjFjbTRnWTI5ek8xeHVJQ0I5WEc1Y2JpQWdMeW9xSUVacGNuTjBJSFJ5ZVNCMGJ5Qm1hVzVrSUdOdmJIVnRiaUIzYVhSb0lITmxiVlI1Y0dVZ0oyRnNhV2R1WldSVFpYRjFaVzVqWlNjdVhHNGdJQ0FxSUU1bGVIUWdiRzl2YXlCbWIzSWdZMjlzZFcxdUlIZHBkR2dnWkdGMFlTQmhiSEJvWVdKbGRDQmpiM0p5WlhOd2IyNWthVzVuSUhSdklHRnVlU0J2WmlCMGFHVWdhMjV2ZDI0Z2NHRnNaWFIwWlhNdVhHNGdJQ0FxSUVCd1lYSmhiU0I3UkVjdVJHRjBZVVp5WVcxbGZTQmtZWFJoUm5KaGJXVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQlVhR1VnWTI5c2RXMXVJSGRsSUhkbGNtVWdiRzl2YTJsdVp5Qm1iM0lnYjNJZ2JuVnNiRnh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0J3YVdOclZYQlRaWEZEYjJ3b1pHRjBZVVp5WVcxbE9pQkVSeTVFWVhSaFJuSmhiV1VwT2lCRVJ5NURiMngxYlc0Z2ZDQnVkV3hzSUh0Y2JpQWdJQ0JzWlhRZ2NtVnpPaUJFUnk1RGIyeDFiVzRnZkNCdWRXeHNJRDBnWkdGMFlVWnlZVzFsTG1OdmJIVnRibk11WW5sVFpXMVVlWEJsS0NkaGJHbG5ibVZrVTJWeGRXVnVZMlVuS1R0Y2JpQWdJQ0JwWmlBb2NtVnpJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb1kyOXVjM1FnWTI5c0lHOW1JR1JoZEdGR2NtRnRaUzVqYjJ4MWJXNXpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR053SUQwZ1YyVmlURzluYnk1d2FXTnJWWEJRWVd4bGRIUmxLR052YkNCaGN5QkVSeTVEYjJ4MWJXNHNJRFVwTzF4dUlDQWdJQ0FnSUNCcFppQW9ZM0FnSVQwOUlHNTFiR3dnSmlZZ0lTaGpjQ0JwYm5OMFlXNWpaVzltSUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsY3lBOUlHTnZiRHRjYmlBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2NtVnpPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdiVzl1YjIxbGNsSmxJRDBnTDF4Y1d5aGNYSGNyS1Z4Y1hYd29YRngzS1h3b0xTa3ZaenRjYmx4dUlDQXZLaW9nVTNCc2FYUWdjMlZ4ZFdWdVkyVWdabTl5SUhOcGJtZHNaU0JqYUdGeVlXTjBaWElnYlc5dWIyMWxjbk1zSUhOeGRXRnlaU0JpY21GamEyVjBjeUJ0ZFd4MGFXTm9ZWElnYlc5dWIyMWxjaUJ1WVcxbGN5QnZjaUJuWVhBZ2MzbHRZbTlzTGx4dUlDQWdLaUJBY0dGeVlXMGdlMkZ1ZVgwZ2MyVnhJRzlpYW1WamRDQjNhWFJvSUhObGNYVmxibU5sWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JoY25KaGVTQnZaaUJ0YjI1dmJXVnljMXh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5QnpjR3hwZEhSbGNrRnpSbUZ6ZEdFb2MyVnhPaUJoYm5rcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ1kyOXVjM1FnY21Wek9pQnpkSEpwYm1kYlhTQTlJSGQxUEZKbFowVjRjRTFoZEdOb1FYSnlZWGsrS0hObGNTNTBiMU4wY21sdVp5Z3BMbTFoZEdOb1FXeHNLRmRsWWt4dloyOHViVzl1YjIxbGNsSmxLU2xjYmlBZ0lDQWdJQzV0WVhBb0tHMWhPaUJTWldkRmVIQk5ZWFJqYUVGeWNtRjVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0J0VW1Wek9pQnpkSEpwYm1jN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUcwNklITjBjbWx1WnlBOUlHMWhXekJkTzF4dUlDQWdJQ0FnSUNCcFppQW9iUzVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0cwZ2FXNGdWMlZpVEc5bmJ5NWhZVk41Ym05dWVXMXpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRVbVZ6SUQwZ1YyVmlURzluYnk1aFlWTjVibTl1ZVcxelcyMWRPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnRVbVZ6SUQwZ0p5YzdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1SbFluVm5LR0JNYjI1bklHMXZibTl0WlhJZ0p5UjdiWDBuSUdoaGN5QnViM1FnWVNCemFHOXlkQ0J6ZVc1dmJubHRMbUFwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0J0VW1WeklEMGdiVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYlZKbGN6dGNiaUFnSUNBZ0lIMHBMblJ2UVhKeVlYa29LVHRjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE03WEc0Z0lIMWNibHh1SUNBdktpb2dSMlYwY3lCdFpYUm9iMlFnZEc4Z2MzQnNhWFFnYzJWeGRXVnVZMlVnWW5rZ2MyVndZWEpoZEc5eVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBZ0lDb2dRSEpsZEhWeWJpQjdVM0JzYVhSMFpYSkdkVzVqZlZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSVGNHeHBkSFJsY2xkcGRHaFRaWEJoY21GMGIzSW9jMlZ3WVhKaGRHOXlPaUJ6ZEhKcGJtY3BPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0FnSUhKbGRIVnliaUFvYzJWeE9pQnpkSEpwYm1jcElEMCtJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnpaWEV1YzNCc2FYUW9jMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQjlPMXh1SUNCOVhHNWNiaUFnTHlvcUlFZGxkQ0J6Y0d4cGRIUmxjaUJ0WlhSb2IyUWdkRzhnYzNCc2FYUWdjMlZ4ZFdWdVkyVnpJSFJ2SUcxdmJtOXRaWEp6SUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBVM0JzYVhSMFpYSW9kVzVwZEhNNklITjBjbWx1Wnl3Z2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jcE9pQlRjR3hwZEhSbGNrWjFibU1nZTF4dUlDQWdJR2xtSUNoMWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29KMlpoYzNSaEp5a3BYRzRnSUNBZ0lDQnlaWFIxY200Z1YyVmlURzluYnk1emNHeHBkSFJsY2tGelJtRnpkR0U3WEc0Z0lDQWdaV3h6WlNCcFppQW9kVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LUzV6ZEdGeWRITlhhWFJvS0NkelpYQmhjbUYwYjNJbktTbGNiaUFnSUNBZ0lISmxkSFZ5YmlCWFpXSk1iMmR2TG1kbGRGTndiR2wwZEdWeVYybDBhRk5sY0dGeVlYUnZjaWh6WlhCaGNtRjBiM0lwTzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnVlc1bGVIQmxZM1JsWkNCMWJtbDBjeUFrZTNWdWFYUnpmU0F1WUNrN1hHNWNiaUFnSUNBdkx5QlVUMFJQT2lCVGNHeHBkSFJsY2lCbWIzSWdTRVZNVFZ4dUlDQjlYRzVjYmlBZ0x5b3FJRTl1YkhrZ2MyOXRaU0J2WmlCMGFHVWdjM2x1YjI1NWJYTXVJRlJvWlhObElIZGxjbVVnYjJKMFlXbHVaV1FnWm5KdmJTQjBhR1VnWTJ4MWMzUmxjbVZrSUc5c2FXZHZjR1Z3ZEdsa1pTQmtZWFJoYzJWMExpQXFMMXh1SUNCd2NtbDJZWFJsSUhOMFlYUnBZeUJoWVZONWJtOXVlVzF6T2lCN0lGdHVZVzFsT2lCemRISnBibWRkT2lCemRISnBibWNnZlNBOUlIdGNiaUFnSUNBblcwMWxUbXhsWFNjNklDZE1KeXdnTHk4Z1RteGxJQzBnYm05eWJHVjFZMmx1WlZ4dUlDQWdJQ2RiVFdWQlhTYzZJQ2RCSnl4Y2JpQWdJQ0FuVzAxbFIxMG5PaUFuUnljc1hHNGdJQ0FnSjF0TlpVWmRKem9nSjBZbkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBjcmVhdGVEaW1lbnNpbmFsaXR5UmVkdWNpbmdXb3JrZXIgfSBmcm9tICcuL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNpbmctd29ya2VyLWNyZWF0b3InO1xuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbihkYXRhQ29sLCBtZXRob2ROYW1lLCBzaW1pbGFyaXR5TWV0cmljLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uYWxpdHlSZWR1Y2VSZXMgPSB5aWVsZCBjcmVhdGVEaW1lbnNpbmFsaXR5UmVkdWNpbmdXb3JrZXIoeyBkYXRhOiBkYXRhQ29sLCBtZXRyaWM6IHNpbWlsYXJpdHlNZXRyaWMgfSwgbWV0aG9kTmFtZSwgb3B0aW9ucyk7XG4gICAgICAgIGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzLmVtYmVkZGluZyA9IGRpbWVuc2lvbmFsaXR5UmVkdWNlUmVzLmVtYmVkZGluZy5tYXAoaXQgPT4gbm9ybWFsaXplKGl0KSk7XG4gICAgICAgIHJldHVybiBkaW1lbnNpb25hbGl0eVJlZHVjZVJlcztcbiAgICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhkV1Z1WTJVdGMzQmhZMlV1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnpaWEYxWlc1alpTMXpjR0ZqWlM1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN1FVRkZRU3hQUVVGUExFVkJRVVVzVTBGQlV5eEZRVUZGTEUxQlFVMHNhVVJCUVdsRUxFTkJRVU03UVVGSE5VVXNUMEZCVHl4RlFVRkZMR2xEUVVGcFF5eEZRVUVyUWl4TlFVRk5MR3RFUVVGclJDeERRVUZETzBGQlIyeEpMRTFCUVUwc1ZVRkJaMElzYjBOQlFXOURMRU5CUTNSRUxFOUJRWEZETEVWQlEzSkRMRlZCUVd0Q0xFVkJRMnhDTEdkQ1FVRTJSQ3hGUVVNM1JDeFBRVUZoT3p0UlFVVmlMRTFCUVUwc2RVSkJRWFZDTEVkQlEzcENMRTFCUVUwc2FVTkJRV2xETEVOQlEyNURMRVZCUVVVc1NVRkJTU3hGUVVGRkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNaMEpCUVdkQ0xFVkJRV2RDTEVWQlEzcEVMRlZCUVZVc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVUzUWl4MVFrRkJkVUlzUTBGQlF5eFRRVUZUTEVkQlFVY3NkVUpCUVhWQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXk5R0xFOUJRVThzZFVKQlFYVkNMRU5CUVVNN1NVRkRia01zUTBGQlF6dERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUVKcGRFRnljbUY1SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDJKcGRDMWhjbkpoZVNjN1hHNXBiWEJ2Y25RZ2V5Qk5ZWFJ5YVhnc0lGWmxZM1J2Y2lCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdJRzV2Y20xaGJHbDZaU0I5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENBcUlHRnpJRVJISUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5a1p5YzdYRzVwYlhCdmNuUWdleUJDYVhSQmNuSmhlVTFsZEhKcFkzTXNJRk4wY21sdVowMWxkSEpwWTNNc0lGWmhiR2xrVkhsd1pYTXNJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZTQm1jbTl0SUNjdUwzUjVjR1ZrTFcxbGRISnBZM01uTzF4dWFXMXdiM0owSUhzZ1kzSmxZWFJsUkdsdFpXNXphVzVoYkdsMGVWSmxaSFZqYVc1blYyOXlhMlZ5TENCSlVtVmtkV05sUkdsdFpXNXphVzl1WVd4cGRIbFNaWE4xYkhRZ2ZTQm1jbTl0SUNjdUwzZHZjbXRsY25NdlpHbHRaVzV6YVc5dVlXeHBkSGt0Y21Wa2RXTnBibWN0ZDI5eWEyVnlMV055WldGMGIzSW5PMXh1WEc1Y2JtVjRjRzl5ZENCaGMzbHVZeUJtZFc1amRHbHZiaUJ5WldSMVkyVkVhVzFsYm5OcGJtRnNhWFI1VjJsMGFFNXZjbTFoYkdsNllYUnBiMjRvWEc0Z0lDQWdaR0YwWVVOdmJEb2dRbWwwUVhKeVlYbGJYWHhXWldOMGIzSmJYWHh6ZEhKcGJtZGJYU3dnWEc0Z0lDQWdiV1YwYUc5a1RtRnRaVG9nYzNSeWFXNW5MQ0JjYmlBZ0lDQnphVzFwYkdGeWFYUjVUV1YwY21sak9pQkNhWFJCY25KaGVVMWxkSEpwWTNOOFZtVmpkRzl5VFdWMGNtbGpjM3hUZEhKcGJtZE5aWFJ5YVdOekxGeHVJQ0FnSUc5d2RHbHZibk0vT2lCaGJua3BPaUJRY205dGFYTmxQRWxTWldSMVkyVkVhVzFsYm5OcGIyNWhiR2wwZVZKbGMzVnNkRDRnZTF4dVhHNGdJQ0FnWTI5dWMzUWdaR2x0Wlc1emFXOXVZV3hwZEhsU1pXUjFZMlZTWlhNNklFbFNaV1IxWTJWRWFXMWxibk5wYjI1aGJHbDBlVkpsYzNWc2RDQTlYRzRnSUNBZ0lDQWdJR0YzWVdsMElHTnlaV0YwWlVScGJXVnVjMmx1WVd4cGRIbFNaV1IxWTJsdVoxZHZjbXRsY2loY2JpQWdJQ0FnSUNBZ0lDQWdJSHNnWkdGMFlUb2daR0YwWVVOdmJDd2diV1YwY21sak9pQnphVzFwYkdGeWFYUjVUV1YwY21saklIMGdZWE1nVm1Gc2FXUlVlWEJsY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsZEdodlpFNWhiV1VzSUc5d2RHbHZibk1wTzF4dVhHNGdJQ0FnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTXVaVzFpWldSa2FXNW5JRDBnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTXVaVzFpWldSa2FXNW5MbTFoY0NocGRDQTlQaUJ1YjNKdFlXeHBlbVVvYVhRcEtUdGNiaUFnSUNCeVpYUjFjbTRnWkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWU1pYTTdYRzU5SWwxOSIsImltcG9ydCAqIGFzIGZsIGZyb20gJ2Zhc3Rlc3QtbGV2ZW5zaHRlaW4nO1xuaW1wb3J0IHsgamFyb1dpbmtsZXIgfSBmcm9tICdqYXJvLXdpbmtsZXItdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBkaXN0YW5jZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9zaW1pbGFyaXR5LW1ldHJpY3MnO1xuaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICAnVmVjdG9yJzoge1xuICAgICAgICAnRXVjbGlkZWFuRGlzdGFuY2UnOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSxcbiAgICB9LFxuICAgICdTdHJpbmcnOiB7XG4gICAgICAgICdMZXZlbnNodGVpbic6IGZsLmRpc3RhbmNlLFxuICAgICAgICAnSmFyby1XaW5rbGVyJzogamFyb1dpbmtsZXIsXG4gICAgfSxcbiAgICAnQml0QXJyYXknOiB7XG4gICAgICAgICdUYW5pbW90byc6IGRpc3RhbmNlTWV0cmljc1snVGFuaW1vdG8nXSxcbiAgICAgICAgJ0RpY2UnOiBkaXN0YW5jZU1ldHJpY3NbJ0RpY2UnXSxcbiAgICAgICAgJ0FzeW1tZXRyaWMnOiBkaXN0YW5jZU1ldHJpY3NbJ0FzeW1tZXRyaWMnXSxcbiAgICAgICAgJ0JyYXVuLUJsYW5xdWV0JzogZGlzdGFuY2VNZXRyaWNzWydCcmF1bi1CbGFucXVldCddLFxuICAgICAgICAnQ29zaW5lJzogZGlzdGFuY2VNZXRyaWNzWydDb3NpbmUnXSxcbiAgICAgICAgJ0t1bGN6eW5za2knOiBkaXN0YW5jZU1ldHJpY3NbJ0t1bGN6eW5za2knXSxcbiAgICAgICAgJ01jLUNvbm5hdWdoZXknOiBkaXN0YW5jZU1ldHJpY3NbJ01jLUNvbm5hdWdoZXknXSxcbiAgICAgICAgJ1JvZ290LUdvbGRiZXJnJzogZGlzdGFuY2VNZXRyaWNzWydSb2dvdC1Hb2xkYmVyZyddLFxuICAgICAgICAnUnVzc2VsJzogZGlzdGFuY2VNZXRyaWNzWydSdXNzZWwnXSxcbiAgICAgICAgJ1Nva2FsJzogZGlzdGFuY2VNZXRyaWNzWydTb2thbCddLFxuICAgIH0sXG59O1xuZXhwb3J0IGNvbnN0IE1ldHJpY1RvRGF0YVR5cGUgPSBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKVxuICAgIC5yZWR1Y2UoKHJldCwga2V5KSA9PiB7XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1trZXldKSkge1xuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn0sIHt9KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ01ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaXRBcnJheU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ0JpdEFycmF5Jztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3Rvck1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1ZlY3Rvcic7XG59XG4vKiogVW5pZmllZCBjbGFzcyBpbXBsZW1lbnRpbmcgZGlmZmVyZW50IHN0cmluZyBtZWFzdXJlcy4gKi9cbmV4cG9ydCBjbGFzcyBNZWFzdXJlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE1lYXN1cmUgd2l0aCAuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBNZXRob2QgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc3RyaW5ncy5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXRob2QpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHRoaXMuZGF0YVR5cGUgPSBNZXRyaWNUb0RhdGFUeXBlW21ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBmdW5jdGlvbiBzcGVjaWZpZWQuXG4gICAgICogQHJldHVybiB7RGlzdGFuY2VNZXRyaWN9IENhbGxiYWNrIG9mIHRoZSBtZWFzdXJlIGNob3Nlbi5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBnZXRNZWFzdXJlKCkge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgcmV0dXJuIGRpY3RbdGhpcy5kYXRhVHlwZV1bdGhpcy5tZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgYnkgdGhlIGdpdmVuIGRhdGEgdHlwZS5cbiAgICAgKiBAcGFyYW0ge0F2YWlsYWJsZURhdGFUeXBlc30gZGF0YVR5cGUgTWV0cmljJ3MgZGF0YSB0eXBlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IE1ldHJpYyBuYW1lcyB3aGljaCBleHBlY3RzIHRoZSBnaXZlbiBkYXRhIHR5cGVcbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TWV0cmljQnlEYXRhVHlwZShkYXRhVHlwZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1tkYXRhVHlwZV0pO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBtZXRyaWMgbmFtZXMgYXZhaWxhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZWFzdXJlcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaV1F0YldWMGNtbGpjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluUjVjR1ZrTFcxbGRISnBZM011ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3h4UWtGQmNVSXNRMEZCUXp0QlFVTXhReXhQUVVGUExFVkJRVU1zVjBGQlZ5eEZRVUZETEUxQlFVMHNlVUpCUVhsQ0xFTkJRVU03UVVGRmNFUXNUMEZCVHl4RlFVRkRMR1ZCUVdVc1JVRkJReXhOUVVGTkxHdEVRVUZyUkN4RFFVRkRPMEZCUTJwR0xFOUJRVThzUlVGQlF5d3dRa0ZCTUVJc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCU1ROR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGSE8wbEJRemxDTEZGQlFWRXNSVUZCUlR0UlFVTlNMRzFDUVVGdFFpeEZRVUZGTERCQ1FVRXdRanRMUVVOb1JEdEpRVU5FTEZGQlFWRXNSVUZCUlR0UlFVTlNMR0ZCUVdFc1JVRkJSU3hGUVVGRkxFTkJRVU1zVVVGQlVUdFJRVU14UWl4alFVRmpMRVZCUVVVc1YwRkJWenRMUVVNMVFqdEpRVU5FTEZWQlFWVXNSVUZCUlR0UlFVTldMRlZCUVZVc1JVRkJSU3hsUVVGbExFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEzWkRMRTFCUVUwc1JVRkJSU3hsUVVGbExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF5OUNMRmxCUVZrc1JVRkJSU3hsUVVGbExFTkJRVU1zV1VGQldTeERRVUZETzFGQlF6TkRMR2RDUVVGblFpeEZRVUZGTEdWQlFXVXNRMEZCUXl4blFrRkJaMElzUTBGQlF6dFJRVU51UkN4UlFVRlJMRVZCUVVVc1pVRkJaU3hEUVVGRExGRkJRVkVzUTBGQlF6dFJRVU51UXl4WlFVRlpMRVZCUVVVc1pVRkJaU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVU16UXl4bFFVRmxMRVZCUVVVc1pVRkJaU3hEUVVGRExHVkJRV1VzUTBGQlF6dFJRVU5xUkN4blFrRkJaMElzUlVGQlJTeGxRVUZsTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGJrUXNVVUZCVVN4RlFVRkZMR1ZCUVdVc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRGJrTXNUMEZCVHl4RlFVRkZMR1ZCUVdVc1EwRkJReXhQUVVGUExFTkJRVU03UzBGRGJFTTdRMEZEUml4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVhGQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03UzBGRE5VVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJjVUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0SlFVTnlReXhMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNSMEZCZVVJc1EwRkJReXhEUVVGRExFVkJRVVU3VVVGRE1VVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTMEZEZEVNN1NVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVZkVUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYTBJN1NVRkRMME1zVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGclFqdEpRVU5xUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhKUVVGclFqdEpRVU12UXl4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJRenRCUVVNMVF5eERRVUZETzBGQlJVUXNORVJCUVRSRU8wRkJRelZFTEUxQlFVMHNUMEZCVHl4UFFVRlBPMGxCU1d4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFMUJRVzlDTzFGQlF6bENMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGMVFpeERRVUZETzBsQlEycEZMRU5CUVVNN1NVRkZSRHM3T3p0UFFVbEhPMGxCUTBrc1ZVRkJWVHRSUVVObUxFMUJRVTBzU1VGQlNTeEhRVUZ6UkN4blFrRkJaMElzUTBGQlF6dFJRVU5xUml4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRekZETEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTFCUVUwc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4UlFVRTBRanRSUVVNMVJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOcVJDeERRVUZETzBsQlJVUTdPMDFCUlVVN1NVRkRSaXhOUVVGTkxFdEJRVXNzYVVKQlFXbENPMUZCUXpGQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzBsQlEzWkRMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0FxSUdGeklHWnNJR1p5YjIwZ0oyWmhjM1JsYzNRdGJHVjJaVzV6YUhSbGFXNG5PMXh1YVcxd2IzSjBJSHRxWVhKdlYybHVhMnhsY24wZ1puSnZiU0FuYW1GeWJ5MTNhVzVyYkdWeUxYUjVjR1Z6WTNKcGNIUW5PMXh1YVcxd2IzSjBJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRrYVhOMFlXNWpaVTFsZEhKcFkzTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM05wYldsc1lYSnBkSGt0YldWMGNtbGpjeWM3WEc1cGJYQnZjblFnZTJOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdWbVZqZEc5eUxDQlRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNBblZtVmpkRzl5SnpvZ2UxeHVJQ0FnSUNkRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlNjNklHTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVJQ0I5TEZ4dUlDQW5VM1J5YVc1bkp6b2dlMXh1SUNBZ0lDZE1aWFpsYm5Ob2RHVnBiaWM2SUdac0xtUnBjM1JoYm1ObExGeHVJQ0FnSUNkS1lYSnZMVmRwYm10c1pYSW5PaUJxWVhKdlYybHVhMnhsY2l4Y2JpQWdmU3hjYmlBZ0owSnBkRUZ5Y21GNUp6b2dlMXh1SUNBZ0lDZFVZVzVwYlc5MGJ5YzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25WR0Z1YVcxdmRHOG5YU3hjYmlBZ0lDQW5SR2xqWlNjNklHUnBjM1JoYm1ObFRXVjBjbWxqYzFzblJHbGpaU2RkTEZ4dUlDQWdJQ2RCYzNsdGJXVjBjbWxqSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkQmMzbHRiV1YwY21sakoxMHNYRzRnSUNBZ0owSnlZWFZ1TFVKc1lXNXhkV1YwSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkQ2NtRjFiaTFDYkdGdWNYVmxkQ2RkTEZ4dUlDQWdJQ2REYjNOcGJtVW5PaUJrYVhOMFlXNWpaVTFsZEhKcFkzTmJKME52YzJsdVpTZGRMRnh1SUNBZ0lDZExkV3hqZW5sdWMydHBKem9nWkdsemRHRnVZMlZOWlhSeWFXTnpXeWRMZFd4amVubHVjMnRwSjEwc1hHNGdJQ0FnSjAxakxVTnZibTVoZFdkb1pYa25PaUJrYVhOMFlXNWpaVTFsZEhKcFkzTmJKMDFqTFVOdmJtNWhkV2RvWlhrblhTeGNiaUFnSUNBblVtOW5iM1F0UjI5c1pHSmxjbWNuT2lCa2FYTjBZVzVqWlUxbGRISnBZM05iSjFKdloyOTBMVWR2YkdSaVpYSm5KMTBzWEc0Z0lDQWdKMUoxYzNObGJDYzZJR1JwYzNSaGJtTmxUV1YwY21samMxc25VblZ6YzJWc0oxMHNYRzRnSUNBZ0oxTnZhMkZzSnpvZ1pHbHpkR0Z1WTJWTlpYUnlhV056V3lkVGIydGhiQ2RkTEZ4dUlDQjlMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtTQjdYRzRnSUNBZ0lDQnlaWFJiZG1Gc0lHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBnUFNCclpYazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ5WlhRN1hHNGdJSDBzSUh0OUtUdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc1bGVIQnZjblFnZEhsd1pTQlRkSEpwYm1kTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMU4wY21sdVp5ZGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1FtbDBRWEp5WVhsTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMEpwZEVGeWNtRjVKMTA3WEc1bGVIQnZjblFnZEhsd1pTQldaV04wYjNKTlpYUnlhV056SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTmJKMVpsWTNSdmNpZGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1MyNXZkMjVOWlhSeWFXTnpJRDBnVTNSeWFXNW5UV1YwY21samN5QjhJRUpwZEVGeWNtRjVUV1YwY21samN5QjhJRlpsWTNSdmNrMWxkSEpwWTNNN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaaGJHbGtWSGx3WlhNZ1BTQjdaR0YwWVRvZ2MzUnlhVzVuVzEwc0lHMWxkSEpwWXpvZ1UzUnlhVzVuVFdWMGNtbGpjMzBnZkNCN1pHRjBZVG9nVm1WamRHOXlXMTBzSUcxbGRISnBZem9nVm1WamRHOXlUV1YwY21samMzMGdmRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSHRrWVhSaE9pQkNhWFJCY25KaGVWdGRMQ0J0WlhSeWFXTTZJRUpwZEVGeWNtRjVUV1YwY21samMzMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzFOMGNtbHVaMDFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnSjFOMGNtbHVaeWM3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMEpwZEVGeWNtRjVUV1YwY21saktHNWhiV1U2SUV0dWIzZHVUV1YwY21samN5a2dlMXh1SUNCeVpYUjFjbTRnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR1WVcxbFhTQTlQU0FuUW1sMFFYSnlZWGtuTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5XWldOMGIzSk5aWFJ5YVdNb2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUhKbGRIVnliaUJOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjVoYldWZElEMDlJQ2RXWldOMGIzSW5PMXh1ZlZ4dVhHNHZLaW9nVlc1cFptbGxaQ0JqYkdGemN5QnBiWEJzWlcxbGJuUnBibWNnWkdsbVptVnlaVzUwSUhOMGNtbHVaeUJ0WldGemRYSmxjeTRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJOWldGemRYSmxJSHRjYmlBZ2NISnZkR1ZqZEdWa0lHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpPMXh1SUNCd2NtOTBaV04wWldRZ1pHRjBZVlI1Y0dVNklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGN6dGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJOWldGemRYSmxJSGRwZEdnZ0xseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnYldWMGFHOWtJRTFsZEdodlpDQjBieUJqWVd4amRXeGhkR1VnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUJ6ZEhKcGJtZHpMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0cxbGRHaHZaRG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUNBZ2RHaHBjeTV0WlhSb2IyUWdQU0J0WlhSb2IyUTdYRzRnSUNBZ2RHaHBjeTVrWVhSaFZIbHdaU0E5SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYldWMGFHOWtYU0JoY3lCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmpkWE4wYjIwZ2MzUnlhVzVuSUdScGMzUmhibU5sSUdaMWJtTjBhVzl1SUhOd1pXTnBabWxsWkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UkdsemRHRnVZMlZOWlhSeWFXTjlJRU5oYkd4aVlXTnJJRzltSUhSb1pTQnRaV0Z6ZFhKbElHTm9iM05sYmk1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUUxbFlYTjFjbVZ5WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWjJWMFRXVmhjM1Z5WlNncE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCN1hHNGdJQ0FnWTI5dWMzUWdaR2xqZERvZ2UxdHJaWGs2SUhOMGNtbHVaMTA2SUh0YmEyVjVNam9nYzNSeWFXNW5YVG9nUkdsemRHRnVZMlZOWlhSeWFXTjlmU0E5SUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc0Z0lDQWdjbVYwZFhKdUlHUnBZM1JiZEdocGN5NWtZWFJoVkhsd1pWMWJkR2hwY3k1dFpYUm9iMlJkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSmxkSFZ5Ym5NZ1kzVnpkRzl0SUhOMGNtbHVaeUJrYVhOMFlXNWpaU0JpZVNCMGFHVWdaMmwyWlc0Z1pHRjBZU0IwZVhCbExseHVJQ0FnS2lCQWNHRnlZVzBnZTBGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzMwZ1pHRjBZVlI1Y0dVZ1RXVjBjbWxqSjNNZ1pHRjBZU0IwZVhCbFhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMXRkZlNCTlpYUnlhV01nYm1GdFpYTWdkMmhwWTJnZ1pYaHdaV04wY3lCMGFHVWdaMmwyWlc0Z1pHRjBZU0IwZVhCbFhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhSTlpYUnlhV05DZVVSaGRHRlVlWEJsS0dSaGRHRlVlWEJsT2lCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlpHRjBZVlI1Y0dWZEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCU1pYUjFjbTV6SUcxbGRISnBZeUJ1WVcxbGN5QmhkbUZwYkdGaWJHVXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FxTDF4dUlDQnpkR0YwYVdNZ1oyVjBJR0YyWVdsc1lXSnNaVTFsWVhOMWNtVnpLQ2s2SUhOMGNtbHVaMXRkSUh0Y2JpQWdJQ0J5WlhSMWNtNGdUMkpxWldOMExtdGxlWE1vUVhaaGFXeGhZbXhsVFdWMGNtbGpjeWs3WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgeyBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvc2ltaWxhcml0eS1tZXRyaWNzJztcbmxldCB6b29tID0gZmFsc2U7XG4vLyBTZWFyY2hlcyBmb3IgYWN0aXZpdHkgY2xpZmZzIGluIGEgY2hlbWljYWwgZGF0YXNldCBieSBzZWxlY3RlZCBjdXRvZmZcbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpdml0eUNsaWZmcyhkZiwgc2VxQ29sLCBheGVzTmFtZXMsIHNjYXR0ZXJUaXRsZSwgYWN0aXZpdGllcywgc2ltaWxhcml0eSwgc2ltaWxhcml0eU1ldHJpYywgbWV0aG9kTmFtZSwgc2VtVHlwZSwgdW5pdHMsIHNlcVNwYWNlRnVuYywgc2ltRnVuYywgdG9vbHRpcERyYXdGdW5jLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgYXV0b21hdGljU2ltaWxhcml0eUxpbWl0ID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IE1JTl9TSU1JTEFSSVRZID0gODA7XG4gICAgICAgIGNvbnN0IGluaXRpYWxTaW1pbGFyaXR5TGltaXQgPSBhdXRvbWF0aWNTaW1pbGFyaXR5TGltaXQgPyBNSU5fU0lNSUxBUklUWSA6IHNpbWlsYXJpdHkgLyAxMDA7XG4gICAgICAgIGNvbnN0IHsgZGlzdGFuY2UsIGNvb3JkaW5hdGVzIH0gPSB5aWVsZCBzZXFTcGFjZUZ1bmMoe1xuICAgICAgICAgICAgc2VxQ29sOiBzZXFDb2wsXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICAgICAgICAgIGVtYmVkQXhlc05hbWVzOiBheGVzTmFtZXMsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb29yZGluYXRlcylcbiAgICAgICAgICAgIGRmLmNvbHVtbnMuYWRkKGNvbCk7XG4gICAgICAgIGNvbnN0IGRmU2VxID0gREcuRGF0YUZyYW1lLmZyb21Db2x1bW5zKFtERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsICdzZXEnLCBzZXFDb2wudG9MaXN0KCkpXSk7XG4gICAgICAgIGNvbnN0IGRpbSA9IHNlcUNvbC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHNpbUFyciA9IEFycmF5KGRpbSAtIDEpO1xuICAgICAgICBpZiAoIWRpc3RhbmNlKVxuICAgICAgICAgICAgeWllbGQgZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBnZXRTaW1pbGFyaXRpZXNNYXJpeEZyb21EaXN0YW5jZXMoZGltLCBkaXN0YW5jZSwgc2ltQXJyKTtcbiAgICAgICAgY29uc3Qgb3B0U2ltaWxhcml0eUxpbWl0ID0gaW5pdGlhbFNpbWlsYXJpdHlMaW1pdDtcbiAgICAgICAgY29uc3Qgc2ltVmFscyA9IFtdO1xuICAgICAgICBjb25zdCBzYWxpVmFscyA9IFtdO1xuICAgICAgICBjb25zdCBuMSA9IFtdO1xuICAgICAgICBjb25zdCBuMiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqICE9IGRpbSAtIDEgLSBpOyArK2opIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW0gPSBzaW1BcnJbaV0uZ2V0KGopO1xuICAgICAgICAgICAgICAgIGlmIChzaW0gPj0gb3B0U2ltaWxhcml0eUxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIG4xLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgIG4yLnB1c2goaSArIGogKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2ltVmFscy5wdXNoKHNpbSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChpKSAtIGFjdGl2aXRpZXMuZ2V0KGkgKyBqICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2ltICE9IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxpVmFscy5wdXNoKGRpZmYgLyAoMSAtIHNpbSkpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxpVmFscy5wdXNoKEluZmluaXR5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2FsaVZhbHNXaXRob3V0SW5maW5pdHkgPSBzYWxpVmFscy5maWx0ZXIoaXQgPT4gaXQgIT09IEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU1pbiA9IE1hdGgubWluKC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU1heCA9IE1hdGgubWF4KC4uLnNhbGlWYWxzV2l0aG91dEluZmluaXR5KTtcbiAgICAgICAgY29uc3Qgc2FsaU9wYWNpdHlDb2VmID0gMC44IC8gKHNhbGlNYXggLSBzYWxpTWluKTtcbiAgICAgICAgY29uc3QgbmVpZ2hib3Vyc0NvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgY29uc3Qgc2ltaWxhcml0eUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgY29uc3Qgc2FsaUNvdW50ID0gbmV3IEFycmF5KGRpbSkuZmlsbCgwKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gbjEubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIG5laWdoYm91cnNDb3VudFtuMVtpXV0gKz0gMTtcbiAgICAgICAgICAgIG5laWdoYm91cnNDb3VudFtuMltpXV0gKz0gMTtcbiAgICAgICAgICAgIHNpbWlsYXJpdHlDb3VudFtuMVtpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICAgICAgICAgIHNpbWlsYXJpdHlDb3VudFtuMltpXV0gKz0gc2ltVmFsc1tpXTtcbiAgICAgICAgICAgIGlmIChzYWxpVmFsc1tpXSAhPSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0aWVzLmdldChuMVtpXSkgPiBhY3Rpdml0aWVzLmdldChuMltpXSkpXG4gICAgICAgICAgICAgICAgICAgIHNhbGlDb3VudFtuMVtpXV0gKz0gc2FsaVZhbHNbaV07XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBzYWxpQ291bnRbbjJbaV1dICs9IHNhbGlWYWxzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbGkgPSBERy5Db2x1bW4uZnJvbUxpc3QoJ2RvdWJsZScsIGBzYWxpXyR7YXhlc05hbWVzWzBdLnN1YnN0cmluZyhheGVzTmFtZXNbMF0ubGFzdEluZGV4T2YoJ18nKSl9YCwgc2FsaUNvdW50KTtcbiAgICAgICAgZGYuY29sdW1ucy5hZGQoc2FsaSk7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBncm9rLnNoZWxsLmdldFRhYmxlVmlldyhkZi5uYW1lKTtcbiAgICAgICAgY29uc3Qgc3AgPSB2aWV3LmFkZFZpZXdlcihERy5WaWV3ZXIuc2NhdHRlclBsb3QoZGYsIHtcbiAgICAgICAgICAgIHhDb2x1bW5OYW1lOiBheGVzTmFtZXNbMF0sXG4gICAgICAgICAgICB5Q29sdW1uTmFtZTogYXhlc05hbWVzWzFdLFxuICAgICAgICAgICAgc2l6ZTogc2FsaS5uYW1lLFxuICAgICAgICAgICAgY29sb3I6IGFjdGl2aXRpZXMubmFtZSxcbiAgICAgICAgICAgIHNob3dYU2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICAgICAgc2hvd1lTZWxlY3RvcjogZmFsc2UsXG4gICAgICAgICAgICBzaG93U2l6ZVNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dDb2xvclNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgICAgIG1hcmtlck1pblNpemU6IDUsXG4gICAgICAgICAgICBtYXJrZXJNYXhTaXplOiAyNSxcbiAgICAgICAgICAgIHRpdGxlOiBzY2F0dGVyVGl0bGVcbiAgICAgICAgfSkpO1xuICAgICAgICBjb25zdCBjYW52YXMgPSBzcC5nZXRJbmZvKClbJ2NhbnZhcyddO1xuICAgICAgICBjb25zdCBsaW5lc1JlcyA9IGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxQ29sLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpO1xuICAgICAgICBjb25zdCB0b29sdGlwcyA9IHt9O1xuICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLm9uQ3VycmVudENlbGxDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TW9sSWR4ID0gbGluZXNSZXMubGluZXNEZi5jdXJyZW50Q29sICYmIGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudENvbC5uYW1lID09PSAnMl9zZXEnID8gMSA6IDA7XG4gICAgICAgICAgICBzcC5kYXRhRnJhbWUuY3VycmVudFJvd0lkeCA9XG4gICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ICE9PSAtMSA/IGxpbmVzUmVzLmxpbmVzW2xpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeF0ubW9sc1tjdXJyZW50TW9sSWR4XSA6IC0xO1xuICAgICAgICAgICAgc3AuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoMCwgIWxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNwLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIGxpbmVzRGZHcmlkLmludmFsaWRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGxpbmVzUmVzLmxpbmVzRGYub25TZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYubW91c2VPdmVyUm93SWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1Jlcy5saW5lc1tsaW5lc1Jlcy5saW5lc0RmLm1vdXNlT3ZlclJvd0lkeF07XG4gICAgICAgICAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgZGYuc2VsZWN0aW9uLnNldEFsbChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGwuc2VsZWN0ZWQpXG4gICAgICAgICAgICAgICAgICAgIGwubW9scy5mb3JFYWNoKChtKSA9PiBkZi5zZWxlY3Rpb24uc2V0KG0sIHRydWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGluZXNEZkdyaWQuaW52YWxpZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGluZXNEZkdyaWQgPSBsaW5lc1Jlcy5saW5lc0RmLnBsb3QuZ3JpZCgpLnNvcnQoWydhY3RfZGlmZiddLCBbZmFsc2VdKTtcbiAgICAgICAgbGluZXNEZkdyaWQub25DZWxsQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHpvb20gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbGlzdENsaWZmc0xpbmsgPSB1aS5idXR0b24oYCR7bGluZXNSZXMubGluZXNEZi5yb3dDb3VudH0gY2xpZmZzYCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2xpZmZzRGlhbG9nID0gdWkuZGlhbG9nKHsgdGl0bGU6ICdBY3Rpdml0eSBjbGlmZnMnIH0pXG4gICAgICAgICAgICAgICAgLmFkZChsaW5lc0RmR3JpZC5yb290KVxuICAgICAgICAgICAgICAgIC5zaG93KCk7XG4gICAgICAgICAgICBjbGlmZnNEaWFsb2cucm9vdC5pZCA9ICdjbGlmZnNfZGlhbG9nJztcbiAgICAgICAgfSk7XG4gICAgICAgIGxpc3RDbGlmZnNMaW5rLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgbGlzdENsaWZmc0xpbmsuc3R5bGUudG9wID0gJzEwcHgnO1xuICAgICAgICBsaXN0Q2xpZmZzTGluay5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgICAgICAgc3Aucm9vdC5hcHBlbmQobGlzdENsaWZmc0xpbmspO1xuICAgICAgICBsZXQgdGltZXI7XG4gICAgICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgICAgICB0aW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gY2hlY2tDdXJzb3JPbkxpbmUoZXZlbnQsIGNhbnZhcywgbGluZXNSZXMubGluZXMpO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lICYmIGRmLm1vdXNlT3ZlclJvd0lkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0b29sdGlwc1tsaW5lLmlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHJhd1Rvb2x0aXBQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcHM6IHRvb2x0aXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGY6IGRmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcUNvbDogc2VxQ29sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5OiBhY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBEcmF3RnVuYyhkcmF3VG9vbHRpcFBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdWkudG9vbHRpcC5zaG93KHRvb2x0aXBzW2xpbmUuaWRdLCBldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lc1Jlcy5saW5lcyk7XG4gICAgICAgICAgICBpZiAobGluZSAmJiBkZi5tb3VzZU92ZXJSb3dJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluZS5zZWxlY3RlZCA9ICFsaW5lLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lc0RmLnNlbGVjdGlvbi5zZXQobGluZS5pZCwgbGluZS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbGluZS5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLnNlbGVjdGlvbi5zZXRBbGwoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBsaW5lc1Jlcy5saW5lcy5mb3JFYWNoKChsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobC5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLm1vbHMuZm9yRWFjaCgobSkgPT4gZGYuc2VsZWN0aW9uLnNldChtLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVzUmVzLmxpbmVzRGYuY3VycmVudFJvd0lkeCAhPT0gbGluZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4ID0gbGluZS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRmLmN1cnJlbnRSb3dJZHggPSBsaW5lLm1vbHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsICFsaW5lc1Jlcy5saW5lc1swXS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZi5zZWxlY3Rpb24uc2V0KDAsIGxpbmVzUmVzLmxpbmVzWzBdLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNwLm9uRXZlbnQoJ2Q0LWJlZm9yZS1kcmF3LXNjZW5lJylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gcmVuZGVyTGluZXMoc3AsIGF4ZXNOYW1lc1swXSwgYXhlc05hbWVzWzFdLCBsaW5lc1Jlcywgc2FsaVZhbHMsIHNhbGlPcGFjaXR5Q29lZiwgc2FsaU1pbik7XG4gICAgICAgICAgICBpZiAoem9vbSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRMaW5lID0gbGluZXNbbGluZXNSZXMubGluZXNEZi5jdXJyZW50Um93SWR4XTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeDEgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1swXSwgY3VycmVudExpbmUubW9sc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHkxID0gc3AuZGF0YUZyYW1lLmdldChheGVzTmFtZXNbMV0sIGN1cnJlbnRMaW5lLm1vbHNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB4MiA9IHNwLmRhdGFGcmFtZS5nZXQoYXhlc05hbWVzWzBdLCBjdXJyZW50TGluZS5tb2xzWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeTIgPSBzcC5kYXRhRnJhbWUuZ2V0KGF4ZXNOYW1lc1sxXSwgY3VycmVudExpbmUubW9sc1sxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHhEaWZmID0gTWF0aC5hYnMoeDEgLSB4MikgKiA1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5RGlmZiA9IE1hdGguYWJzKHkxIC0geTIpICogNTtcbiAgICAgICAgICAgICAgICAgICAgc3Auem9vbSh4MSA8IHgyID8geDEgLSB4RGlmZiA6IHgyIC0geERpZmYsIHkxID4geTIgPyB5MSArIHlEaWZmIDogeTIgKyB5RGlmZiwgeDEgPiB4MiA/IHgxICsgeERpZmYgOiB4MiArIHhEaWZmLCB5MSA8IHkyID8geTEgLSB5RGlmZiA6IHkyIC0geURpZmYpO1xuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICAgICAgem9vbSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc3AuYWRkUHJvcGVydHkoJ3NpbWlsYXJpdHlMaW1pdCcsICdkb3VibGUnLCBvcHRTaW1pbGFyaXR5TGltaXQpO1xuICAgICAgICByZXR1cm4gc3A7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBjaGVja0N1cnNvck9uTGluZShldmVudCwgY2FudmFzLCBsaW5lcykge1xuICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQ7XG4gICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcDtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IE1hdGguYWJzKE1hdGguaHlwb3QobGluZS5hWzBdIC0geCwgbGluZS5hWzFdIC0geSkgK1xuICAgICAgICAgICAgTWF0aC5oeXBvdChsaW5lLmJbMF0gLSB4LCBsaW5lLmJbMV0gLSB5KSAtIE1hdGguaHlwb3QobGluZS5hWzBdIC0gbGluZS5iWzBdLCBsaW5lLmFbMV0gLSBsaW5lLmJbMV0pKTtcbiAgICAgICAgaWYgKGRpc3QgPCAyKVxuICAgICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVuZGVyTGluZXMoc3AsIHhBeGlzLCB5QXhpcywgbGluZXNSZXMsIHNhbGlWYWxzLCBzYWxpT3BhY2l0eUNvZWYsIHNhbGlNaW4pIHtcbiAgICBjb25zdCBsaW5lcyA9IGxpbmVzUmVzLmxpbmVzO1xuICAgIGNvbnN0IGNhbnZhcyA9IHNwLmdldEluZm8oKVsnY2FudmFzJ107XG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgY29uc3QgeCA9IHNwLmRhdGFGcmFtZS5jb2x1bW5zLmJ5TmFtZSh4QXhpcyk7XG4gICAgY29uc3QgeSA9IHNwLmRhdGFGcmFtZS5jb2x1bW5zLmJ5TmFtZSh5QXhpcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBwb2ludEZyb20gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMF0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzBdKSk7XG4gICAgICAgIGNvbnN0IHBvaW50VG8gPSBzcC53b3JsZFRvU2NyZWVuKHguZ2V0KGxpbmVzW2ldLm1vbHNbMV0pLCB5LmdldChsaW5lc1tpXS5tb2xzWzFdKSk7XG4gICAgICAgIGxpbmVzW2ldLmEgPSBbcG9pbnRGcm9tLngsIHBvaW50RnJvbS55XTtcbiAgICAgICAgbGluZXNbaV0uYiA9IFtwb2ludFRvLngsIHBvaW50VG8ueV07XG4gICAgICAgIGNvbnN0IGxpbmUgPSBuZXcgUGF0aDJEKCk7XG4gICAgICAgIGxpbmUubW92ZVRvKGxpbmVzW2ldLmFbMF0sIGxpbmVzW2ldLmFbMV0pO1xuICAgICAgICBjb25zdCBjb2xvciA9IGxpbmVzW2ldLnNlbGVjdGVkID8gJzI1NSwyNTUsMCcgOiAnMCwxMjgsMCc7XG4gICAgICAgIGNvbnN0IG9wYWNpdHkgPSBzYWxpVmFsc1tpXSA9PT0gSW5maW5pdHkgPyAxIDogMC4yICsgKHNhbGlWYWxzW2ldIC0gc2FsaU1pbikgKiBzYWxpT3BhY2l0eUNvZWY7XG4gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGByZ2JhKCR7Y29sb3J9LCR7b3BhY2l0eX0pYDtcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVzW2ldLmlkID09PSBsaW5lc1Jlcy5saW5lc0RmLmN1cnJlbnRSb3dJZHggPyAzIDogMTtcbiAgICAgICAgbGluZS5saW5lVG8obGluZXNbaV0uYlswXSwgbGluZXNbaV0uYlsxXSk7XG4gICAgICAgIGN0eC5zdHJva2UobGluZSk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxpbmVzKG4xLCBuMiwgc2VxLCBhY3Rpdml0aWVzLCBzYWxpVmFscywgc2VtVHlwZSwgdW5pdHMpIHtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgbnVtMSA9IG4xW2ldO1xuICAgICAgICBjb25zdCBudW0yID0gbjJbaV07XG4gICAgICAgIGxpbmVzLnB1c2goeyBpZDogaSwgbW9sczogW251bTEsIG51bTJdLCBzZWxlY3RlZDogZmFsc2UsIGE6IFtdLCBiOiBbXSB9KTtcbiAgICB9XG4gICAgY29uc3QgbGluZXNEZiA9IERHLkRhdGFGcmFtZS5jcmVhdGUobGluZXMubGVuZ3RoKTtcbiAgICBsaW5lc0RmLmNvbHVtbnMuYWRkTmV3U3RyaW5nKCcxX3NlcScpLmluaXQoKGkpID0+IHNlcS5nZXQobGluZXNbaV0ubW9sc1swXSkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdTdHJpbmcoJzJfc2VxJykuaW5pdCgoaSkgPT4gc2VxLmdldChsaW5lc1tpXS5tb2xzWzFdKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0Zsb2F0KCdhY3RfZGlmZicpXG4gICAgICAgIC5pbml0KChpKSA9PiBNYXRoLmFicyhhY3Rpdml0aWVzLmdldChsaW5lc1tpXS5tb2xzWzBdKSAtIGFjdGl2aXRpZXMuZ2V0KGxpbmVzW2ldLm1vbHNbMV0pKSk7XG4gICAgbGluZXNEZi5jb2x1bW5zLmFkZE5ld0ludCgnbGluZV9pbmRleCcpLmluaXQoKGkpID0+IGkpO1xuICAgIGxpbmVzRGYuY29sdW1ucy5hZGROZXdGbG9hdCgnc2FsaScpLmluaXQoKGkpID0+IHNhbGlWYWxzW2ldKTtcbiAgICBsaW5lc0RmLmNvbCgnMV9zZXEnKS50YWdzW0RHLlRBR1MuVU5JVFNdID0gdW5pdHM7XG4gICAgbGluZXNEZi5jb2woJzJfc2VxJykudGFnc1tERy5UQUdTLlVOSVRTXSA9IHVuaXRzO1xuICAgIGxpbmVzRGYuY29sKCcxX3NlcScpLnNlbVR5cGUgPSBzZW1UeXBlO1xuICAgIGxpbmVzRGYuY29sKCcyX3NlcScpLnNlbVR5cGUgPSBzZW1UeXBlO1xuICAgIHJldHVybiB7IGxpbmVzLCBsaW5lc0RmIH07XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXgoZGltLCBzZXFDb2wsIGRmU2VxLCBzaW1BcnIsIHNpbUZ1bmMpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBkaW0gLSAxOyArK2kpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vbCA9IHNlcUNvbC5nZXQoaSk7XG4gICAgICAgICAgICBkZlNlcS5yb3dzLnJlbW92ZUF0KDAsIDEsIGZhbHNlKTtcbiAgICAgICAgICAgIHNpbUFycltpXSA9ICh5aWVsZCBzaW1GdW5jKGRmU2VxLmNvbCgnc2VxJyksIG1vbCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaW1BcnI7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0aWVzTWFyaXhGcm9tRGlzdGFuY2VzKGRpbSwgZGlzdGFuY2VzLCBzaW1BcnIpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbSAtIDE7ICsraSkge1xuICAgICAgICBjb25zdCBzaW1pbGFyaXR5QXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IGRpbTsgKytqKVxuICAgICAgICAgICAgc2ltaWxhcml0eUFyci5wdXNoKGdldFNpbWlsYXJpdHlGcm9tRGlzdGFuY2UoZGlzdGFuY2VzW2ldW2pdKSk7XG4gICAgICAgIHNpbUFycltpXSA9IERHLkNvbHVtbi5mcm9tRmxvYXQzMkFycmF5KCdzaW1pbGFyaXR5JywgRmxvYXQzMkFycmF5LmZyb20oc2ltaWxhcml0eUFycikpO1xuICAgIH1cbiAgICByZXR1cm4gc2ltQXJyO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWVdOMGFYWnBkSGt0WTJ4cFptWnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVlXTjBhWFpwZEhrdFkyeHBabVp6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3p0QlFVRkJMRTlCUVU4c1MwRkJTeXhKUVVGSkxFMUJRVTBzYlVKQlFXMUNMRU5CUVVNN1FVRkRNVU1zVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU4wUXl4UFFVRlBMRXRCUVVzc1JVRkJSU3hOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlhSRExFOUJRVThzUlVGQlJTeDVRa0ZCZVVJc1JVRkJSU3hOUVVGTkxHdEVRVUZyUkN4RFFVRkRPMEZCYzBNM1JpeEpRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkZha0lzZDBWQlFYZEZPMEZCUTNoRkxFMUJRVTBzVlVGQlowSXNhVUpCUVdsQ0xFTkJRMjVETEVWQlFXZENMRVZCUTJoQ0xFMUJRV2xDTEVWQlEycENMRk5CUVcxQ0xFVkJRMjVDTEZsQlFXOUNMRVZCUTNCQ0xGVkJRWEZDTEVWQlEzSkNMRlZCUVd0Q0xFVkJRMnhDTEdkQ1FVRjNRaXhGUVVONFFpeFZRVUZyUWl4RlFVTnNRaXhQUVVGbExFVkJRMllzUzBGQllTeEZRVU5pTEZsQlFUWkZMRVZCUXpkRkxFOUJRVzFGTEVWQlEyNUZMR1ZCUVhGRUxFVkJRM0pFTEU5QlFXRTdPMUZCUTJZc1RVRkJUU3gzUWtGQmQwSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkRka01zVFVGQlRTeGpRVUZqTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUlRGQ0xFMUJRVTBzYzBKQlFYTkNMRWRCUVVjc2QwSkJRWGRDTEVOQlFVTXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zVlVGQlZTeEhRVUZITEVkQlFVY3NRMEZCUXp0UlFVVTFSaXhOUVVGTkxFVkJRVU1zVVVGQlVTeEZRVUZGTEZkQlFWY3NSVUZCUXl4SFFVRkhMRTFCUVUwc1dVRkJXU3hEUVVGRE8xbEJRMnBFTEUxQlFVMHNSVUZCUlN4TlFVRk5PMWxCUTJRc1ZVRkJWU3hGUVVGRkxGVkJRVlU3V1VGRGRFSXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENPMWxCUTJ4RExHTkJRV01zUlVGQlJTeFRRVUZUTzFsQlEzcENMRTlCUVU4c1JVRkJSU3hQUVVGUE8xTkJRMnBDTEVOQlFVTXNRMEZCUXp0UlFVVklMRXRCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzVjBGQlZ6dFpRVU16UWl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVjBRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJReTlHTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRE1VSXNUVUZCVFN4TlFVRk5MRWRCUVdkQ0xFdEJRVXNzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZNME1zU1VGQlNTeERRVUZETEZGQlFWRTdXVUZEV0N4TlFVRk5MRzlDUVVGdlFpeERRVUZETEVkQlFVY3NSVUZCUlN4TlFVRk5MRVZCUVVVc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1dVRkZhRVVzYVVOQlFXbERMRU5CUVVNc1IwRkJSeXhGUVVGRkxGRkJRVkVzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVVXpSQ3hOUVVGTkxHdENRVUZyUWl4SFFVRkhMSE5DUVVGelFpeERRVUZETzFGQlJXeEVMRTFCUVUwc1QwRkJUeXhIUVVGaExFVkJRVVVzUTBGQlF6dFJRVU0zUWl4TlFVRk5MRkZCUVZFc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRE9VSXNUVUZCVFN4RlFVRkZMRWRCUVdFc1JVRkJSU3hEUVVGRE8xRkJRM2hDTEUxQlFVMHNSVUZCUlN4SFFVRmhMRVZCUVVVc1EwRkJRenRSUVVWNFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOcVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3WjBKQlEzSkRMRTFCUVUwc1IwRkJSeXhIUVVGWExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlJYSkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RlFVRkZPMjlDUVVNM1FpeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5ZTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRia0lzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGJFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTnlSU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzNkQ1FVTldMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03TzNkQ1FVVm9ReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMmxDUVVNelFqdGhRVU5HTzFOQlEwWTdVVUZGUkN4TlFVRk5MSFZDUVVGMVFpeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRka1VzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkRja1FzVFVGQlRTeGxRVUZsTEVkQlFVY3NSMEZCUnl4SFFVRkRMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eERRVUZETzFGQlIyaEVMRTFCUVUwc1pVRkJaU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU12UXl4TlFVRk5MR1ZCUVdVc1IwRkJSeXhKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGREwwTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWHBETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMjVETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdXVUZETlVJc1pVRkJaU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVNMVFpeGxRVUZsTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKRExHVkJRV1VzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEY2tNc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NVVUZCVVN4RlFVRkZPMmRDUVVNelFpeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUXk5RExGTkJRVk1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdPMjlDUVVWb1F5eFRRVUZUTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTI1RE8xTkJRMFk3VVVGRlJDeE5RVUZOTEVsQlFVa3NSMEZCWXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSV3BKTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJYSkNMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01UXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5zUkN4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4WFFVRlhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVU42UWl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWs3V1VGRFppeExRVUZMTEVWQlFVVXNWVUZCVlN4RFFVRkRMRWxCUVVrN1dVRkRkRUlzWVVGQllTeEZRVUZGTEV0QlFVczdXVUZEY0VJc1lVRkJZU3hGUVVGRkxFdEJRVXM3V1VGRGNFSXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN6dFpRVU4yUWl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTzFsQlEzaENMR0ZCUVdFc1JVRkJSU3hEUVVGRE8xbEJRMmhDTEdGQlFXRXNSVUZCUlN4RlFVRkZPMWxCUTJwQ0xFdEJRVXNzUlVGQlJTeFpRVUZaTzFOQlEzQkNMRU5CUVVNc1EwRkJlVUlzUTBGQlF6dFJRVVUxUWl4TlFVRk5MRTFCUVUwc1IwRkJTU3hGUVVGRkxFTkJRVU1zVDBGQlR5eEZRVUZWTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkRMME1zVFVGQlRTeFJRVUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzVFVGQlRTeEZRVUZGTEZWQlFWVXNSVUZCUlN4UlFVRlJMRVZCUVVVc1QwRkJUeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlEyNUdMRTFCUVUwc1VVRkJVU3hIUVVGUkxFVkJRVVVzUTBGQlF6dFJRVVY2UWl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3V1VGRGJrUXNUVUZCVFN4aFFVRmhMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeExRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETVVjc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eGhRVUZoTzJkQ1FVTjRRaXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEYkVnc1JVRkJSU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03V1VGRE0wUXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMWxCUXpGRUxGZEJRVmNzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTXpRaXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZJTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGJFUXNTVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHVkJRV1VzUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlR0blFrRkRNME1zVFVGQlRTeEpRVUZKTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMmRDUVVNNVJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF6dG5Ra0ZETDBJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzI5Q1FVTm9RaXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRoUVVNNVFqdFpRVU5FTEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUXpOQ0xFbEJRVWtzUTBGQlF5eERRVUZETEZGQlFWRTdiMEpCUTFvc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkVMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMGdzVjBGQlZ5eERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJVZ3NUVUZCVFN4WFFVRlhMRWRCUVVjc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVGRGTEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJUdFpRVU55UXl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRMlFzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGU0N4TlFVRk5MR05CUVdNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxGTkJRVk1zUlVGQlJTeEhRVUZITEVWQlFVVTdXVUZETTBVc1RVRkJUU3haUVVGWkxFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkRMRXRCUVVzc1JVRkJSU3hwUWtGQmFVSXNSVUZCUXl4RFFVRkRPMmxDUVVOMlJDeEhRVUZITEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJRenRwUWtGRGNrSXNTVUZCU1N4RlFVRkZMRU5CUVVNN1dVRkRWaXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNSMEZCUnl4bFFVRmxMRU5CUVVNN1VVRkRla01zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4alFVRmpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFZRVUZWTEVOQlFVTTdVVUZETTBNc1kwRkJZeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRPMUZCUTJ4RExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOd1F5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dFJRVVV2UWl4SlFVRkpMRXRCUVhGQ0xFTkJRVU03VVVGRE1VSXNUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEZkQlFWY3NSVUZCUlN4VlFVRlZMRXRCUVdsQ08xbEJRemxFTEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOd1FpeExRVUZMTEVkQlFVY3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJRenRuUWtGRGVFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc2FVSkJRV2xDTEVOQlFVTXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdaMEpCUXpsRUxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4bFFVRmxMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3YjBKQlEzSkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPM2RDUVVOMFFpeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSE96UkNRVU40UWl4UlFVRlJMRVZCUVVVc1VVRkJVVHMwUWtGRGJFSXNTVUZCU1N4RlFVRkZMRWxCUVVrN05FSkJRMVlzUlVGQlJTeEZRVUZGTEVWQlFVVTdORUpCUTA0c1RVRkJUU3hGUVVGRkxFMUJRVTA3TkVKQlEyUXNVVUZCVVN4RlFVRkZMRlZCUVZVN05FSkJRM0JDTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUenMwUWtGRGFFSXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUE8zbENRVU5xUWl4RFFVRkJPM2RDUVVORUxHVkJRV1VzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8zRkNRVU53UXp0dlFrRkRSQ3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzJsQ1FVTnNSVHRaUVVOSUxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTllMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGZEJRVmNzUlVGQlJTeFZRVUZUTEV0QlFXbENPMWxCUXpkRUxFMUJRVTBzU1VGQlNTeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJRemxFTEVsQlFVa3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhsUVVGbExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdaMEpCUTNKRExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlR0dlFrRkRha0lzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03YjBKQlF5OUNMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0dlFrRkZka1FzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJPM2RDUVVOb1FpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dHZRa0ZGTjBJc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSVHQzUWtGRE0wSXNTVUZCU1N4RFFVRkRMRU5CUVVNc1VVRkJVVHMwUWtGRFdpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRM0pFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08zRkNRVUZOTzI5Q1FVTk1MRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEV0QlFVc3NTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSVHQzUWtGRE9VTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXp0M1FrRkRla01zUlVGQlJTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzNkQ1FVTm9ReXhGUVVGRkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8zZENRVU5xUkN4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0eFFrRkRha1E3YVVKQlEwWTdZVUZEUmp0UlFVTklMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4elFrRkJjMElzUTBGQlF6dGhRVU12UWl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU5tTEUxQlFVMHNTMEZCU3l4SFFVRkhMRmRCUVZjc1EwRkJReXhGUVVGRkxFVkJRekZDTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSU3hsUVVGbExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdXVUZETlVVc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlExSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1owSkJRekZFTEZWQlFWVXNRMEZCUXl4SFFVRkZMRVZCUVVVN2IwSkJRMklzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRMMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOc1F5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRMnhETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NSVUZEZGtNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZKTEV0QlFVc3NSVUZEYkVNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NSVUZEYWtNc1JVRkJSU3hIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMmRDUVVOMlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRMUlzU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0aFFVTmtPMUZCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlRDeEZRVUZGTEVOQlFVTXNWMEZCVnl4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEZGQlFWRXNSVUZCUlN4clFrRkJhMElzUTBGQlF5eERRVUZETzFGQlEyaEZMRTlCUVU4c1JVRkJSU3hEUVVGRE8wbEJRMW9zUTBGQlF6dERRVUZCTzBGQlJVUXNVMEZCVXl4cFFrRkJhVUlzUTBGQlF5eExRVUZWTEVWQlFVVXNUVUZCVnl4RlFVRkZMRXRCUVdNN1NVRkRhRVVzVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRMSEZDUVVGeFFpeEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRM0JETEUxQlFVMHNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXp0SlFVTnVReXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NSVUZCUlR0UlFVTjRRaXhOUVVGTkxFbEJRVWtzUjBGRFVpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRka2NzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXp0WlFVTldMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMlk3U1VGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSQ3hUUVVGVExGZEJRVmNzUTBGQlF5eEZRVUYzUWl4RlFVTXpReXhMUVVGaExFVkJRVVVzUzBGQllTeEZRVUZGTEZGQlFYZENMRVZCUVVVc1VVRkJhMElzUlVGQlJTeGxRVUYxUWl4RlFVRkZMRTlCUVdVN1NVRkRjRWdzVFVGQlRTeExRVUZMTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJRenRKUVVNM1FpeE5RVUZOTEUxQlFVMHNSMEZCU1N4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVFNFFpeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGxCUTI1RkxFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVFMlFpeERRVUZETzBsQlEyaEZMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFRRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU01UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVTBGQlZTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE9VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3VVVGRGNrTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1JVRkJSU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKR0xFMUJRVTBzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51Uml4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEZUVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNCRExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NUVUZCVFN4RlFVRkZMRU5CUVVNN1VVRkRNVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF6dFJRVU14UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUXl4bFFVRmxMRU5CUVVNN1VVRkROMFlzUjBGQlJ5eERRVUZETEZkQlFWY3NSMEZCUnl4UlFVRlJMRXRCUVVzc1NVRkJTU3hQUVVGUExFZEJRVWNzUTBGQlF6dFJRVU01UXl4SFFVRkhMRU5CUVVNc1UwRkJVeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzWkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnNRanRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRk5CUVZNc1YwRkJWeXhEUVVOc1FpeEZRVUZaTEVWQlExb3NSVUZCV1N4RlFVTmFMRWRCUVdNc1JVRkRaQ3hWUVVGeFFpeEZRVU55UWl4UlFVRnJRaXhGUVVOc1FpeFBRVUZsTEVWQlEyWXNTMEZCWVR0SlFVTmlMRTFCUVUwc1MwRkJTeXhIUVVGWkxFVkJRVVVzUTBGQlF6dEpRVU14UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFJRVU5zUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYmtJc1RVRkJUU3hKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1Q0xFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTTdTMEZEZUVVN1NVRkRSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYkVRc1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzSkdMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU55Uml4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eFZRVUZWTEVOQlFVTTdVMEZEY0VNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlV5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjBSeXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJReTlFTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRja1VzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRGJFUXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTTdTVUZEYkVRc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVVXNRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wbEJRM2hETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0SlFVTjRReXhQUVVGUExFVkJRVU1zUzBGQlN5eEZRVUZGTEU5QlFVOHNSVUZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFXZENMRzlDUVVGdlFpeERRVU4wUXl4SFFVRlhMRVZCUTFnc1RVRkJhVUlzUlVGRGFrSXNTMEZCYlVJc1JVRkRia0lzVFVGQmJVSXNSVUZEYmtJc1QwRkJiVVU3TzFGQlIzSkZMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEycERMRTFCUVUwc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRNVUlzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTnFReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4TlFVRk5MRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUlN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRkxFTkJRVU03VTBGRGRFUTdVVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBOQlFVRTdRVUZGUkN4TlFVRk5MRlZCUVZVc2FVTkJRV2xETEVOQlFVTXNSMEZCVnl4RlFVRkZMRk5CUVdsQ0xFVkJRVVVzVFVGQmJVSTdTVUZGYmtjc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYUVNc1RVRkJUU3hoUVVGaExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEzcENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU01UWl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExIbENRVUY1UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRha1VzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1dVRkJXU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJqdEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNXBiWEJ2Y25RZ0tpQmhjeUIxYVNCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdmRXa25PMXh1YVcxd2IzSjBJSHNnVFdGMGNtbDRJSDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUhzZ1oyVjBVMmx0YVd4aGNtbDBlVVp5YjIxRWFYTjBZVzVqWlNCOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzTnBiV2xzWVhKcGRIa3RiV1YwY21samN5YzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1V4cGJtVWdlMXh1SUNCcFpEb2diblZ0WW1WeU8xeHVJQ0J0YjJ4ek9pQnVkVzFpWlhKYlhUdGNiaUFnYzJWc1pXTjBaV1E2SUdKdmIyeGxZVzQ3WEc0Z0lHRTZJRzUxYldKbGNsdGRPeUF2THlCYmVDd2dlVjFjYmlBZ1lqb2diblZ0WW1WeVcxMDdJQzh2SUZ0NExDQjVYVnh1ZlZ4dVhHNXBiblJsY21aaFkyVWdTVkpsYm1SbGNtVmtUR2x1WlhNZ2UxeHVJQ0JzYVc1bGN6b2dTVXhwYm1WYlhUdGNiaUFnYkdsdVpYTkVaam9nUkVjdVJHRjBZVVp5WVcxbE8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsVFpYRjFaVzVqWlZOd1lXTmxVR0Z5WVcxeklIdGNiaUFnSUNCelpYRkRiMnc2SUVSSExrTnZiSFZ0Yml4Y2JpQWdJQ0J0WlhSb2IyUk9ZVzFsT2lCemRISnBibWNzWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVTFsZEhKcFl6b2djM1J5YVc1bkxGeHVJQ0FnSUdWdFltVmtRWGhsYzA1aGJXVnpPaUJ6ZEhKcGJtZGJYU3hjYmlBZ0lDQnZjSFJwYjI1elB6b2dZVzU1WEc1OVhHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdTVk5sY1hWbGJtTmxVM0JoWTJWU1pYTjFiSFFnZTF4dUlDQWdJR1JwYzNSaGJtTmxPaUJOWVhSeWFYZzdYRzRnSUNBZ1kyOXZjbVJwYm1GMFpYTTZJRVJITGtOdmJIVnRia3hwYzNRN1hHNGdJSDFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlJISmhkMVJ2YjJ4MGFYQlFZWEpoYlhNZ2UxeHVJQ0IwYjI5c2RHbHdjem9nWVc1NUxGeHVJQ0JzYVc1bE9pQkpUR2x1WlN4Y2JpQWdaR1k2SUVSSExrUmhkR0ZHY21GdFpTeGNiaUFnYzJWeFEyOXNPaUJFUnk1RGIyeDFiVzRzWEc0Z0lHRmpkR2wyYVhSNU9pQkVSeTVEYjJ4MWJXNHNYRzRnSUhnNklHNTFiV0psY2l4Y2JpQWdlVG9nYm5WdFltVnlYRzU5WEc1Y2JteGxkQ0I2YjI5dElEMGdabUZzYzJVN1hHNWNiaTh2SUZObFlYSmphR1Z6SUdadmNpQmhZM1JwZG1sMGVTQmpiR2xtWm5NZ2FXNGdZU0JqYUdWdGFXTmhiQ0JrWVhSaGMyVjBJR0o1SUhObGJHVmpkR1ZrSUdOMWRHOW1abHh1Wlhod2IzSjBJR0Z6ZVc1aklHWjFibU4wYVc5dUlHZGxkRUZqZEdsMmFYUjVRMnhwWm1aektGeHVJQ0FnSUdSbU9pQkVSeTVFWVhSaFJuSmhiV1VzSUZ4dUlDQWdJSE5sY1VOdmJEb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ0lDQmhlR1Z6VG1GdFpYTTZJSE4wY21sdVoxdGRMRnh1SUNBZ0lITmpZWFIwWlhKVWFYUnNaVG9nYzNSeWFXNW5MRnh1SUNBZ0lHRmpkR2wyYVhScFpYTTZJRVJITGtOdmJIVnRiaXdnWEc0Z0lDQWdjMmx0YVd4aGNtbDBlVG9nYm5WdFltVnlMRnh1SUNBZ0lITnBiV2xzWVhKcGRIbE5aWFJ5YVdNNklITjBjbWx1Wnl3Z1hHNGdJQ0FnYldWMGFHOWtUbUZ0WlRvZ2MzUnlhVzVuTENCY2JpQWdJQ0J6WlcxVWVYQmxPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2RXNXBkSE02SUhOMGNtbHVaeXhjYmlBZ0lDQnpaWEZUY0dGalpVWjFibU02SUNod1lYSmhiWE02SUVsVFpYRjFaVzVqWlZOd1lXTmxVR0Z5WVcxektTQTlQaUJRY205dGFYTmxQRWxUWlhGMVpXNWpaVk53WVdObFVtVnpkV3gwUGl4Y2JpQWdJQ0J6YVcxR2RXNWpPaUFvWTI5c09pQkVSeTVEYjJ4MWJXNHNJRzF2YkRvZ2MzUnlhVzVuS1NBOVBpQlFjbTl0YVhObFBFUkhMa052YkhWdGJpQjhJRzUxYkd3K0xGeHVJQ0FnSUhSdmIyeDBhWEJFY21GM1JuVnVZem9nS0hCaGNtRnRjem9nU1VSeVlYZFViMjlzZEdsd1VHRnlZVzF6S1NBOVBpQjJiMmxrTEZ4dUlDQWdJRzl3ZEdsdmJuTS9PaUJoYm5rcElEb2dVSEp2YldselpUeEVSeTVXYVdWM1pYSStJSHRjYmlBZ1kyOXVjM1FnWVhWMGIyMWhkR2xqVTJsdGFXeGhjbWwwZVV4cGJXbDBJRDBnWm1Gc2MyVTdYRzRnSUdOdmJuTjBJRTFKVGw5VFNVMUpURUZTU1ZSWklEMGdPREE3WEc1Y2JpQWdZMjl1YzNRZ2FXNXBkR2xoYkZOcGJXbHNZWEpwZEhsTWFXMXBkQ0E5SUdGMWRHOXRZWFJwWTFOcGJXbHNZWEpwZEhsTWFXMXBkQ0EvSUUxSlRsOVRTVTFKVEVGU1NWUlpJRG9nYzJsdGFXeGhjbWwwZVNBdklERXdNRHRjYmx4dUlDQmpiMjV6ZENCN1pHbHpkR0Z1WTJVc0lHTnZiM0prYVc1aGRHVnpmU0E5SUdGM1lXbDBJSE5sY1ZOd1lXTmxSblZ1WXloN1hHNGdJQ0FnYzJWeFEyOXNPaUJ6WlhGRGIyd3NYRzRnSUNBZ2JXVjBhRzlrVG1GdFpUb2diV1YwYUc5a1RtRnRaU3hjYmlBZ0lDQnphVzFwYkdGeWFYUjVUV1YwY21sak9pQnphVzFwYkdGeWFYUjVUV1YwY21sakxGeHVJQ0FnSUdWdFltVmtRWGhsYzA1aGJXVnpPaUJoZUdWelRtRnRaWE1zWEc0Z0lDQWdiM0IwYVc5dWN6b2diM0IwYVc5dWMxeHVJQ0I5S1R0Y2JseHVJQ0JtYjNJZ0tHTnZibk4wSUdOdmJDQnZaaUJqYjI5eVpHbHVZWFJsY3lsY2JpQWdJQ0JrWmk1amIyeDFiVzV6TG1Ga1pDaGpiMndwTzF4dVhHNGdJR052Ym5OMElHUm1VMlZ4SUQwZ1JFY3VSR0YwWVVaeVlXMWxMbVp5YjIxRGIyeDFiVzV6S0Z0RVJ5NURiMngxYlc0dVpuSnZiVXhwYzNRb0ozTjBjbWx1Wnljc0lDZHpaWEVuTENCelpYRkRiMnd1ZEc5TWFYTjBLQ2twWFNrN1hHNGdJR052Ym5OMElHUnBiU0E5SUhObGNVTnZiQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJSE5wYlVGeWNqb2dSRWN1UTI5c2RXMXVXMTBnUFNCQmNuSmhlU2hrYVcwZ0xTQXhLVHRjYmx4dUlDQnBaaUFvSVdScGMzUmhibU5sS1Z4dUlDQWdJR0YzWVdsMElHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRLR1JwYlN3Z2MyVnhRMjlzTENCa1psTmxjU3dnYzJsdFFYSnlMQ0J6YVcxR2RXNWpLVHRjYmlBZ1pXeHpaVnh1SUNBZ0lHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRSbkp2YlVScGMzUmhibU5sY3loa2FXMHNJR1JwYzNSaGJtTmxMQ0J6YVcxQmNuSXBPMXh1WEc0Z0lHTnZibk4wSUc5d2RGTnBiV2xzWVhKcGRIbE1hVzFwZENBOUlHbHVhWFJwWVd4VGFXMXBiR0Z5YVhSNVRHbHRhWFE3WEc1Y2JpQWdZMjl1YzNRZ2MybHRWbUZzY3pvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmlBZ1kyOXVjM1FnYzJGc2FWWmhiSE02SUc1MWJXSmxjbHRkSUQwZ1cxMDdYRzRnSUdOdmJuTjBJRzR4T2lCdWRXMWlaWEpiWFNBOUlGdGRPMXh1SUNCamIyNXpkQ0J1TWpvZ2JuVnRZbVZ5VzEwZ1BTQmJYVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQWhQU0JrYVcwZ0xTQXhPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdNRHNnYWlBaFBTQmthVzBnTFNBeElDMGdhVHNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCemFXMDZJRzUxYldKbGNpQTlJSE5wYlVGeWNsdHBYUzVuWlhRb2FpazdYRzVjYmlBZ0lDQWdJR2xtSUNoemFXMGdQajBnYjNCMFUybHRhV3hoY21sMGVVeHBiV2wwS1NCN1hHNGdJQ0FnSUNBZ0lHNHhMbkIxYzJnb2FTazdYRzRnSUNBZ0lDQWdJRzR5TG5CMWMyZ29hU0FySUdvZ0t5QXhLVHRjYmlBZ0lDQWdJQ0FnYzJsdFZtRnNjeTV3ZFhOb0tITnBiU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1JwWm1ZZ1BTQk5ZWFJvTG1GaWN5aGhZM1JwZG1sMGFXVnpMbWRsZENocEtTQXRJR0ZqZEdsMmFYUnBaWE11WjJWMEtHa2dLeUJxSUNzZ01Ta3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2MybHRJQ0U5SURFcFhHNGdJQ0FnSUNBZ0lDQWdjMkZzYVZaaGJITXVjSFZ6YUNoa2FXWm1JQzhnS0RFZ0xTQnphVzBwS1R0Y2JpQWdJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0FnSUhOaGJHbFdZV3h6TG5CMWMyZ29TVzVtYVc1cGRIa3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR052Ym5OMElITmhiR2xXWVd4elYybDBhRzkxZEVsdVptbHVhWFI1SUQwZ2MyRnNhVlpoYkhNdVptbHNkR1Z5S0dsMElEMCtJR2wwSUNFOVBTQkpibVpwYm1sMGVTazdYRzRnSUdOdmJuTjBJSE5oYkdsTmFXNGdQU0JOWVhSb0xtMXBiaWd1TGk1ellXeHBWbUZzYzFkcGRHaHZkWFJKYm1acGJtbDBlU2s3WEc0Z0lHTnZibk4wSUhOaGJHbE5ZWGdnUFNCTllYUm9MbTFoZUNndUxpNXpZV3hwVm1Gc2MxZHBkR2h2ZFhSSmJtWnBibWwwZVNrN1hHNGdJR052Ym5OMElITmhiR2xQY0dGamFYUjVRMjlsWmlBOUlEQXVPQzhvYzJGc2FVMWhlQ0F0SUhOaGJHbE5hVzRwTzF4dVhHNWNiaUFnWTI5dWMzUWdibVZwWjJoaWIzVnljME52ZFc1MElEMGdibVYzSUVGeWNtRjVLR1JwYlNrdVptbHNiQ2d3S1R0Y2JpQWdZMjl1YzNRZ2MybHRhV3hoY21sMGVVTnZkVzUwSUQwZ2JtVjNJRUZ5Y21GNUtHUnBiU2t1Wm1sc2JDZ3dLVHRjYmlBZ1kyOXVjM1FnYzJGc2FVTnZkVzUwSUQwZ2JtVjNJRUZ5Y21GNUtHUnBiU2t1Wm1sc2JDZ3dLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQWhQU0J1TVM1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lHNWxhV2RvWW05MWNuTkRiM1Z1ZEZ0dU1WdHBYVjBnS3owZ01UdGNiaUFnSUNCdVpXbG5hR0p2ZFhKelEyOTFiblJiYmpKYmFWMWRJQ3M5SURFN1hHNGdJQ0FnYzJsdGFXeGhjbWwwZVVOdmRXNTBXMjR4VzJsZFhTQXJQU0J6YVcxV1lXeHpXMmxkTzF4dUlDQWdJSE5wYldsc1lYSnBkSGxEYjNWdWRGdHVNbHRwWFYwZ0t6MGdjMmx0Vm1Gc2MxdHBYVHRjYmlBZ0lDQnBaaUFvYzJGc2FWWmhiSE5iYVYwZ0lUMGdTVzVtYVc1cGRIa3BJSHRjYmlBZ0lDQWdJR2xtSUNoaFkzUnBkbWwwYVdWekxtZGxkQ2h1TVZ0cFhTa2dQaUJoWTNScGRtbDBhV1Z6TG1kbGRDaHVNbHRwWFNrcFhHNGdJQ0FnSUNBZ0lITmhiR2xEYjNWdWRGdHVNVnRwWFYwZ0t6MGdjMkZzYVZaaGJITmJhVjA3WEc0Z0lDQWdJQ0JsYkhObFhHNGdJQ0FnSUNBZ0lITmhiR2xEYjNWdWRGdHVNbHRwWFYwZ0t6MGdjMkZzYVZaaGJITmJhVjA3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjMkZzYVRvZ1JFY3VRMjlzZFcxdUlEMGdSRWN1UTI5c2RXMXVMbVp5YjIxTWFYTjBLQ2RrYjNWaWJHVW5MQ0JnYzJGc2FWOGtlMkY0WlhOT1lXMWxjMXN3WFM1emRXSnpkSEpwYm1jb1lYaGxjMDVoYldWeld6QmRMbXhoYzNSSmJtUmxlRTltS0NkZkp5a3BmV0FzSUhOaGJHbERiM1Z1ZENrN1hHNWNiaUFnWkdZdVkyOXNkVzF1Y3k1aFpHUW9jMkZzYVNrN1hHNWNiaUFnWTI5dWMzUWdkbWxsZHlBOUlHZHliMnN1YzJobGJHd3VaMlYwVkdGaWJHVldhV1YzS0dSbUxtNWhiV1VwTzF4dUlDQmpiMjV6ZENCemNDQTlJSFpwWlhjdVlXUmtWbWxsZDJWeUtFUkhMbFpwWlhkbGNpNXpZMkYwZEdWeVVHeHZkQ2hrWml3Z2UxeHVJQ0FnSUhoRGIyeDFiVzVPWVcxbE9pQmhlR1Z6VG1GdFpYTmJNRjBzWEc0Z0lDQWdlVU52YkhWdGJrNWhiV1U2SUdGNFpYTk9ZVzFsYzFzeFhTeGNiaUFnSUNCemFYcGxPaUJ6WVd4cExtNWhiV1VzWEc0Z0lDQWdZMjlzYjNJNklHRmpkR2wyYVhScFpYTXVibUZ0WlN4Y2JpQWdJQ0J6YUc5M1dGTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J6YUc5M1dWTmxiR1ZqZEc5eU9pQm1ZV3h6WlN4Y2JpQWdJQ0J6YUc5M1UybDZaVk5sYkdWamRHOXlPaUJtWVd4elpTeGNiaUFnSUNCemFHOTNRMjlzYjNKVFpXeGxZM1J2Y2pvZ1ptRnNjMlVzWEc0Z0lDQWdiV0Z5YTJWeVRXbHVVMmw2WlRvZ05TeGNiaUFnSUNCdFlYSnJaWEpOWVhoVGFYcGxPaUF5TlN4Y2JpQWdJQ0IwYVhSc1pUb2djMk5oZEhSbGNsUnBkR3hsWEc0Z0lIMHBLU0JoY3lCRVJ5NVRZMkYwZEdWeVVHeHZkRlpwWlhkbGNqdGNibHh1SUNCamIyNXpkQ0JqWVc1MllYTWdQU0FvYzNBdVoyVjBTVzVtYnlncElHRnpJR0Z1ZVNsYkoyTmhiblpoY3lkZE8xeHVJQ0JqYjI1emRDQnNhVzVsYzFKbGN5QTlJR055WldGMFpVeHBibVZ6S0c0eExDQnVNaXdnYzJWeFEyOXNMQ0JoWTNScGRtbDBhV1Z6TENCellXeHBWbUZzY3l3Z2MyVnRWSGx3WlN3Z2RXNXBkSE1wTzF4dUlDQmpiMjV6ZENCMGIyOXNkR2x3Y3pvZ1lXNTVJRDBnZTMwN1hHNWNiaUFnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV2YmtOMWNuSmxiblJEWld4c1EyaGhibWRsWkM1emRXSnpZM0pwWW1Vb0tDa2dQVDRnZTF4dUlDQWdJR052Ym5OMElHTjFjbkpsYm5STmIyeEpaSGdnUFNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJEYjJ3Z0ppWWdiR2x1WlhOU1pYTXViR2x1WlhORVppNWpkWEp5Wlc1MFEyOXNMbTVoYldVZ1BUMDlJQ2N5WDNObGNTY2dQeUF4SURvZ01EdGNiaUFnSUNCemNDNWtZWFJoUm5KaGJXVXVZM1Z5Y21WdWRGSnZkMGxrZUNBOVhHNGdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIZ2dJVDA5SUMweElEOGdiR2x1WlhOU1pYTXViR2x1WlhOYmJHbHVaWE5TWlhNdWJHbHVaWE5FWmk1amRYSnlaVzUwVW05M1NXUjRYUzV0YjJ4elcyTjFjbkpsYm5STmIyeEpaSGhkSURvZ0xURTdYRzRnSUNBZ2MzQXVaR0YwWVVaeVlXMWxMbk5sYkdWamRHbHZiaTV6WlhRb01Dd2dJV3hwYm1WelVtVnpMbXhwYm1Weld6QmRMbk5sYkdWamRHVmtLVHRjYmlBZ0lDQnpjQzVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG5ObGRDZ3dMQ0JzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdiR2x1WlhORVprZHlhV1F1YVc1MllXeHBaR0YwWlNncE8xeHVJQ0I5S1R0Y2JseHVJQ0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbTl1VTJWc1pXTjBhVzl1UTJoaGJtZGxaQzV6ZFdKelkzSnBZbVVvS0Y4cElEMCtJSHRjYmlBZ0lDQnBaaUFvYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV0YjNWelpVOTJaWEpTYjNkSlpIZ2dJVDA5SUMweEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnYkdsdVpYTlNaWE11YkdsdVpYTmJiR2x1WlhOU1pYTXViR2x1WlhORVppNXRiM1Z6WlU5MlpYSlNiM2RKWkhoZE8xeHVJQ0FnSUNBZ2JHbHVaUzV6Wld4bFkzUmxaQ0E5SUNGc2FXNWxMbk5sYkdWamRHVmtPMXh1SUNBZ0lDQWdhV1lnS0NGc2FXNWxMbk5sYkdWamRHVmtLVnh1SUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBRV3hzS0daaGJITmxLVHRjYmlBZ0lDQjlYRzRnSUNBZ2JHbHVaWE5TWlhNdWJHbHVaWE11Wm05eVJXRmphQ2dvYkNrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0d3dWMyVnNaV04wWldRcFhHNGdJQ0FnSUNBZ0lHd3ViVzlzY3k1bWIzSkZZV05vS0NodEtTQTlQaUJrWmk1elpXeGxZM1JwYjI0dWMyVjBLRzBzSUhSeWRXVXBLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnNhVzVsYzBSbVIzSnBaQzVwYm5aaGJHbGtZWFJsS0NrN1hHNGdJSDBwTzF4dVhHNGdJR052Ym5OMElHeHBibVZ6UkdaSGNtbGtJRDBnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV3Ykc5MExtZHlhV1FvS1M1emIzSjBLRnNuWVdOMFgyUnBabVluWFN3Z1cyWmhiSE5sWFNrN1hHNWNiaUFnYkdsdVpYTkVaa2R5YVdRdWIyNURaV3hzUTJ4cFkyc3VjM1ZpYzJOeWFXSmxLQ2dwSUQwK0lIdGNiaUFnSUNCNmIyOXRJRDBnZEhKMVpUdGNiaUFnZlNrN1hHNWNiaUFnWTI5dWMzUWdiR2x6ZEVOc2FXWm1jMHhwYm1zZ1BTQjFhUzVpZFhSMGIyNG9ZQ1I3YkdsdVpYTlNaWE11YkdsdVpYTkVaaTV5YjNkRGIzVnVkSDBnWTJ4cFptWnpZQ3dnS0NrZ1BUNGdlMXh1SUNBZ0lHTnZibk4wSUdOc2FXWm1jMFJwWVd4dlp5QTlJSFZwTG1ScFlXeHZaeWg3ZEdsMGJHVTZJQ2RCWTNScGRtbDBlU0JqYkdsbVpuTW5mU2xjYmlBZ0lDQWdJQzVoWkdRb2JHbHVaWE5FWmtkeWFXUXVjbTl2ZENsY2JpQWdJQ0FnSUM1emFHOTNLQ2s3WEc0Z0lDQWdZMnhwWm1aelJHbGhiRzluTG5KdmIzUXVhV1FnUFNBblkyeHBabVp6WDJScFlXeHZaeWM3WEc0Z0lIMHBPMXh1SUNCc2FYTjBRMnhwWm1aelRHbHVheTV6ZEhsc1pTNXdiM05wZEdsdmJpQTlJQ2RoWW5OdmJIVjBaU2M3WEc0Z0lHeHBjM1JEYkdsbVpuTk1hVzVyTG5OMGVXeGxMblJ2Y0NBOUlDY3hNSEI0Snp0Y2JpQWdiR2x6ZEVOc2FXWm1jMHhwYm1zdWMzUjViR1V1Y21sbmFIUWdQU0FuTVRCd2VDYzdYRzRnSUhOd0xuSnZiM1F1WVhCd1pXNWtLR3hwYzNSRGJHbG1abk5NYVc1cktUdGNibHh1SUNCc1pYUWdkR2x0WlhJNklFNXZaR1ZLVXk1VWFXMWxiM1YwTzF4dUlDQmpZVzUyWVhNdVlXUmtSWFpsYm5STWFYTjBaVzVsY2lnbmJXOTFjMlZ0YjNabEp5d2dablZ1WTNScGIyNGdLR1YyWlc1ME9pQk5iM1Z6WlVWMlpXNTBLU0I3WEc0Z0lDQWdZMnhsWVhKVWFXMWxiM1YwS0hScGJXVnlLVHRjYmlBZ0lDQjBhVzFsY2lBOUlHZHNiMkpoYkM1elpYUlVhVzFsYjNWMEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHeHBibVVnUFNCamFHVmphME4xY25OdmNrOXVUR2x1WlNobGRtVnVkQ3dnWTJGdWRtRnpMQ0JzYVc1bGMxSmxjeTVzYVc1bGN5azdYRzRnSUNBZ0lDQnBaaUFvYkdsdVpTQW1KaUJrWmk1dGIzVnpaVTkyWlhKU2IzZEpaSGdnUFQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkRzl2YkhScGNITmJiR2x1WlM1cFpGMHBJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrY21GM1ZHOXZiSFJwY0ZCaGNtRnRjeUE5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJ2YjJ4MGFYQnpPaUIwYjI5c2RHbHdjeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHeHBibVU2SUd4cGJtVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCa1pqb2daR1lzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnpaWEZEYjJ3NklITmxjVU52YkN4Y2JpQWdJQ0FnSUNBZ0lDQWdJR0ZqZEdsMmFYUjVPaUJoWTNScGRtbDBhV1Z6TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlRG9nWlhabGJuUXVZMnhwWlc1MFdDeGNiaUFnSUNBZ0lDQWdJQ0FnSUhrNklHVjJaVzUwTG1Oc2FXVnVkRmxjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdkRzl2YkhScGNFUnlZWGRHZFc1aktHUnlZWGRVYjI5c2RHbHdVR0Z5WVcxektUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0IxYVM1MGIyOXNkR2x3TG5Ob2IzY29kRzl2YkhScGNITmJiR2x1WlM1cFpGMHNJR1YyWlc1MExtTnNhV1Z1ZEZnc0lHVjJaVzUwTG1Oc2FXVnVkRmtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzSURFd01EQXBPMXh1SUNCOUtUdGNibHh1SUNCallXNTJZWE11WVdSa1JYWmxiblJNYVhOMFpXNWxjaWduYlc5MWMyVmtiM2R1Snl3Z1puVnVZM1JwYjI0b1pYWmxiblE2SUUxdmRYTmxSWFpsYm5RcElIdGNiaUFnSUNCamIyNXpkQ0JzYVc1bElEMGdZMmhsWTJ0RGRYSnpiM0pQYmt4cGJtVW9aWFpsYm5Rc0lHTmhiblpoY3l3Z2JHbHVaWE5TWlhNdWJHbHVaWE1wTzF4dUlDQWdJR2xtSUNoc2FXNWxJQ1ltSUdSbUxtMXZkWE5sVDNabGNsSnZkMGxrZUNBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUdsbUlDaGxkbVZ1ZEM1amRISnNTMlY1S1NCN1hHNGdJQ0FnSUNBZ0lHeHBibVV1YzJWc1pXTjBaV1FnUFNBaGJHbHVaUzV6Wld4bFkzUmxaRHRjYmlBZ0lDQWdJQ0FnYkdsdVpYTlNaWE11YkdsdVpYTkVaaTV6Wld4bFkzUnBiMjR1YzJWMEtHeHBibVV1YVdRc0lHeHBibVV1YzJWc1pXTjBaV1FwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2doYkdsdVpTNXpaV3hsWTNSbFpDbGNiaUFnSUNBZ0lDQWdJQ0JrWmk1elpXeGxZM1JwYjI0dWMyVjBRV3hzS0daaGJITmxLVHRjYmx4dUlDQWdJQ0FnSUNCc2FXNWxjMUpsY3k1c2FXNWxjeTVtYjNKRllXTm9LQ2hzS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnYVdZZ0tHd3VjMlZzWldOMFpXUXBYRzRnSUNBZ0lDQWdJQ0FnSUNCc0xtMXZiSE11Wm05eVJXRmphQ2dvYlNrZ1BUNGdaR1l1YzJWc1pXTjBhVzl1TG5ObGRDaHRMQ0IwY25WbEtTazdYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBibVZ6VW1WekxteHBibVZ6UkdZdVkzVnljbVZ1ZEZKdmQwbGtlQ0FoUFQwZ2JHbHVaUzVwWkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR3hwYm1WelVtVnpMbXhwYm1WelJHWXVZM1Z5Y21WdWRGSnZkMGxrZUNBOUlHeHBibVV1YVdRN1hHNGdJQ0FnSUNBZ0lDQWdaR1l1WTNWeWNtVnVkRkp2ZDBsa2VDQTlJR3hwYm1VdWJXOXNjMXN3WFR0Y2JpQWdJQ0FnSUNBZ0lDQmtaaTV6Wld4bFkzUnBiMjR1YzJWMEtEQXNJQ0ZzYVc1bGMxSmxjeTVzYVc1bGMxc3dYUzV6Wld4bFkzUmxaQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1pHWXVjMlZzWldOMGFXOXVMbk5sZENnd0xDQnNhVzVsYzFKbGN5NXNhVzVsYzFzd1hTNXpaV3hsWTNSbFpDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwcE8xeHVYRzRnSUhOd0xtOXVSWFpsYm5Rb0oyUTBMV0psWm05eVpTMWtjbUYzTFhOalpXNWxKeWxjYmlBZ0lDQXVjM1ZpYzJOeWFXSmxLQ2hmS1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc2FXNWxjeUE5SUhKbGJtUmxja3hwYm1WektITndMRnh1SUNBZ0lDQWdJQ0JoZUdWelRtRnRaWE5iTUYwc0lHRjRaWE5PWVcxbGMxc3hYU3dnYkdsdVpYTlNaWE1zSUhOaGJHbFdZV3h6TENCellXeHBUM0JoWTJsMGVVTnZaV1lzSUhOaGJHbE5hVzRwTzF4dUlDQWdJQ0FnYVdZZ0tIcHZiMjBwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWTNWeWNtVnVkRXhwYm1VZ1BTQnNhVzVsYzF0c2FXNWxjMUpsY3k1c2FXNWxjMFJtTG1OMWNuSmxiblJTYjNkSlpIaGRPMXh1SUNBZ0lDQWdJQ0J6WlhSVWFXMWxiM1YwS0NncFBUNGdlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGd4SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1GMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNRjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhreElEMGdjM0F1WkdGMFlVWnlZVzFsTG1kbGRDaGhlR1Z6VG1GdFpYTmJNVjBzSUdOMWNuSmxiblJNYVc1bExtMXZiSE5iTUYwcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIZ3lJRDBnYzNBdVpHRjBZVVp5WVcxbExtZGxkQ2hoZUdWelRtRnRaWE5iTUYwc0lHTjFjbkpsYm5STWFXNWxMbTF2YkhOYk1WMHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJSGt5SUQwZ2MzQXVaR0YwWVVaeVlXMWxMbWRsZENoaGVHVnpUbUZ0WlhOYk1WMHNJR04xY25KbGJuUk1hVzVsTG0xdmJITmJNVjBwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUhoRWFXWm1JRDBnVFdGMGFDNWhZbk1vZURFZ0xTQjRNaWtxTlR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCNVJHbG1aaUE5SUUxaGRHZ3VZV0p6S0hreElDMGdlVElwS2pVN1hHNGdJQ0FnSUNBZ0lDQWdjM0F1ZW05dmJTaDRNU0E4SUhneUlEOGdlREVnTFNCNFJHbG1aaUE2SUhneUlDMGdlRVJwWm1Zc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I1TVNBK0lIa3lJRDhnZVRFZ0t5QjVSR2xtWmlBNklIa3lJQ0FySUhsRWFXWm1MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2VERWdQaUI0TWlBL0lIZ3hJQ3NnZUVScFptWWdPaUI0TWlBcklIaEVhV1ptTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdlVEVnUENCNU1pQS9JSGt4SUMwZ2VVUnBabVlnT2lCNU1pQXRJSGxFYVdabUtUdGNiaUFnSUNBZ0lDQWdmU3dnTXpBd0tUdGNiaUFnSUNBZ0lDQWdlbTl2YlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dVhHNGdJSE53TG1Ga1pGQnliM0JsY25SNUtDZHphVzFwYkdGeWFYUjVUR2x0YVhRbkxDQW5aRzkxWW14bEp5d2diM0IwVTJsdGFXeGhjbWwwZVV4cGJXbDBLVHRjYmlBZ2NtVjBkWEp1SUhOd08xeHVmVnh1WEc1bWRXNWpkR2x2YmlCamFHVmphME4xY25OdmNrOXVUR2x1WlNobGRtVnVkRG9nWVc1NUxDQmpZVzUyWVhNNklHRnVlU3dnYkdsdVpYTTZJRWxNYVc1bFcxMHBPaUJKVEdsdVpTQjhJRzUxYkd3Z2UxeHVJQ0JqYjI1emRDQnlaV04wSUQwZ1kyRnVkbUZ6TG1kbGRFSnZkVzVrYVc1blEyeHBaVzUwVW1WamRDZ3BPMXh1SUNCamIyNXpkQ0I0SUQwZ1pYWmxiblF1WTJ4cFpXNTBXQ0F0SUhKbFkzUXViR1ZtZER0Y2JpQWdZMjl1YzNRZ2VTQTlJR1YyWlc1MExtTnNhV1Z1ZEZrZ0xTQnlaV04wTG5SdmNEdGNiaUFnWm05eUlDaGpiMjV6ZENCc2FXNWxJRzltSUd4cGJtVnpLU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHbHpkQ0E5WEc0Z0lDQWdJQ0JOWVhSb0xtRmljeWhOWVhSb0xtaDVjRzkwS0d4cGJtVXVZVnN3WFNBdElIZ3NJR3hwYm1VdVlWc3hYU0F0SUhrcElDdGNiaUFnSUNBZ0lFMWhkR2d1YUhsd2IzUW9iR2x1WlM1aVd6QmRJQzBnZUN3Z2JHbHVaUzVpV3pGZElDMGdlU2tnTFNCTllYUm9MbWg1Y0c5MEtHeHBibVV1WVZzd1hTQXRJR3hwYm1VdVlsc3dYU3dnYkdsdVpTNWhXekZkSUMwZ2JHbHVaUzVpV3pGZEtTazdYRzRnSUNBZ2FXWWdLR1JwYzNRZ1BDQXlLVnh1SUNBZ0lDQWdjbVYwZFhKdUlHeHBibVU3WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzUxYkd3N1hHNTlYRzVjYm1aMWJtTjBhVzl1SUhKbGJtUmxja3hwYm1WektITndPaUJFUnk1VFkyRjBkR1Z5VUd4dmRGWnBaWGRsY2l4Y2JpQWdlRUY0YVhNNklITjBjbWx1Wnl3Z2VVRjRhWE02SUhOMGNtbHVaeXdnYkdsdVpYTlNaWE02SUVsU1pXNWtaWEpsWkV4cGJtVnpMQ0J6WVd4cFZtRnNjem9nYm5WdFltVnlXMTBzSUhOaGJHbFBjR0ZqYVhSNVEyOWxaam9nYm5WdFltVnlMQ0J6WVd4cFRXbHVPaUJ1ZFcxaVpYSXBPaUJKVEdsdVpTQmJYU0I3WEc0Z0lHTnZibk4wSUd4cGJtVnpJRDBnYkdsdVpYTlNaWE11YkdsdVpYTTdYRzRnSUdOdmJuTjBJR05oYm5aaGN5QTlJQ2h6Y0M1blpYUkpibVp2S0NrZ1lYTWdlMXRwYm1SbGVEb2djM1J5YVc1blhTQTZJR0Z1ZVgwcFd5ZGpZVzUyWVhNblhUdGNiaUFnWTI5dWMzUWdZM1I0SUQwZ1kyRnVkbUZ6TG1kbGRFTnZiblJsZUhRb0p6SmtKeWtnWVhNZ1EyRnVkbUZ6VW1WdVpHVnlhVzVuUTI5dWRHVjRkREpFTzF4dUlDQmpiMjV6ZENCNElEMGdjM0F1WkdGMFlVWnlZVzFsSVM1amIyeDFiVzV6TG1KNVRtRnRaU2g0UVhocGN5azdYRzRnSUdOdmJuTjBJSGtnUFNCemNDNWtZWFJoUm5KaGJXVWhMbU52YkhWdGJuTXVZbmxPWVcxbEtIbEJlR2x6S1R0Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzYVc1bGN5NXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJR052Ym5OMElIQnZhVzUwUm5KdmJTQTlJSE53TG5kdmNteGtWRzlUWTNKbFpXNG9lQzVuWlhRb2JHbHVaWE5iYVYwdWJXOXNjMXN3WFNrc0lIa3VaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNRjBwS1R0Y2JpQWdJQ0JqYjI1emRDQndiMmx1ZEZSdklEMGdjM0F1ZDI5eWJHUlViMU5qY21WbGJpaDRMbWRsZENoc2FXNWxjMXRwWFM1dGIyeHpXekZkS1N3Z2VTNW5aWFFvYkdsdVpYTmJhVjB1Ylc5c2Mxc3hYU2twTzF4dUlDQWdJR3hwYm1WelcybGRMbUVnUFNCYmNHOXBiblJHY205dExuZ3NJSEJ2YVc1MFJuSnZiUzU1WFR0Y2JpQWdJQ0JzYVc1bGMxdHBYUzVpSUQwZ1czQnZhVzUwVkc4dWVDd2djRzlwYm5SVWJ5NTVYVHRjYmlBZ0lDQmpiMjV6ZENCc2FXNWxJRDBnYm1WM0lGQmhkR2d5UkNncE8xeHVJQ0FnSUd4cGJtVXViVzkyWlZSdktHeHBibVZ6VzJsZExtRmJNRjBzSUd4cGJtVnpXMmxkTG1GYk1WMHBPMXh1SUNBZ0lHTnZibk4wSUdOdmJHOXlJRDBnYkdsdVpYTmJhVjB1YzJWc1pXTjBaV1FnUHlBbk1qVTFMREkxTlN3d0p5QTZJQ2N3TERFeU9Dd3dKenRjYmlBZ0lDQmpiMjV6ZENCdmNHRmphWFI1SUQwZ2MyRnNhVlpoYkhOYmFWMGdQVDA5SUVsdVptbHVhWFI1SUQ4Z01TQTZJREF1TWlBcklDaHpZV3hwVm1Gc2MxdHBYU0F0SUhOaGJHbE5hVzRwS25OaGJHbFBjR0ZqYVhSNVEyOWxaanRjYmlBZ0lDQmpkSGd1YzNSeWIydGxVM1I1YkdVZ1BTQmdjbWRpWVNna2UyTnZiRzl5ZlN3a2UyOXdZV05wZEhsOUtXQTdYRzRnSUNBZ1kzUjRMbXhwYm1WWGFXUjBhQ0E5SUd4cGJtVnpXMmxkTG1sa0lEMDlQU0JzYVc1bGMxSmxjeTVzYVc1bGMwUm1MbU4xY25KbGJuUlNiM2RKWkhnZ1B5QXpJRG9nTVR0Y2JpQWdJQ0JzYVc1bExteHBibVZVYnloc2FXNWxjMXRwWFM1aVd6QmRMQ0JzYVc1bGMxdHBYUzVpV3pGZEtUdGNiaUFnSUNCamRIZ3VjM1J5YjJ0bEtHeHBibVVwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJzYVc1bGN6dGNibjFjYmx4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsVEdsdVpYTW9YRzRnSUc0eE9pQnVkVzFpWlhKYlhTd2dYRzRnSUc0eU9pQnVkVzFpWlhKYlhTd2dYRzRnSUhObGNUb2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ1lXTjBhWFpwZEdsbGN6b2dSRWN1UTI5c2RXMXVMQ0JjYmlBZ2MyRnNhVlpoYkhNNklHNTFiV0psY2x0ZExGeHVJQ0J6WlcxVWVYQmxPaUJ6ZEhKcGJtY3NYRzRnSUhWdWFYUnpPaUJ6ZEhKcGJtY3BJRG9nU1ZKbGJtUmxjbVZrVEdsdVpYTWdlMXh1SUNCamIyNXpkQ0JzYVc1bGN6b2dTVXhwYm1WYlhTQTlJRnRkTzF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzR4TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ1kyOXVjM1FnYm5WdE1TQTlJRzR4VzJsZE8xeHVJQ0FnSUdOdmJuTjBJRzUxYlRJZ1BTQnVNbHRwWFR0Y2JpQWdJQ0JzYVc1bGN5NXdkWE5vS0h0cFpEb2dhU3dnYlc5c2N6b2dXMjUxYlRFc0lHNTFiVEpkTENCelpXeGxZM1JsWkRvZ1ptRnNjMlVzSUdFNklGdGRMQ0JpT2lCYlhYMHBPMXh1SUNCOVhHNGdJR052Ym5OMElHeHBibVZ6UkdZZ1BTQkVSeTVFWVhSaFJuSmhiV1V1WTNKbFlYUmxLR3hwYm1WekxteGxibWQwYUNrN1hHNGdJR3hwYm1WelJHWXVZMjlzZFcxdWN5NWhaR1JPWlhkVGRISnBibWNvSnpGZmMyVnhKeWt1YVc1cGRDZ29hVG9nYm5WdFltVnlLU0E5UGlCelpYRXVaMlYwS0d4cGJtVnpXMmxkTG0xdmJITmJNRjBwS1R0Y2JpQWdiR2x1WlhORVppNWpiMngxYlc1ekxtRmtaRTVsZDFOMGNtbHVaeWduTWw5elpYRW5LUzVwYm1sMEtDaHBPaUJ1ZFcxaVpYSXBJRDArSUhObGNTNW5aWFFvYkdsdVpYTmJhVjB1Ylc5c2Mxc3hYU2twTzF4dUlDQnNhVzVsYzBSbUxtTnZiSFZ0Ym5NdVlXUmtUbVYzUm14dllYUW9KMkZqZEY5a2FXWm1KeWxjYmlBZ0lDQXVhVzVwZENnb2FUb2diblZ0WW1WeUtTQTlQaUJOWVhSb0xtRmljeWhoWTNScGRtbDBhV1Z6TG1kbGRDaHNhVzVsYzF0cFhTNXRiMnh6V3pCZEtTQXRJR0ZqZEdsMmFYUnBaWE11WjJWMEtHeHBibVZ6VzJsZExtMXZiSE5iTVYwcEtTazdYRzRnSUd4cGJtVnpSR1l1WTI5c2RXMXVjeTVoWkdST1pYZEpiblFvSjJ4cGJtVmZhVzVrWlhnbktTNXBibWwwS0NocE9pQnVkVzFpWlhJcElEMCtJR2twTzF4dUlDQnNhVzVsYzBSbUxtTnZiSFZ0Ym5NdVlXUmtUbVYzUm14dllYUW9KM05oYkdrbktTNXBibWwwS0NocE9pQnVkVzFpWlhJcElEMCtJSE5oYkdsV1lXeHpXMmxkS1R0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpGZmMyVnhKeWtoTG5SaFozTmJSRWN1VkVGSFV5NVZUa2xVVTEwZ1BTQjFibWwwY3p0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpKZmMyVnhKeWtoTG5SaFozTmJSRWN1VkVGSFV5NVZUa2xVVTEwZ1BTQjFibWwwY3p0Y2JpQWdiR2x1WlhORVppNWpiMndvSnpGZmMyVnhKeWtoTG5ObGJWUjVjR1VnUFNCelpXMVVlWEJsTzF4dUlDQnNhVzVsYzBSbUxtTnZiQ2duTWw5elpYRW5LU0V1YzJWdFZIbHdaU0E5SUhObGJWUjVjR1U3WEc0Z0lISmxkSFZ5YmlCN2JHbHVaWE1zSUd4cGJtVnpSR1o5TzF4dWZWeHVYRzVsZUhCdmNuUWdZWE41Ym1NZ1puVnVZM1JwYjI0Z1oyVjBVMmx0YVd4aGNtbDBhV1Z6VFdGeWFYZ29YRzRnSUNBZ1pHbHRPaUJ1ZFcxaVpYSXNJRnh1SUNBZ0lITmxjVU52YkRvZ1JFY3VRMjlzZFcxdUxDQmNiaUFnSUNCa1psTmxjVG9nUkVjdVJHRjBZVVp5WVcxbExDQmNiaUFnSUNCemFXMUJjbkk2SUVSSExrTnZiSFZ0Ymx0ZExGeHVJQ0FnSUhOcGJVWjFibU02SUNoamIydzZJRVJITGtOdmJIVnRiaXdnYlc5c09pQnpkSEpwYm1jcElEMCtJRkJ5YjIxcGMyVThSRWN1UTI5c2RXMXVJSHdnYm5Wc2JENWNiaUFnSUNBcFhHNGdJRG9nVUhKdmJXbHpaVHhFUnk1RGIyeDFiVzViWFQ0Z2UxeHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0FoUFNCa2FXMGdMU0F4T3lBcksya3BJSHRjYmlBZ0lDQmpiMjV6ZENCdGIyd2dQU0J6WlhGRGIyd3VaMlYwS0drcE8xeHVJQ0FnSUdSbVUyVnhMbkp2ZDNNdWNtVnRiM1psUVhRb01Dd2dNU3dnWm1Gc2MyVXBPMXh1SUNBZ0lITnBiVUZ5Y2x0cFhTQTlJQ2hoZDJGcGRDQnphVzFHZFc1aktHUm1VMlZ4TG1OdmJDZ25jMlZ4SnlraExDQnRiMndwS1NFN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOcGJVRnljanRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRk5wYldsc1lYSnBkR2xsYzAxaGNtbDRSbkp2YlVScGMzUmhibU5sY3loa2FXMDZJRzUxYldKbGNpd2daR2x6ZEdGdVkyVnpPaUJOWVhSeWFYZ3NJSE5wYlVGeWNqb2dSRWN1UTI5c2RXMXVXMTBwWEc0Z0lEb2dSRWN1UTI5c2RXMXVXMTBnZTF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYlNBdElERTdJQ3NyYVNrZ2UxeHVJQ0FnSUdOdmJuTjBJSE5wYldsc1lYSnBkSGxCY25JZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnYVNBcklERTdJR29nUENCa2FXMDdJQ3NyYWlsY2JpQWdJQ0FnSUhOcGJXbHNZWEpwZEhsQmNuSXVjSFZ6YUNoblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0dScGMzUmhibU5sYzF0cFhWdHFYU2twTzF4dUlDQWdJSE5wYlVGeWNsdHBYU0E5SUVSSExrTnZiSFZ0Ymk1bWNtOXRSbXh2WVhRek1rRnljbUY1S0NkemFXMXBiR0Z5YVhSNUp5d2dSbXh2WVhRek1rRnljbUY1TG1aeWIyMG9jMmx0YVd4aGNtbDBlVUZ5Y2lrcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemFXMUJjbkk3WEc1OUlsMTkiLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlRGltZW5zaW5hbGl0eVJlZHVjaW5nV29ya2VyKGRhdGFNZXRyaWMsIG1ldGhvZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKG5ldyBVUkwoJy4vZGltZW5zaW9uYWxpdHktcmVkdWNlcicsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgY29sdW1uRGF0YTogZGF0YU1ldHJpYy5kYXRhLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgICAgICBtZWFzdXJlOiBkYXRhTWV0cmljLm1ldHJpYyxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gKHsgZGF0YTogeyBkaXN0YW5jZSwgZW1iZWRkaW5nIH0gfSkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfSk7XG4gICAgICAgIH07XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05wYm1jdGQyOXlhMlZ5TFdOeVpXRjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SmthVzFsYm5OcGIyNWhiR2wwZVMxeVpXUjFZMmx1WnkxM2IzSnJaWEl0WTNKbFlYUnZjaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGcFFrRXNUVUZCVFN4VlFVRlZMR2xEUVVGcFF5eERRVUZETEZWQlFYTkNMRVZCUVVVc1RVRkJZeXhGUVVOc1JpeFBRVUZoTzBsQlJXcENMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVlVGQlV5eFBRVUZQTzFGQlEycERMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMREJDUVVFd1FpeEZRVUZGTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5vUml4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1NVRkJTVHRaUVVNelFpeE5RVUZOTEVWQlFVVXNUVUZCVFR0WlFVTmtMRTlCUVU4c1JVRkJSU3hWUVVGVkxFTkJRVU1zVFVGQlRUdFpRVU14UWl4UFFVRlBMRVZCUVVVc1QwRkJUenRUUVVOcVFpeERRVUZETEVOQlFVTTdVVUZEU0N4TlFVRk5MRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzQkVMRTlCUVU4c1EwRkJReXhGUVVGRExGRkJRVkVzUlVGQlJTeFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRk5CUVZNc1JVRkJReXhEUVVGRExFTkJRVU03VVVGRGNrUXNRMEZCUXl4RFFVRkRPMGxCUTBvc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFRDeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1RXRjBjbWw0SUgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdFdZV3hwWkZSNWNHVnpmU0JtY205dElDY3VMaTkwZVhCbFpDMXRaWFJ5YVdOekp6dGNibHh1THlvcVhHNGdLaUJCSUhkdmNtdGxjaUIwYnlCd1pYSm1iM0p0SUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBY0dGeVlXMGdlMVpoYkdsa1ZIbHdaWE45SUdSaGRHRk5aWFJ5YVdNZ1ZHaGxJR1JoZEdFZ2RHOGdjSEp2WTJWemN5NWNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhSb2IyUWdRU0J0WlhSb2IyUWdiMllnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVMbHh1SUNvZ1FIQmhjbUZ0SUc5d2RHbHZibk1nTFNCclpYa3RkbUZzZFdVZ2NHRnBjbk5jYmlBcUlFQndZWEpoYlNCeVpYUjFjbTVFYVhOMFlXNWpaVTFoZEhKcGVGeHVJQ29nUUhKbGRIVnliaUI3VUhKdmJXbHpaVHhKVW1Wa2RXTmxSR2x0Wlc1emFXOXVZV3hwZEhsU1pYTjFiSFErZlNCU1pYTjFiSFJwYm1jZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ3VYRzRnS2k5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NWSmxaSFZqWlVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZ6ZFd4MElIdGNiaUFnWkdsemRHRnVZMlU2SUUxaGRISnBlRHRjYmlBZ1pXMWlaV1JrYVc1bk9pQk5ZWFJ5YVhnN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqY21WaGRHVkVhVzFsYm5OcGJtRnNhWFI1VW1Wa2RXTnBibWRYYjNKclpYSW9aR0YwWVUxbGRISnBZem9nVm1Gc2FXUlVlWEJsY3l3Z2JXVjBhRzlrT2lCemRISnBibWNzWEc0Z0lDQWdJQ0J2Y0hScGIyNXpQem9nWVc1NUtUb2dVSEp2YldselpUeEpVbVZrZFdObFJHbHRaVzV6YVc5dVlXeHBkSGxTWlhOMWJIUStJSHRjYmx4dUlDQnlaWFIxY200Z2JtVjNJRkJ5YjIxcGMyVW9ablZ1WTNScGIyNG9jbVZ6YjJ4MlpTa2dlMXh1SUNBZ0lHTnZibk4wSUhkdmNtdGxjaUE5SUc1bGR5QlhiM0pyWlhJb2JtVjNJRlZTVENnbkxpOWthVzFsYm5OcGIyNWhiR2wwZVMxeVpXUjFZMlZ5Snl3Z2FXMXdiM0owTG0xbGRHRXVkWEpzS1NrN1hHNGdJQ0FnZDI5eWEyVnlMbkJ2YzNSTlpYTnpZV2RsS0h0Y2JpQWdJQ0FnSUdOdmJIVnRia1JoZEdFNklHUmhkR0ZOWlhSeWFXTXVaR0YwWVN4Y2JpQWdJQ0FnSUcxbGRHaHZaRG9nYldWMGFHOWtMRnh1SUNBZ0lDQWdiV1ZoYzNWeVpUb2daR0YwWVUxbGRISnBZeTV0WlhSeWFXTXNYRzRnSUNBZ0lDQnZjSFJwYjI1ek9pQnZjSFJwYjI1ekxGeHVJQ0FnSUgwcE8xeHVJQ0FnSUhkdmNtdGxjaTV2Ym0xbGMzTmhaMlVnUFNBb2UyUmhkR0U2SUh0a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bmZYMHBJRDArSUh0Y2JpQWdJQ0FnY21WemIyeDJaU2g3WkdsemRHRnVZMlU2SUdScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklHVnRZbVZrWkdsdVozMHBPMXh1SUNBZ0lIMDdYRzRnSUgwcE8xeHVmVnh1SWwxOSIsIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbmV4cG9ydCBjb25zdCBzaW1pbGFyaXR5TWV0cmljID0ge1xuICAgICdUYW5pbW90byc6IHRhbmltb3RvU2ltaWxhcml0eSxcbiAgICAnRGljZSc6IGRpY2VTaW1pbGFyaXR5LFxuICAgICdBc3ltbWV0cmljJzogYXN5bW1ldHJpY1NpbWlsYXJpdHksXG4gICAgJ0JyYXVuLUJsYW5xdWV0JzogYnJhdW5CbGFucXVldFNpbWlsYXJpdHksXG4gICAgJ0Nvc2luZSc6IGNvc2luZVNpbWlsYXJpdHksXG4gICAgJ0t1bGN6eW5za2knOiBrdWxjenluc2tpU2ltaWxhcml0eSxcbiAgICAnTWMtQ29ubmF1Z2hleSc6IG1jQ29ubmF1Z2hleVNpbWlsYXJpdHksXG4gICAgJ1JvZ290LUdvbGRiZXJnJzogcm9nb3RHb2xkYmVyZ1NpbWlsYXJpdHksXG4gICAgJ1J1c3NlbCc6IHJ1c3NlbFNpbWlsYXJpdHksXG4gICAgJ1Nva2FsJzogc29rYWxTaW1pbGFyaXR5LFxuICAgICdIYW1taW5nJzogaGFtbWluZ1NpbWlsYXJpdHksXG4gICAgJ0V1Y2xpZGVhbic6IGV1Y2xpZGVhblNpbWlsYXJpdHksXG59O1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlTWV0cmljcyA9IHtcbiAgICAnVGFuaW1vdG8nOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgICdEaWNlJzogZGljZURpc3RhbmNlLFxuICAgICdBc3ltbWV0cmljJzogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgICdCcmF1bi1CbGFucXVldCc6IGJyYXVuQmxhbnF1ZXREaXN0YW5jZSxcbiAgICAnQ29zaW5lJzogY29zaW5lRGlzdGFuY2UsXG4gICAgJ0t1bGN6eW5za2knOiBrdWxjenluc2tpRGlzdGFuY2UsXG4gICAgJ01jLUNvbm5hdWdoZXknOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICAnUm9nb3QtR29sZGJlcmcnOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgJ1J1c3NlbCc6IHJ1c3NlbERpc3RhbmNlLFxuICAgICdTb2thbCc6IHNva2FsRGlzdGFuY2UsXG4gICAgJ0hhbW1pbmcnOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgJ0V1Y2xpZGVhbic6IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBDSEVNX1NJTUlMQVJJVFlfTUVUUklDUyA9IFsnVGFuaW1vdG8nLCAnRGljZScsICdDb3NpbmUnLCAnSGFtbWluZycsICdFdWNsaWRlYW4nXTtcbmV4cG9ydCBmdW5jdGlvbiB0YW5pbW90b1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAodG90YWwgLSBjb21tb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRhbmltb3RvRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHRhbmltb3RvU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAyICogY29tbW9uIC8gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gZGljZURpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShkaWNlU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWwgPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIE1hdGguc3FydCh0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29zaW5lRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGNvc2luZVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGV1Y2xpZGVhblNpbWlsYXJpdHkoeCwgeSkge1xuICAgIHJldHVybiBnZXRTaW1pbGFyaXR5RnJvbURpc3RhbmNlKGV1Y2xpZGVhbkRpc3RhbmNlKHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBldWNsaWRlYW5EaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKSAtIDIgKiB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShoYW1taW5nRGlzdGFuY2UoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhbW1pbmdEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIHgudHJ1ZUNvdW50KCkgKyB5LnRydWVDb3VudCgpIC0gMiAqIHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzb2thbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiBjb21tb24gLyAoMiAqIHRvdGFsIC0gMyAqIGNvbW1vbik7XG59XG5leHBvcnQgZnVuY3Rpb24gc29rYWxEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoc29rYWxTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBrdWxjenluc2tpU2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgdG90YWwgPSB4LnRydWVDb3VudCgpICsgeS50cnVlQ291bnQoKTtcbiAgICBjb25zdCB0b3RhbFByb2QgPSB4LnRydWVDb3VudCgpICogeS50cnVlQ291bnQoKTtcbiAgICBpZiAodG90YWxQcm9kID09IDApXG4gICAgICAgIHJldHVybiAwLjA7XG4gICAgY29uc3QgY29tbW9uID0geC5hbmRXaXRoQ291bnRCaXRzKHksIHRydWUpO1xuICAgIHJldHVybiAoY29tbW9uICogdG90YWwpIC8gKDIgKiB0b3RhbFByb2QpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGt1bGN6eW5za2lEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoa3VsY3p5bnNraVNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1jQ29ubmF1Z2hleVNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IHRvdGFsID0geC50cnVlQ291bnQoKSArIHkudHJ1ZUNvdW50KCk7XG4gICAgY29uc3QgdG90YWxQcm9kID0geC50cnVlQ291bnQoKSAqIHkudHJ1ZUNvdW50KCk7XG4gICAgaWYgKHRvdGFsUHJvZCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gKGNvbW1vbiAqIHRvdGFsIC0gdG90YWxQcm9kKSAvIHRvdGFsUHJvZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkobWNDb25uYXVnaGV5U2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXN5bW1ldHJpY1NpbWlsYXJpdHkoeCwgeSkge1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHgudHJ1ZUNvdW50KCksIHkudHJ1ZUNvdW50KCkpO1xuICAgIGlmIChtaW4gPT0gMClcbiAgICAgICAgcmV0dXJuIDAuMDtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbW1vbiAvIG1pbjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3ltbWV0cmljRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KGFzeW1tZXRyaWNTaW1pbGFyaXR5KHgsIHkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBicmF1bkJsYW5xdWV0U2ltaWxhcml0eSh4LCB5KSB7XG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoeC50cnVlQ291bnQoKSwgeS50cnVlQ291bnQoKSk7XG4gICAgaWYgKG1heCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8gbWF4O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgcmV0dXJuIGdldERpc3RhbmNlRnJvbVNpbWlsYXJpdHkoYnJhdW5CbGFucXVldFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkge1xuICAgIGlmICh4Lmxlbmd0aCA9PSAwKVxuICAgICAgICByZXR1cm4gMC4wO1xuICAgIGNvbnN0IGNvbW1vbiA9IHguYW5kV2l0aENvdW50Qml0cyh5LCB0cnVlKTtcbiAgICByZXR1cm4gY29tbW9uIC8geC5sZW5ndGg7XG59XG5leHBvcnQgZnVuY3Rpb24gcnVzc2VsRGlzdGFuY2UoeCwgeSkge1xuICAgIHJldHVybiBnZXREaXN0YW5jZUZyb21TaW1pbGFyaXR5KHJ1c3NlbFNpbWlsYXJpdHkoeCwgeSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJvZ290R29sZGJlcmdTaW1pbGFyaXR5KHgsIHkpIHtcbiAgICBjb25zdCBjb21tb24gPSB4LmFuZFdpdGhDb3VudEJpdHMoeSwgdHJ1ZSk7XG4gICAgY29uc3QgdG90YWwgPSB4LmNvdW50Qml0cyh0cnVlKSArIHkuY291bnRCaXRzKHRydWUpO1xuICAgIGNvbnN0IGxlbiA9IHgubGVuZ3RoO1xuICAgIGNvbnN0IGRpZmYgPSBsZW4gLSB0b3RhbCArIGNvbW1vbjtcbiAgICBpZiAoKGNvbW1vbiA9PSBsZW4pIHx8IChkaWZmID09IGxlbikpXG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gY29tbW9uIC8gdG90YWwgKyBkaWZmIC8gKDIgKiBsZW4gLSB0b3RhbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlKHgsIHkpIHtcbiAgICByZXR1cm4gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShyb2dvdEdvbGRiZXJnU2ltaWxhcml0eSh4LCB5KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShkaXN0YW5jZSkge1xuICAgIHJldHVybiAxIC8gKDEgKyBkaXN0YW5jZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdGFuY2VGcm9tU2ltaWxhcml0eShzaW1pbGFyaXR5KSB7XG4gICAgcmV0dXJuIDEgLyBzaW1pbGFyaXR5IC0gMTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMmx0YVd4aGNtbDBlUzF0WlhSeWFXTnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMybHRhV3hoY21sMGVTMXRaWFJ5YVdOekxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVU5CTEU5QlFVOHNSVUZCUXl4VFFVRlRMRVZCUVVNc1RVRkJUU3hWUVVGVkxFTkJRVU03UVVGRmJrTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1owSkJRV2RDTEVkQlFUSkVPMGxCUTNSR0xGVkJRVlVzUlVGQlJTeHJRa0ZCYTBJN1NVRkRPVUlzVFVGQlRTeEZRVUZGTEdOQlFXTTdTVUZEZEVJc1dVRkJXU3hGUVVGRkxHOUNRVUZ2UWp0SlFVTnNReXhuUWtGQlowSXNSVUZCUlN4MVFrRkJkVUk3U1VGRGVrTXNVVUZCVVN4RlFVRkZMR2RDUVVGblFqdEpRVU14UWl4WlFVRlpMRVZCUVVVc2IwSkJRVzlDTzBsQlEyeERMR1ZCUVdVc1JVRkJSU3h6UWtGQmMwSTdTVUZEZGtNc1owSkJRV2RDTEVWQlFVVXNkVUpCUVhWQ08wbEJRM3BETEZGQlFWRXNSVUZCUlN4blFrRkJaMEk3U1VGRE1VSXNUMEZCVHl4RlFVRkZMR1ZCUVdVN1NVRkRlRUlzVTBGQlV5eEZRVUZGTEdsQ1FVRnBRanRKUVVNMVFpeFhRVUZYTEVWQlFVVXNiVUpCUVcxQ08wTkJRMnBETEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3hsUVVGbExFZEJRVEpFTzBsQlEzSkdMRlZCUVZVc1JVRkJSU3huUWtGQlowSTdTVUZETlVJc1RVRkJUU3hGUVVGRkxGbEJRVms3U1VGRGNFSXNXVUZCV1N4RlFVRkZMR3RDUVVGclFqdEpRVU5vUXl4blFrRkJaMElzUlVGQlJTeHhRa0ZCY1VJN1NVRkRka01zVVVGQlVTeEZRVUZGTEdOQlFXTTdTVUZEZUVJc1dVRkJXU3hGUVVGRkxHdENRVUZyUWp0SlFVTm9ReXhsUVVGbExFVkJRVVVzYjBKQlFXOUNPMGxCUTNKRExHZENRVUZuUWl4RlFVRkZMSEZDUVVGeFFqdEpRVU4yUXl4UlFVRlJMRVZCUVVVc1kwRkJZenRKUVVONFFpeFBRVUZQTEVWQlFVVXNZVUZCWVR0SlFVTjBRaXhUUVVGVExFVkJRVVVzWlVGQlpUdEpRVU14UWl4WFFVRlhMRVZCUVVVc2FVSkJRV2xDTzBOQlF5OUNMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeDFRa0ZCZFVJc1IwRkJSeXhEUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hYUVVGWExFTkJRVU1zUTBGQlF6dEJRVVU1Uml4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRla1FzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTTFReXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETzFGQlExb3NUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRZaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpORExFOUJRVThzVFVGQlRTeEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRMjVETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRka1FzVDBGQlR5eDVRa0ZCZVVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0zUkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnlSQ3hOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzBsQlF6VkRMRWxCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU03VVVGRFdpeFBRVUZQTEVkQlFVY3NRMEZCUXp0SlFVTmlMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZETTBNc1QwRkJUeXhEUVVGRExFZEJRVWNzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTTFRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEZsQlFWa3NRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVOdVJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExHTkJRV01zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNaRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1NVRkJTU3hMUVVGTExFbEJRVWtzUTBGQlF6dFJRVU5hTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMjVETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzSkVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNMFFzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4dFFrRkJiVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTXhSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRelZFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2FVSkJRV2xDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRWRCUVVjc1EwRkJReXhIUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdsQ1FVRnBRaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzBsQlEzaEVMRTlCUVU4c2VVSkJRWGxDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkVMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWlVGQlpTeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUTNSRUxFOUJRVThzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOMlJTeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR1ZCUVdVc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU4wUkN4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wbEJRelZETEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR0ZCUVdFc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU53UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU14UkN4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHOUNRVUZ2UWl4RFFVRkRMRU5CUVZjc1JVRkJSU3hEUVVGWE8wbEJRek5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkROVU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0SlFVTm9SQ3hKUVVGSkxGTkJRVk1zU1VGQlNTeERRVUZETzFGQlEyaENMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZEZWtRc1QwRkJUeXg1UWtGQmVVSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSE5DUVVGelFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpkRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdTVUZETlVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dEpRVU5vUkN4SlFVRkpMRk5CUVZNc1NVRkJTU3hEUVVGRE8xRkJRMmhDTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU03UVVGRGJFUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3h2UWtGQmIwSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRKUVVNelJDeFBRVUZQTEhsQ1FVRjVRaXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEycEZMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzYjBKQlFXOUNMRU5CUVVNc1EwRkJWeXhGUVVGRkxFTkJRVmM3U1VGRE0wUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEYmtRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5XTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTXpReXhQUVVGUExFMUJRVTBzUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZEVJc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeHJRa0ZCYTBJc1EwRkJReXhEUVVGWExFVkJRVVVzUTBGQlZ6dEpRVU42UkN4UFFVRlBMSGxDUVVGNVFpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXk5RUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlZ5eEZRVUZGTEVOQlFWYzdTVUZET1VRc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkRia1FzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTldMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNN1FVRkRkRUlzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTTFSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMnhGTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1owSkJRV2RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRka1FzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1VVRkRaaXhQUVVGUExFZEJRVWNzUTBGQlF6dEpRVU5pTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE0wTXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0SlFVTnlSQ3hQUVVGUExIbENRVUY1UWl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRek5FTEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2RVSkJRWFZDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1NVRkRPVVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVNelF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGNFUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU55UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEUxQlFVMHNRMEZCUXp0SlFVTnNReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF6dFJRVUZGTEU5QlFVOHNSMEZCUnl4RFFVRkRPenRSUVVNMVF5eFBRVUZQTEUxQlFVMHNSMEZCUnl4TFFVRkxMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONFJDeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVUZETEVOQlFWY3NSVUZCUlN4RFFVRlhPMGxCUXpWRUxFOUJRVThzZVVKQlFYbENMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGJFVXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3g1UWtGQmVVSXNRMEZCUXl4UlFVRm5RanRKUVVONFJDeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkZMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU0zUWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxIbENRVUY1UWl4RFFVRkRMRlZCUVd0Q08wbEJRekZFTEU5QlFVOHNRMEZCUXl4SFFVRkhMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE5VSXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4TlFVRmpMRVZCUVVVc1EwRkJVeXhGUVVGRkxFbEJRWGRETzBsQlEyeEhMRk5CUVZNc1MwRkJTeXhEUVVGRExFMUJRV2RETEVWQlFVVXNUMEZCT0VJN1VVRkROMFVzU1VGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNCQ0xFbEJRVWtzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVVjBRaXhMUVVGTExFMUJRVTBzVDBGQlR5eEpRVUZKTEUxQlFVMHNSVUZCUlR0WlFVTTFRaXhOUVVGTkxHTkJRV01zUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRlRU1zU1VGQlNTeFZRVUZWTEVsQlFVa3NTVUZCU1N4SlFVRkpMR05CUVdNc1IwRkJSeXhWUVVGVkxFVkJRVVU3WjBKQlEzSkVMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU03WjBKQlEyNUNMRlZCUVZVc1IwRkJSeXhqUVVGakxFTkJRVU03WVVGRE4wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOMlF5eE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJSVGRDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM0pDTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRGNrSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGRFppeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRTRRaXhGUVVNdlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlV5eEhRVUZITEVWQlFVVXNTMEZCU3p0WlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRkRUlzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTFBc1NVRkJTU3hIUVVGSExFVkJRVVU3V1VGRFVDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMnBDTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VTBGRGVFSTdTMEZEUmp0SlFVTkVMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBbkxpOWlhWFF0WVhKeVlYa25PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUpiblI5SUdaeWIyMGdKeTR2Y21GdVpHOXRKenRjYmx4dVpYaHdiM0owSUdOdmJuTjBJSE5wYldsc1lYSnBkSGxOWlhSeWFXTTZJSHRiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlmU0E5SUh0Y2JpQWdKMVJoYm1sdGIzUnZKem9nZEdGdWFXMXZkRzlUYVcxcGJHRnlhWFI1TEZ4dUlDQW5SR2xqWlNjNklHUnBZMlZUYVcxcGJHRnlhWFI1TEZ4dUlDQW5RWE41YlcxbGRISnBZeWM2SUdGemVXMXRaWFJ5YVdOVGFXMXBiR0Z5YVhSNUxGeHVJQ0FuUW5KaGRXNHRRbXhoYm5GMVpYUW5PaUJpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTeGNiaUFnSjBOdmMybHVaU2M2SUdOdmMybHVaVk5wYldsc1lYSnBkSGtzWEc0Z0lDZExkV3hqZW5sdWMydHBKem9nYTNWc1kzcDVibk5yYVZOcGJXbHNZWEpwZEhrc1hHNGdJQ2ROWXkxRGIyNXVZWFZuYUdWNUp6b2diV05EYjI1dVlYVm5hR1Y1VTJsdGFXeGhjbWwwZVN4Y2JpQWdKMUp2WjI5MExVZHZiR1JpWlhKbkp6b2djbTluYjNSSGIyeGtZbVZ5WjFOcGJXbHNZWEpwZEhrc1hHNGdJQ2RTZFhOelpXd25PaUJ5ZFhOelpXeFRhVzFwYkdGeWFYUjVMRnh1SUNBblUyOXJZV3duT2lCemIydGhiRk5wYldsc1lYSnBkSGtzWEc0Z0lDZElZVzF0YVc1bkp6b2dhR0Z0YldsdVoxTnBiV2xzWVhKcGRIa3NYRzRnSUNkRmRXTnNhV1JsWVc0bk9pQmxkV05zYVdSbFlXNVRhVzFwYkdGeWFYUjVMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdScGMzUmhibU5sVFdWMGNtbGpjem9nZTF0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLU0E5UGlCdWRXMWlaWEo5SUQwZ2UxeHVJQ0FuVkdGdWFXMXZkRzhuT2lCMFlXNXBiVzkwYjBScGMzUmhibU5sTEZ4dUlDQW5SR2xqWlNjNklHUnBZMlZFYVhOMFlXNWpaU3hjYmlBZ0owRnplVzF0WlhSeWFXTW5PaUJoYzNsdGJXVjBjbWxqUkdsemRHRnVZMlVzWEc0Z0lDZENjbUYxYmkxQ2JHRnVjWFZsZENjNklHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU3hjYmlBZ0owTnZjMmx1WlNjNklHTnZjMmx1WlVScGMzUmhibU5sTEZ4dUlDQW5TM1ZzWTNwNWJuTnJhU2M2SUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdKMDFqTFVOdmJtNWhkV2RvWlhrbk9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ0oxSnZaMjkwTFVkdmJHUmlaWEpuSnpvZ2NtOW5iM1JIYjJ4a1ltVnlaMFJwYzNSaGJtTmxMRnh1SUNBblVuVnpjMlZzSnpvZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lDZFRiMnRoYkNjNklITnZhMkZzUkdsemRHRnVZMlVzWEc0Z0lDZElZVzF0YVc1bkp6b2dhR0Z0YldsdVowUnBjM1JoYm1ObExGeHVJQ0FuUlhWamJHbGtaV0Z1SnpvZ1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdRMGhGVFY5VFNVMUpURUZTU1ZSWlgwMUZWRkpKUTFNZ1BTQmJKMVJoYm1sdGIzUnZKeXdnSjBScFkyVW5MQ0FuUTI5emFXNWxKeXdnSjBoaGJXMXBibWNuTENBblJYVmpiR2xrWldGdUoxMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwWVc1cGJXOTBiMU5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdhV1lnS0hSdmRHRnNJRDA5SURBcFhHNGdJQ0FnY21WMGRYSnVJREV1TUR0Y2JpQWdZMjl1YzNRZ1kyOXRiVzl1SUQwZ2VDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcE8xeHVJQ0J5WlhSMWNtNGdZMjl0Ylc5dUlDOGdLSFJ2ZEdGc0lDMGdZMjl0Ylc5dUtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhSaGJtbHRiM1J2UkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRFUnBjM1JoYm1ObFJuSnZiVk5wYldsc1lYSnBkSGtvZEdGdWFXMXZkRzlUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBZMlZUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lHTnZibk4wSUhSdmRHRnNJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXJJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiQ0E5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJRElnS2lCamIyMXRiMjRnTHlCMGIzUmhiRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHUnBZMlZFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hrYVdObFUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqYjNOcGJtVlRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcUlIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklFMWhkR2d1YzNGeWRDaDBiM1JoYkNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJqYjNOcGJtVkVhWE4wWVc1alpTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0J5WlhSMWNtNGdaMlYwUkdsemRHRnVZMlZHY205dFUybHRhV3hoY21sMGVTaGpiM05wYm1WVGFXMXBiR0Z5YVhSNUtIZ3NJSGtwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1YxWTJ4cFpHVmhibE5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUdkbGRGTnBiV2xzWVhKcGRIbEdjbTl0UkdsemRHRnVZMlVvWlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvZUN3Z2VTa3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1YzNGeWRDaDRMblJ5ZFdWRGIzVnVkQ2dwSUNzZ2VTNTBjblZsUTI5MWJuUW9LU0F0SURJcWVDNWhibVJYYVhSb1EyOTFiblJDYVhSektIa3NJSFJ5ZFdVcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdoaGJXMXBibWRUYVcxcGJHRnlhWFI1S0hnNklFSnBkRUZ5Y21GNUxDQjVPaUJDYVhSQmNuSmhlU2s2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0doaGJXMXBibWRFYVhOMFlXNWpaU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCb1lXMXRhVzVuUkdsemRHRnVZMlVvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUhndWRISjFaVU52ZFc1MEtDa2dLeUI1TG5SeWRXVkRiM1Z1ZENncElDMGdNaXA0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpiMnRoYkZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdZMjl0Ylc5dUlEMGdlQzVoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSGtzSUhSeWRXVXBPMXh1SUNCeVpYUjFjbTRnWTI5dGJXOXVJQzhnS0RJZ0tpQjBiM1JoYkNBdElETWdLaUJqYjIxdGIyNHBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2MyOXJZV3hFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2h6YjJ0aGJGTnBiV2xzWVhKcGRIa29lQ3dnZVNrcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYTNWc1kzcDVibk5yYVZOcGJXbHNZWEpwZEhrb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdZMjl1YzNRZ2RHOTBZV3dnUFNCNExuUnlkV1ZEYjNWdWRDZ3BJQ3NnZVM1MGNuVmxRMjkxYm5Rb0tUdGNiaUFnWTI5dWMzUWdkRzkwWVd4UWNtOWtJRDBnZUM1MGNuVmxRMjkxYm5Rb0tTQXFJSGt1ZEhKMVpVTnZkVzUwS0NrN1hHNGdJR2xtSUNoMGIzUmhiRkJ5YjJRZ1BUMGdNQ2xjYmlBZ0lDQnlaWFIxY200Z01DNHdPMXh1SUNCamIyNXpkQ0JqYjIxdGIyNGdQU0I0TG1GdVpGZHBkR2hEYjNWdWRFSnBkSE1vZVN3Z2RISjFaU2s3WEc0Z0lISmxkSFZ5YmlBb1kyOXRiVzl1SUNvZ2RHOTBZV3dwSUM4Z0tESWdLaUIwYjNSaGJGQnliMlFwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhM1ZzWTNwNWJuTnJhVVJwYzNSaGJtTmxLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJuWlhSRWFYTjBZVzVqWlVaeWIyMVRhVzFwYkdGeWFYUjVLR3QxYkdONmVXNXphMmxUYVcxcGJHRnlhWFI1S0hnc0lIa3BLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWpRMjl1Ym1GMVoyaGxlVk5wYldsc1lYSnBkSGtvZURvZ1FtbDBRWEp5WVhrc0lIazZJRUpwZEVGeWNtRjVLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnZEc5MFlXd2dQU0I0TG5SeWRXVkRiM1Z1ZENncElDc2dlUzUwY25WbFEyOTFiblFvS1R0Y2JpQWdZMjl1YzNRZ2RHOTBZV3hRY205a0lEMGdlQzUwY25WbFEyOTFiblFvS1NBcUlIa3VkSEoxWlVOdmRXNTBLQ2s3WEc0Z0lHbG1JQ2gwYjNSaGJGQnliMlFnUFQwZ01DbGNiaUFnSUNCeVpYUjFjbTRnTUM0d08xeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUhKbGRIVnliaUFvWTI5dGJXOXVJQ29nZEc5MFlXd2dMU0IwYjNSaGJGQnliMlFwSUM4Z2RHOTBZV3hRY205a08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlHZGxkRVJwYzNSaGJtTmxSbkp2YlZOcGJXbHNZWEpwZEhrb2JXTkRiMjV1WVhWbmFHVjVVMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzbHRiV1YwY21salUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQnRhVzRnUFNCTllYUm9MbTFwYmloNExuUnlkV1ZEYjNWdWRDZ3BMQ0I1TG5SeWRXVkRiM1Z1ZENncEtUdGNiaUFnYVdZZ0tHMXBiaUE5UFNBd0tWeHVJQ0FnSUhKbGRIVnliaUF3TGpBN1hHNGdJR052Ym5OMElHTnZiVzF2YmlBOUlIZ3VZVzVrVjJsMGFFTnZkVzUwUW1sMGN5aDVMQ0IwY25WbEtUdGNiaUFnY21WMGRYSnVJR052YlcxdmJpQXZJRzFwYmp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hoYzNsdGJXVjBjbWxqVTJsdGFXeGhjbWwwZVNoNExDQjVLU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmljbUYxYmtKc1lXNXhkV1YwVTJsdGFXeGhjbWwwZVNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCdFlYZ2dQU0JOWVhSb0xtMWhlQ2g0TG5SeWRXVkRiM1Z1ZENncExDQjVMblJ5ZFdWRGIzVnVkQ2dwS1R0Y2JpQWdhV1lnS0cxaGVDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklHMWhlRHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU2g0T2lCQ2FYUkJjbkpoZVN3Z2VUb2dRbWwwUVhKeVlYa3BPaUJ1ZFcxaVpYSWdlMXh1SUNCeVpYUjFjbTRnWjJWMFJHbHpkR0Z1WTJWR2NtOXRVMmx0YVd4aGNtbDBlU2hpY21GMWJrSnNZVzV4ZFdWMFUybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5ZFhOelpXeFRhVzFwYkdGeWFYUjVLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTazZJRzUxYldKbGNpQjdYRzRnSUdsbUlDaDRMbXhsYm1kMGFDQTlQU0F3S1Z4dUlDQWdJSEpsZEhWeWJpQXdMakE3WEc0Z0lHTnZibk4wSUdOdmJXMXZiaUE5SUhndVlXNWtWMmwwYUVOdmRXNTBRbWwwY3loNUxDQjBjblZsS1R0Y2JpQWdjbVYwZFhKdUlHTnZiVzF2YmlBdklIZ3ViR1Z1WjNSb08xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY25WemMyVnNSR2x6ZEdGdVkyVW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJR2RsZEVScGMzUmhibU5sUm5KdmJWTnBiV2xzWVhKcGRIa29jblZ6YzJWc1UybHRhV3hoY21sMGVTaDRMQ0I1S1NrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ5YjJkdmRFZHZiR1JpWlhKblUybHRhV3hoY21sMGVTaDRPaUJDYVhSQmNuSmhlU3dnZVRvZ1FtbDBRWEp5WVhrcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQmpiMjF0YjI0Z1BTQjRMbUZ1WkZkcGRHaERiM1Z1ZEVKcGRITW9lU3dnZEhKMVpTazdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdlQzVqYjNWdWRFSnBkSE1vZEhKMVpTa2dLeUI1TG1OdmRXNTBRbWwwY3loMGNuVmxLVHRjYmlBZ1kyOXVjM1FnYkdWdUlEMGdlQzVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJR1JwWm1ZZ1BTQnNaVzRnTFNCMGIzUmhiQ0FySUdOdmJXMXZianRjYmlBZ2FXWWdLQ2hqYjIxdGIyNGdQVDBnYkdWdUtTQjhmQ0FvWkdsbVppQTlQU0JzWlc0cEtTQnlaWFIxY200Z01TNHdPMXh1SUNCbGJITmxJSEpsZEhWeWJpQmpiMjF0YjI0Z0x5QjBiM1JoYkNBcklHUnBabVlnTHlBb01pQXFJR3hsYmlBdElIUnZkR0ZzS1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEp2WjI5MFIyOXNaR0psY21kRWFYTjBZVzVqWlNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwT2lCdWRXMWlaWElnZTF4dUlDQnlaWFIxY200Z1oyVjBSR2x6ZEdGdVkyVkdjbTl0VTJsdGFXeGhjbWwwZVNoeWIyZHZkRWR2YkdSaVpYSm5VMmx0YVd4aGNtbDBlU2g0TENCNUtTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUlRhVzFwYkdGeWFYUjVSbkp2YlVScGMzUmhibU5sS0dScGMzUmhibU5sT2lCdWRXMWlaWElwSUh0Y2JpQWdjbVYwZFhKdUlERWdMeUFvSURFZ0t5QmthWE4wWVc1alpTazdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCblpYUkVhWE4wWVc1alpVWnliMjFUYVcxcGJHRnlhWFI1S0hOcGJXbHNZWEpwZEhrNklHNTFiV0psY2lrZ2UxeHVJQ0J5WlhSMWNtNGdNU0F2SUhOcGJXbHNZWEpwZEhrZ0xTQXhPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBSR2wyWlhKelpWTjFZbk5sZENoc1pXNW5kR2c2SUc1MWJXSmxjaXdnYmpvZ2JuVnRZbVZ5TENCa2FYTjBPaUFvYVRFNklHNTFiV0psY2l3Z2FUSTZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lHWjFibU4wYVc5dUlHMWhlRUo1S0haaGJIVmxjem9nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMQ0J2Y21SbGNrSjVPaUFvYVRvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhJcElIdGNiaUFnSUNCc1pYUWdiV0Y0Vm1Gc2RXVWdQU0J1ZFd4c08xeHVJQ0FnSUd4bGRDQnRZWGhQY21SbGNrSjVJRDBnYm5Wc2JEdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdaV3hsYldWdWRDQnZaaUIyWVd4MVpYTXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHVnNaVzFsYm5SUGNtUmxja0o1SUQwZ2IzSmtaWEpDZVNobGJHVnRaVzUwS1R0Y2JpQWdJQ0FnSUdsbUlDaHRZWGhQY21SbGNrSjVJRDA5SUc1MWJHd2dmSHdnWld4bGJXVnVkRTl5WkdWeVFua2dQaUJ0WVhoUGNtUmxja0o1S1NCN1hHNGdJQ0FnSUNBZ0lHMWhlRlpoYkhWbElEMGdaV3hsYldWdWREdGNiaUFnSUNBZ0lDQWdiV0Y0VDNKa1pYSkNlU0E5SUdWc1pXMWxiblJQY21SbGNrSjVPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYldGNFZtRnNkV1U3WEc0Z0lIMWNibHh1SUNCamIyNXpkQ0J6ZFdKelpYUWdQU0JiY21GdVpHOXRTVzUwS0d4bGJtZDBhQ0F0SURFcFhUdGNiaUFnWTI5dWMzUWdZMjl0Y0d4bGJXVnVkQ0E5SUc1bGR5QlRaWFFvS1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUd4bGJtZDBhRHNnS3l0cEtTQjdYRzRnSUNBZ2FXWWdLQ0Z6ZFdKelpYUXVhVzVqYkhWa1pYTW9hU2twWEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG1Ga1pDaHBLVHRjYmlBZ2ZWeHVYRzRnSUhkb2FXeGxJQ2h6ZFdKelpYUXViR1Z1WjNSb0lEd2diaWtnZTF4dUlDQWdJR052Ym5OMElHbGtlQ0E5SUcxaGVFSjVLRnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzUyWVd4MVpYTW9LU0JoY3lCSmRHVnlZV0pzWlVsMFpYSmhkRzl5UEc1MWJXSmxjajRzWEc0Z0lDQWdJQ0FvYVNrZ1BUNGdUV0YwYUM1dGFXNHVZWEJ3Ykhrb1RXRjBhQ3dnYzNWaWMyVjBMbTFoY0NobWRXNWpkR2x2YmloMllXd3NJR2x1WkdWNEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQmthWE4wS0drc0lIWmhiQ2s3WEc0Z0lDQWdJQ0I5S1NrcE8xeHVJQ0FnSUdsbUlDaHBaSGdwSUh0Y2JpQWdJQ0FnSUhOMVluTmxkQzV3ZFhOb0tHbGtlQ2s3WEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG1SbGJHVjBaU2hwWkhncE8xeHVJQ0FnSUgxY2JpQWdmVnh1SUNCeVpYUjFjbTRnYzNWaWMyVjBPMXh1ZlZ4dUlsMTkiLCIvKipcbiAqIERlbm90ZXMgYSB2ZWN0b3Igb2YgZmxvYXRpbmcgcG9pdCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvclxuICogQGV4dGVuZHMge0Zsb2F0MzJBcnJheX1cbiAqL1xuZXhwb3J0IGNsYXNzIFZlY3RvciBleHRlbmRzIEZsb2F0MzJBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgYSB0d28tZGltZW5zaW9uYWwgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBNYXRyaXhcbiAqIEBleHRlbmRzIHtBcnJheTxWZWN0b3I+fVxuICovXG5leHBvcnQgY2xhc3MgTWF0cml4IGV4dGVuZHMgQXJyYXkge1xufVxuLyoqXG4gKiBEZW5vdGVzIGNhcnRlc2lhbiBjb29yZGluYXRlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29vcmRpbmF0ZXNcbiAqIEBleHRlbmRzIHtNYXRyaXh9XG4gKi9cbmV4cG9ydCBjbGFzcyBDb29yZGluYXRlcyBleHRlbmRzIE1hdHJpeCB7XG59XG4vKipcbiAqIERlbm90ZXMgYW4gYXJyYXkgb2YgYXJiaXRyYXJ5LXR5cGVkIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFZlY3RvcnNcbiAqIEBleHRlbmRzIHtBcnJheTxhbnk+fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9ycyBleHRlbmRzIEFycmF5IHtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaUzFrWldOc1lYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbExXUmxZMnhoY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1RVRkJUeXhUUVVGUkxGbEJRVms3UTBGQlJ6dEJRVVV6UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEV0QlFXRTdRMEZCUnp0QlFVVTFRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNWMEZCV1N4VFFVRlJMRTFCUVUwN1EwRkJSenRCUVVVeFF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1QwRkJVU3hUUVVGUkxFdEJRVlU3UTBGQlJ5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFpsWTNSdmNpQnZaaUJtYkc5aGRHbHVaeUJ3YjJsMElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFZMnhoYzNNZ1ZtVmpkRzl5WEc0Z0tpQkFaWGgwWlc1a2N5QjdSbXh2WVhRek1rRnljbUY1ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtVmpkRzl5SUdWNGRHVnVaSE1nUm14dllYUXpNa0Z5Y21GNUlIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRTFoZEhKcGVGeHVJQ29nUUdWNGRHVnVaSE1nZTBGeWNtRjVQRlpsWTNSdmNqNTlYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJOWVhSeWFYZ2daWGgwWlc1a2N5QkJjbkpoZVR4V1pXTjBiM0krSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmpZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaWE11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUVOdmIzSmthVzVoZEdWelhHNGdLaUJBWlhoMFpXNWtjeUI3VFdGMGNtbDRmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nUTI5dmNtUnBibUYwWlhNZ1pYaDBaVzVrY3lCTllYUnlhWGdnZTMxY2JseHVMeW9xWEc0Z0tpQkVaVzV2ZEdWeklHRnVJR0Z5Y21GNUlHOW1JR0Z5WW1sMGNtRnllUzEwZVhCbFpDQjJaV04wYjNKekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJqYkdGemN5QldaV04wYjNKelhHNGdLaUJBWlhoMFpXNWtjeUI3UVhKeVlYazhZVzU1UG4xY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGWmxZM1J2Y25NZ1pYaDBaVzVrY3lCQmNuSmhlVHhoYm5rK0lIdDlYRzVjYmk4cUtseHVJQ29nUkdWdWIzUmxjeUJoSUdScFkzUnBiMjVoY25rZ1kyOXVkR0ZwYm1sdVp5Qm1kVzVqZEdsdmJpQnZjSFJwYjI1ekxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUIwZVhCbElFOXdkR2x2Ym5OY2JpQXFMMXh1Wlhod2IzSjBJSFI1Y0dVZ1QzQjBhVzl1Y3lBOUlIdGJibUZ0WlRvZ2MzUnlhVzVuWFRvZ1lXNTVmVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdOMWMzUnZiU0JrYVhOMFlXNWpaU0J0WlhSeWFXTWdZbVYwZDJWbGJpQjBhR1VnZEhkdklHZHBkbVZ1SUhabFkzUnZjbk11WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIUjVjR1VnUkdsemRHRnVZMlZOWlhSeWFXTmNiaUFxSUVCd1lYSmhiU0I3WVc1NWZTQjJNU0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubDlJSFl5SUZSb1pTQnpaV052Ym1RZ2RtVmpkRzl5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkVhWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aWE5sSUhSM2J5QjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnZEhsd1pTQkVhWE4wWVc1alpVMWxkSEpwWXlBOUlDaDJNVG9nWVc1NUxDQjJNam9nWVc1NUtTQTlQaUFvYm5WdFltVnlLVHRjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdFZ2MybHRjR3hsSUhOMGNtbHVaeUIwYnlCemRISnBibWNnWkdsamRHbHZibUZ5ZVM1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFkSGx3WlNCVGRISnBibWRFYVdOMGFXOXVZWEo1WEc0Z0tpOWNibVY0Y0c5eWRDQjBlWEJsSUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5mVHRjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4qIFJldHVybnMgb3JkZXIgb2YgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIHNvcnRlZC5cbipcbiogQGV4cG9ydFxuKiBAcGFyYW0ge2FueVtdfSB2YWx1ZXMgSW5wdXQgYXJyYXkuXG4qIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBhcmdTb3J0KHZhbHVlcywgcmV2ZXJzZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc29ydGZuID0gcmV2ZXJzZSA/IChhLCBiKSA9PiAoYlswXSAtIGFbMF0pIDogKGEsIGIpID0+IChhWzBdIC0gYlswXSk7XG4gICAgY29uc3QgZGVjb3IgPSAodiwgaSkgPT4gW3YsIGldOyAvLyBzZXQgaW5kZXggdG8gdmFsdWVcbiAgICBjb25zdCB1bmRlY29yID0gKGEpID0+IGFbMV07IC8vIGxlYXZlIG9ubHkgaW5kZXhcbiAgICBjb25zdCBfYXJnc29ydCA9IChhcnIpID0+IGFyci5tYXAoZGVjb3IpLnNvcnQoc29ydGZuKS5tYXAodW5kZWNvcik7XG4gICAgcmV0dXJuIF9hcmdzb3J0KHZhbHVlcyk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzIGFjY29yZGluZyB0byB0aGUgZGlzdCBmdW5jdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCB0b3RhbCBudW1iZXIgb2Ygb2JqZWN0c1xuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGRpdmVyc2UgZWxlbWVudHMgdG8gZmluZFxuICogQHBhcmFtIHsoaTE6IG51bWJlciwgaTI6IG51bWJlcikgPT4gbnVtYmVyfSBkaXN0IGEgZnVuY3Rpb24gd2hpY2ggY2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIG9iamVjdHMgdXNpbmcgdGhlaXIgaW5kZXhlc1xuICogQHJldHVybnMge251bWJlcltdfSBUaGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmVyc2VTdWJzZXQobGVuZ3RoLCBuLCBkaXN0KSB7XG4gICAgZnVuY3Rpb24gbWF4QnkodmFsdWVzLCBvcmRlckJ5KSB7XG4gICAgICAgIGxldCBtYXhWYWx1ZSA9IG51bGw7XG4gICAgICAgIGxldCBtYXhPcmRlckJ5ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9yZGVyQnkgPSBvcmRlckJ5KGVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKG1heE9yZGVyQnkgPT0gbnVsbCB8fCBlbGVtZW50T3JkZXJCeSA+IG1heE9yZGVyQnkpIHtcbiAgICAgICAgICAgICAgICBtYXhWYWx1ZSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbWF4T3JkZXJCeSA9IGVsZW1lbnRPcmRlckJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgICB9XG4gICAgY29uc3Qgc3Vic2V0ID0gW3JhbmRvbUludChsZW5ndGggLSAxKV07XG4gICAgY29uc3QgY29tcGxlbWVudCA9IG5ldyBTZXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICghc3Vic2V0LmluY2x1ZGVzKGkpKVxuICAgICAgICAgICAgY29tcGxlbWVudC5hZGQoaSk7XG4gICAgfVxuICAgIHdoaWxlIChzdWJzZXQubGVuZ3RoIDwgbikge1xuICAgICAgICBjb25zdCBpZHggPSBtYXhCeShjb21wbGVtZW50LnZhbHVlcygpLCAoaSkgPT4gTWF0aC5taW4uYXBwbHkoTWF0aCwgc3Vic2V0Lm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGRpc3QoaSwgdmFsKTtcbiAgICAgICAgfSkpKTtcbiAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgc3Vic2V0LnB1c2goaWR4KTtcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuZGVsZXRlKGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1YnNldDtcbn1cbi8qKlxuICogUmV0dXJucyBub3JtYWxpemVkIHZlY3RvclxuICogQHBhcmFtIHtWZWN0b3J9IGRhdGEgbnVtZXJpY2FsIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoZGF0YSkge1xuICAgIGxldCBtZWFuID0gMDtcbiAgICBsZXQgc3RkID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIG1lYW4gKz0gZGF0YVtpXTtcbiAgICBtZWFuIC89IGRhdGEubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgc3RkICs9IChkYXRhW2ldIC0gbWVhbikgKiAoZGF0YVtpXSAtIG1lYW4pO1xuICAgIHN0ZCA9IE1hdGguc3FydChzdGQgLyBkYXRhLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBkYXRhW2ldID0gKGRhdGFbaV0gLSBtZWFuKSAvIHN0ZDtcbiAgICByZXR1cm4gZGF0YTtcbn1cbi8qKlxuICogRmluZHMgc2V0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gbGlzdHMuXG4gKiBAcGFyYW0ge2FueVtdfSBhIFRoZSBmaXJzdCBsaXN0LlxuICogQHBhcmFtIHthbnlbXX0gYiBUaGUgc2Vjb25kIGxpc3QuXG4gKiBAcmV0dXJuIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldERpZmZlcmVuY2UoYSwgYikge1xuICAgIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoYS5maWx0ZXIoKHgpID0+ICFiU2V0Lmhhcyh4KSkpLnZhbHVlcygpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5NdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoyWldOMGIzSXRiM0JsY21GMGFXOXVjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEVWQlFWTXNUVUZCVFN4RlFVRjFReXhOUVVGTkxIRkNRVUZ4UWl4RFFVRkRPMEZCUTNwR0xFOUJRVThzUlVGQlF5eFhRVUZYTEVWQlFVVXNVMEZCVXl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSV2hFT3pzN096czdPMGRCVDBjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzVFVGQlRTeERRVUZETEZsQlFYRkNMRXRCUVVzc1JVRkJSU3hWUVVGclFpeHJRa0ZCYTBJN1NVRkRja1lzU1VGQlNTeERRVUZETEZOQlFWTTdVVUZEV2l4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlF6ZENMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRk5CUVZNc1pVRkJaU3hEUVVGRExGVkJRV3RDTEVWQlFVVXNWVUZCYTBJc1JVRkJSU3hQUVVGbExFTkJRVU03U1VGREwwVXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONlJpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeGxRVUZsTEVOQlFVTXNUVUZCWXp0SlFVTTFReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNaRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM1JHTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1EwRkJVeXhGUVVGRkxFTkJRVk1zUlVGQlJTeGhRVUZ4UWl4RFFVRkRPMGxCUTNCRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkZlRUlzVFVGQlRTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxEaENRVUU0UWl4RFFVRkRMRU5CUVVNN1NVRkZNMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVYwUXl4UFFVRlBMRXRCUVVzc1EwRkJRenRCUVVObUxFTkJRVU03UVVGRlJEczdPenM3UjBGTFJ6dEJRVU5JTEZOQlFWTXNVVUZCVVN4RFFVRkRMRU5CUVZNN1NVRkRla0lzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYUVJc1QwRkJUeXhMUVVGTExFTkJRVU03UVVGRFppeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4VFFVRlRMRmxCUVZrc1EwRkJReXhEUVVGVE8wbEJRemRDTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRGVFSXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYcENMRTlCUVU4c1MwRkJTeXhEUVVGRE8wRkJRMllzUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4WlFVRlpMRU5CUVVNc1EwRkJVenRKUVVOd1F5eEpRVUZKTEUxQlFVMHNSMEZCVnl4RFFVRkRMRU5CUVVNN1NVRkRka0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCVnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMUZCUTNaRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaENMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTXpRaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFVkJRVlVzUlVGQlJTeEZRVUZWTzBsQlEzSkVMRWxCUVVrc1JVRkJSU3hEUVVGRExFMUJRVTBzU1VGQlNTeEZRVUZGTEVOQlFVTXNUVUZCVFR0UlFVTjRRaXhOUVVGTkxFdEJRVXNzUTBGQlF5dzRRMEZCT0VNc1EwRkJReXhEUVVGRE8wbEJRemxFTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRKUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRlhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRlRU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEZUVJc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3T3pzN08wZEJVVWM3UVVGRFNDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVlVGQmEwSXNSVUZCUlN4VlFVRnJRaXhGUVVGRkxGRkJRV2RDTEVWQlFVVTdTVUZEZWtZc1RVRkJUU3hOUVVGTkxFZEJRVWNzWlVGQlpTeERRVUZETEZWQlFWVXNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJRenRKUVVWMlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZPMUZCUTI1RExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETzFsQlEycERMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGNrTTdTVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTd3dRa0ZCTUVJc1EwRkJReXhEUVVGVExFVkJRVVVzUTBGQlV6dEpRVU0zUkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEUxQlFVMHNUVUZCVFN4SFFVRkhMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU5zUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEY0VNc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHdENRVUZyUWl4RFFVRkRMRWxCUVdFc1JVRkJSU3hSUVVGM1FqdEpRVU40UlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlF6TkNMRTFCUVUwc1RVRkJUU3hIUVVGSExHVkJRV1VzUTBGQlF5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSV3hFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1VVRkRMMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRia01zVFVGQlRTeERRVUZETEVkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTXhSaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVOcVF6dExRVU5HTzBsQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEd0R1FVRnJSanRCUVVOc1JpeE5RVUZOTEZWQlFWVXNVVUZCVVN4RFFVRkRMRXRCUVdFc1JVRkJSU3hIUVVGWExFVkJRVVVzV1VGQldTeEhRVUZITEV0QlFVczdTVUZEZGtVc1RVRkJUU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVVYwUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVNM1FpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVY0UWl4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVRTdPenM3T3pzN1JVRlBSVHRCUVVOSUxFMUJRVTBzVlVGQlZTeFBRVUZQTEVOQlFVTXNUVUZCWVN4RlFVRkZMRTlCUVU4c1IwRkJSeXhMUVVGTE8wbEJRM0JFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSeXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc2NVSkJRWEZDTzBsQlEyeEZMRTFCUVUwc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHRRa0ZCYlVJN1NVRkRka1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NRMEZCUXl4SFFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVNeFJTeFBRVUZQTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNeFFpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGakxFVkJRVVVzUTBGQlV5eEZRVUZGTEVsQlFYZERPMGxCUTJ4SExGTkJRVk1zUzBGQlN5eERRVUZETEUxQlFXZERMRVZCUVVVc1QwRkJPRUk3VVVGRE4wVXNTVUZCU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM0JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVWMFFpeExRVUZMTEUxQlFVMHNUMEZCVHl4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVNMVFpeE5RVUZOTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4VlFVRlZMRWxCUVVrc1NVRkJTU3hKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZWTEVWQlFVVTdaMEpCUTNKRUxGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdaMEpCUTI1Q0xGVkJRVlVzUjBGQlJ5eGpRVUZqTEVOQlFVTTdZVUZETjBJN1UwRkRSanRSUVVORUxFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlJUZENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEY2tJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMUZCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVFNFFpeEZRVU12UXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTenRaUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzU1VGQlNTeEhRVUZITEVWQlFVVTdXVUZEVUN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1MwRkRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3TzBkQlIwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1UwRkJVeXhEUVVGRExFbEJRVms3U1VGRGNFTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMklzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlZvc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVVM1F5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlc1RExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTnNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMGxCUlc1RExFOUJRVThzU1VGQlNTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVR0SlFVTTVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNKRkxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTAxaGRISnBlQ3dnVm1WamRHOXlMQ0JEYjI5eVpHbHVZWFJsY3l3Z1ZtVmpkRzl5Y3l3Z1JHbHpkR0Z1WTJWTlpYUnlhV045SUdaeWIyMGdKeTR2ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFHYkc5aGRDd2djbUZ1Wkc5dFNXNTBmU0JtY205dElDY3VMM0poYm1SdmJTYzdYRzVjYmk4cUtseHVJQ29nUVhOelpYSjBjeUJoSUdOdmJtUnBkR2x2YmlCaWVTQjBhSEp2ZDJsdVp5QmhiaUJGY25KdmNpNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRqYjI1a2FYUnBiMjQ5Wm1Gc2MyVmRJRU52Ym1ScGRHbHZiaUIwYnlCaGMzTmxjblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyMWxjM05oWjJVOUowRnpjMlZ5ZEdsdmJpQmxjbkp2Y2k0blhTQk5aWE56WVdkbElIUnZJRzkxZEhCMWRDNWNiaUFxSUVCMGFISnZkM01nZTBWeWNtOXlmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYTnpaWEowS0dOdmJtUnBkR2x2YmpvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTENCdFpYTnpZV2RsT2lCemRISnBibWNnUFNBblFYTnpaWEowYVc5dUlHVnljbTl5TGljcElIdGNiaUFnYVdZZ0tDRmpiMjVrYVhScGIyNHBYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0cxbGMzTmhaMlVwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdibVYzSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JoY25KaGVTQmhibVFnWm1sc2JITWdhWFFnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ1kyOXZjbVJwYm1GMFpYTWdLRzUxYldKbGNpQnZaaUJ5YjNkektTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JrYVcxbGJuTnBiMjR5SUZSb1pTQnpaV052Ym1RZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JR052YkhWdGJuTXBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0bWFXeHNQVEJkSUVFZ2RtRnNkV1VnZEc4Z1ptbHNiQ0IwYUdVZ1kyOXZjbVJwYm1GMFpYTWdkMmwwYUM1Y2JpQXFJRUJ5WlhSMWNtNGdlME52YjNKa2FXNWhkR1Z6ZlNCQklIUjNieTFrYVcxbGJuTnBiMjVoYkNCbWFXeHNaV1FnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLaUJBZEc5a2J5Qk5hV2RvZENCaVpTQnpiRzkzSUhOcGJtTmxJSFZ6WldRZ1FYSnlZWGt1YldGd0xpQlFjbTlpWVdKc2VTQnVaV1ZrY3lCd1pYSm1iM0p0WVc1alpTQnlaWFpwYzJsdmJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FXNXBkRU52YjNKa2FXNWhkR1Z6S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQm1hV3hzT2lCdWRXMWlaWElnUFNBd0tUb2dRMjl2Y21ScGJtRjBaWE1nZTF4dUlDQnlaWFIxY200Z2JtVjNJRUZ5Y21GNUtHUnBiV1Z1YzJsdmJqRXBMbVpwYkd3b1ptbHNiQ2t1YldGd0tDZ3BJRDArSUNodVpYY2dWbVZqZEc5eUtHUnBiV1Z1YzJsdmJqSXBMbVpwYkd3b1ptbHNiQ2twS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJVY21GdWMzQnZjMlVnYldGMGNtbDRMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3VFdGMGNtbDRmU0J0WVhSeWFYZ2dWR2hsSUcxaGRISnBlQ0IwYnlCaVpTQjBjbUZ1YzNCdmMyVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN1RXRjBjbWw0ZlNCVWNtRnVjM0J2YzJWa0lHMWhkSEpwZUM1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZEhKaGJuTndiM05sVFdGMGNtbDRLRzFoZEhKcGVEb2dUV0YwY21sNEtUb2dUV0YwY21sNElIdGNiaUFnY21WMGRYSnVJRzVsZHlCQmNuSmhlU2h0WVhSeWFYaGJNRjB1YkdWdVozUm9LUzVtYVd4c0tEQXBYRzRnSUNBZ0xtMWhjQ2dvWHl3Z2FTa2dQVDRnS0c1bGR5QldaV04wYjNJb2JXRjBjbWw0TG14bGJtZDBhQ2t1Wm1sc2JDZ3dLUzV0WVhBb0tGOHNJR29wSUQwK0lDaHRZWFJ5YVhoYmFsMWJhVjBwS1NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVGa1pITWdkSGR2SUhabFkzUnZjbk1nZDJsMGFDQjBhR1VnYzJWamIyNWtJRzl1WlNCMGJ5QmlaU0J0ZFd4MGFYQnNhV1ZrSUdKNUlIUm9aU0JuYVhabGJpQnlZWFJwYnk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQnhJRlJvWlNCelpXTnZibVFnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYlhWc2RHbHdiR2xsY2oweFhTQkJJRzExYkhScGNHeHBaWElnZEc4Z1ltVWdkWE5sWkNCaVpXWnZjbVVnZEdobElITmxZMjl1WkNCMlpXTjBiM0lnYVhNZ1lXUmtaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdFdaV04wYjNKOUlFNWxkeUIyWldOMGIzSWdZMjl1ZEdGcGJtVmtJSFJvWlNCeVpYTjFiSFFnYjJZZ2IzQmxjbUYwYVc5dUlIQXJiWFZzZEdsd2JHbGxjaXB4TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkbVZqZEc5eVFXUmtLSEE2SUZabFkzUnZjaXdnY1RvZ1ZtVmpkRzl5TENCdGRXeDBhWEJzYVdWeU9pQnVkVzFpWlhJZ1BTQXhLVG9nVm1WamRHOXlJSHRjYmlBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnY0M1c1pXNW5kR2c3WEc1Y2JpQWdZWE56WlhKMEtHNUpkR1Z0Y3lBOVBTQnhMbXhsYm1kMGFDd2dKMVpsWTNSdmNpQnNaVzVuZEdoeklHUnZJRzV2ZENCdFlYUmphQzRuS1R0Y2JseHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIQXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0J3VzJsZElDc2diWFZzZEdsd2JHbGxjaUFxSUhGYmFWMDdYRzVjYmlBZ2NtVjBkWEp1SUhSdmRHRnNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTjFiWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdZbVVnYzNWdGJXVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCVWFHVWdkbVZqZEc5eUozTWdhWFJsYlhNZ2MzVnRMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBkR1Z0YzFOMWJTaDJPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdkRzkwWVd3Z1BTQXdPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJDQXJQU0IyVzJsZE8xeHVYRzRnSUhKbGRIVnliaUIwYjNSaGJEdGNibjFjYmx4dUx5b3FYRzRnS2lCVGRYRmhjbVZ6SUhSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnZGlCVWFHVWdkbVZqZEc5eUlIUnZJSE54ZFdGeVpTNWNiaUFxSUVCeVpYUjFjbTRnZTFabFkzUnZjbjBnUVNCdVpYY2dkbVZqZEc5eUlHTnZiblJoYVc1cGJtY2dkR2hsSUc5eWFXZHBibUZzSjNNZ2FYUmxiWE1nYzNGMVlYSmxaQzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbVZqZEc5eVUzRjFZWEpsS0hZNklGWmxZM1J2Y2lrNklGWmxZM1J2Y2lCN1hHNGdJR052Ym5OMElHNUpkR1Z0Y3lBOUlIWXViR1Z1WjNSb08xeHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0IyVzJsZElDb2dkbHRwWFR0Y2JseHVJQ0J5WlhSMWNtNGdkRzkwWVd3N1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSk1aVzVuZEdnb2Rqb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnYkdWMElITnhjbE4xYlRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnWm05eUlDaHNaWFFnYVRvZ2JuVnRZbVZ5SUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ2MzRnlVM1Z0SUNzOUlIWmJhVjBnS2lCMlcybGRPMXh1SUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOeGNsTjFiU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKRWIzUlFjbTlrZFdOMEtIWXhPaUJXWldOMGIzSXNJSFl5T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvZGpFdWJHVnVaM1JvSUNFOUlIWXlMbXhsYm1kMGFDbGNiaUFnSUNCMGFISnZkeUJGY25KdmNpZ25WR2hsSUdScGJXVnVjMmx2Ym1Gc2FYUjVJRzltSUhSb1pTQjJaV04wYjNKeklHMTFjM1FnYldGMFkyZ25LVHRjYmlBZ2JHVjBJSEJ5YjJRNklHNTFiV0psY2lBOUlEQTdYRzRnSUdadmNpQW9iR1YwSUdrNklHNTFiV0psY2lBOUlEQTdJR2tnUENCMk1TNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQndjbTlrSUNzOUlIWXhXMmxkSUNvZ2RqSmJhVjA3WEc0Z0lISmxkSFZ5YmlCd2NtOWtPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQnRZWFJ5YVhnZ1ptbHNiR1ZrSUhkcGRHZ2djbUZ1Wkc5dElHWnNiMkYwYVc1bklIQnZhVzUwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCdFlYUnlhWGd1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1pQlVhR1VnYzJWamIyNWtJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdiV0YwY21sNExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR6WTJGc1pUMHhMbDBnVFdGNElIWmhiSFZsSUdkcGRtVnVJR0o1SUhKaGJtUnZiU0JuWlc1bGNtRjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlFRWdibVYzSUcxaGRISnBlQ0JtYVd4c1pXUWdkMmwwYUNCeVlXNWtiMjBnWm14dllYUnBibWNnY0c5cGJuUWdJSFpoYkhWbGN5NWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdacGJHeFNZVzVrYjIxTllYUnlhWGdvWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lITmpZV3hsT2lCdWRXMWlaWElnUFNBeExpazZJRTFoZEhKcGVDQjdYRzRnSUdOdmJuTjBJRzFoZEhKcGVDQTlJR2x1YVhSRGIyOXlaR2x1WVhSbGN5aGthVzFsYm5OcGIyNHhMQ0JrYVcxbGJuTnBiMjR5S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdScGJXVnVjMmx2YmpFN0lDc3JhU2tnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnFJRHdnWkdsdFpXNXphVzl1TWpzZ0t5dHFLVnh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2NtRnVaRzl0Um14dllYUW9jMk5oYkdVcE8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCdFlYUnlhWGc3WEc1OVhHNWNiaThxS2x4dUlDb2dRMkZzWTNWc1lYUmxjeUJGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUIwZDI4Z2RtVmpkRzl5Y3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEVnVkdobElITmxZMjl1WkNCMlpXTjBiM0l1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlFVjFZMnhwWkdWaGJpQmthWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aU0JuYVhabGJpQjJaV04wYjNKekxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvY0RvZ1ZtVmpkRzl5TENCeE9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JqYjI1emRDQmthV1ptSUQwZ2RtVmpkRzl5UVdSa0tIQXNJSEVzSUMweEtUdGNiaUFnWTI5dWMzUWdjM0ZrYVdabUlEMGdkbVZqZEc5eVUzRjFZWEpsS0dScFptWXBPMXh1SUNCamIyNXpkQ0J6Y1dScFptWlRkVzF0SUQwZ2FYUmxiWE5UZFcwb2MzRmthV1ptS1R0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1YzNGeWRDaHpjV1JwWm1aVGRXMXRLVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkRjbVZoZEdWeklHRWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIVnphVzVuSUdFZ1kzVnpkRzl0SUdScGMzUmhibU5sSUdaMWJtTjBhVzl1TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5YzMwZ1pHRjBZU0JKYm5CMWRDQjJaV04wYjNKeklIUnZJR05oYkdOMWJHRjBaU0JrYVhOMFlXNWpaWE11WEc0Z0tpQkFjR0Z5WVcwZ2UwUnBjM1JoYm1ObFRXVjBjbWxqZlNCa2FYTjBZVzVqWlNCRGRYTjBiMjBnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjR1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlFTmhiR04xYkdGMFpXUWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHMWhkSEpwZUM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR05oYkdORWFYTjBZVzVqWlUxaGRISnBlQ2hrWVhSaE9pQldaV04wYjNKekxDQmthWE4wWVc1alpUb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNcE9pQk5ZWFJ5YVhnZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmtZWFJoTG14bGJtZDBhRHRjYmlBZ1kyOXVjM1FnYldGMGNtbDRJRDBnYVc1cGRFTnZiM0prYVc1aGRHVnpLRzVKZEdWdGN5d2dia2wwWlcxekxDQXdLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJRzVKZEdWdGN6c2dLeXRwS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYWlBOUlHa2dLeUF4T3lCcUlEd2dia2wwWlcxek95QXJLMm9wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1E2SUc1MWJXSmxjaUE5SUNoa1lYUmhXMmxkSUQwOUlHNTFiR3dwSUh4OElDaGtZWFJoVzJwZElEMDlJRzUxYkd3cElEOGdNQ0E2SUdScGMzUmhibU5sS0dSaGRHRmJhVjBzSUdSaGRHRmJhbDBwTzF4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdiV0YwY21sNFcycGRXMmxkSUQwZ1pEdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUcxaGRISnBlRHRjYm4xY2JseHVMeW9xSUVkbGJtVnlZWFJsY3lCaGNuSmhlU0JtY205dElHRWdjbUZ1WjJVZ1cySmxaMmx1T3lCbGJtUmRJRzl5SUZ0aVpXZHBianNnWlc1a0tTQnBaaUJsYm1SRmVHTnNkWE5wZG1VdUlDb3FMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsYmxKaGJtZGxLR0psWjJsdU9pQnVkVzFpWlhJc0lHVnVaRG9nYm5WdFltVnlMQ0JsYm1SRmVHTnNkWE5wZG1VZ1BTQm1ZV3h6WlNrNklFbHVkRE15UVhKeVlYa2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JsYm1RZ0xTQmlaV2RwYmlBcklDaGxibVJGZUdOc2RYTnBkbVVnUHlBd0lEb2dNU2s3WEc0Z0lHTnZibk4wSUhObGNtbGxjeUE5SUc1bGR5QkpiblF6TWtGeWNtRjVLRzVKZEdWdGN5azdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVTWFJsYlhNN0lDc3JhU2xjYmlBZ0lDQnpaWEpwWlhOYmFWMGdQU0JpWldkcGJpQXJJR2s3WEc1Y2JpQWdjbVYwZFhKdUlITmxjbWxsY3p0Y2JuMWNibHh1SUM4cUtseHVJQ29nVW1WMGRYSnVjeUJ2Y21SbGNpQnZaaUIyWVd4MVpYTWdZWE1nYVdZZ2RHaGxlU0JoY21VZ2MyOXlkR1ZrTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUhaaGJIVmxjeUJKYm5CMWRDQmhjbkpoZVM1Y2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXM0psZG1WeWMyVTlabUZzYzJWZElGZG9aWFJvWlhJZ2RHOGdjbVYwZFhKdUlISmxkbVZ5YzJWa0lHOXlaR1Z5TGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeVcxMTlJRlJvWlNCdmNtUmxjaUJqYjIxd2RYUmxaQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHRnlaMU52Y25Rb2RtRnNkV1Z6T2lCaGJubGJYU3dnY21WMlpYSnpaU0E5SUdaaGJITmxLVG9nYm5WdFltVnlXMTBnZTF4dUlDQmpiMjV6ZENCemIzSjBabTRnUFNCeVpYWmxjbk5sSUQ4Z0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dKYk1GMGdMU0JoV3pCZEtTQTZJQ2hoT2lCaGJubGJYU3dnWWpvZ1lXNTVXMTBwSUQwK0lDaGhXekJkSUMwZ1lsc3dYU2s3WEc0Z0lHTnZibk4wSUdSbFkyOXlJRDBnS0hZNklHRnVlU3dnYVRvZ2JuVnRZbVZ5S1NBOVBpQmJkaXdnYVYwN0lDOHZJSE5sZENCcGJtUmxlQ0IwYnlCMllXeDFaVnh1SUNCamIyNXpkQ0IxYm1SbFkyOXlJRDBnS0dFNklHRnVlVnRkS1NBOVBpQmhXekZkT3lBdkx5QnNaV0YyWlNCdmJteDVJR2x1WkdWNFhHNGdJR052Ym5OMElGOWhjbWR6YjNKMElEMGdLR0Z5Y2pvZ1lXNTVXMTBwSUQwK0lHRnljaTV0WVhBb1pHVmpiM0lwTG5OdmNuUW9jMjl5ZEdadUtTNXRZWEFvZFc1a1pXTnZjaWs3WEc0Z0lISmxkSFZ5YmlCZllYSm5jMjl5ZENoMllXeDFaWE1wTzF4dWZWeHVYRzR2S2lwY2JpQXFJRkpsZEhWeWJuTWdkR2hsSUdsdVpHVjRaWE1nYjJZZ2RHaGxJRzF2YzNRZ1pHbDJaWEp6WlNCdlltcGxZM1J6SUdGalkyOXlaR2x1WnlCMGJ5QjBhR1VnWkdsemRDQm1kVzVqZEdsdmJseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR3hsYm1kMGFDQjBiM1JoYkNCdWRXMWlaWElnYjJZZ2IySnFaV04wYzF4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHNGdiblZ0WW1WeUlHOW1JR1JwZG1WeWMyVWdaV3hsYldWdWRITWdkRzhnWm1sdVpGeHVJQ29nUUhCaGNtRnRJSHNvYVRFNklHNTFiV0psY2l3Z2FUSTZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlmU0JrYVhOMElHRWdablZ1WTNScGIyNGdkMmhwWTJnZ1kyRnNZM1ZzWVhSbGN5QmthWE4wWVc1alpTQmlaWFIzWldWdVhHNGdLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RIZHZJRzlpYW1WamRITWdkWE5wYm1jZ2RHaGxhWElnYVc1a1pYaGxjMXh1SUNvZ1FISmxkSFZ5Ym5NZ2UyNTFiV0psY2x0ZGZTQlVhR1VnYVc1a1pYaGxjeUJ2WmlCMGFHVWdiVzl6ZENCa2FYWmxjbk5sSUc5aWFtVmpkSE5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRVJwZG1WeWMyVlRkV0p6WlhRb2JHVnVaM1JvT2lCdWRXMWlaWElzSUc0NklHNTFiV0psY2l3Z1pHbHpkRG9nS0dreE9pQnVkVzFpWlhJc0lHa3lPaUJ1ZFcxaVpYSXBJRDArSUc1MWJXSmxjaWs2SUc1MWJXSmxjbHRkSUh0Y2JpQWdablZ1WTNScGIyNGdiV0Y0UW5rb2RtRnNkV1Z6T2lCSmRHVnlZV0pzWlVsMFpYSmhkRzl5UEc1MWJXSmxjajRzSUc5eVpHVnlRbms2SUNocE9pQnVkVzFpWlhJcElEMCtJRzUxYldKbGNpa2dlMXh1SUNBZ0lHeGxkQ0J0WVhoV1lXeDFaU0E5SUc1MWJHdzdYRzRnSUNBZ2JHVjBJRzFoZUU5eVpHVnlRbmtnUFNCdWRXeHNPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JsYkdWdFpXNTBJRzltSUhaaGJIVmxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdaV3hsYldWdWRFOXlaR1Z5UW5rZ1BTQnZjbVJsY2tKNUtHVnNaVzFsYm5RcE8xeHVJQ0FnSUNBZ2FXWWdLRzFoZUU5eVpHVnlRbmtnUFQwZ2JuVnNiQ0I4ZkNCbGJHVnRaVzUwVDNKa1pYSkNlU0ErSUcxaGVFOXlaR1Z5UW5rcElIdGNiaUFnSUNBZ0lDQWdiV0Y0Vm1Gc2RXVWdQU0JsYkdWdFpXNTBPMXh1SUNBZ0lDQWdJQ0J0WVhoUGNtUmxja0o1SUQwZ1pXeGxiV1Z1ZEU5eVpHVnlRbms3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdFlYaFdZV3gxWlR0Y2JpQWdmVnh1WEc0Z0lHTnZibk4wSUhOMVluTmxkQ0E5SUZ0eVlXNWtiMjFKYm5Rb2JHVnVaM1JvSUMwZ01TbGRPMXh1SUNCamIyNXpkQ0JqYjIxd2JHVnRaVzUwSUQwZ2JtVjNJRk5sZENncE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQnBaaUFvSVhOMVluTmxkQzVwYm1Oc2RXUmxjeWhwS1NsY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdVlXUmtLR2twTzF4dUlDQjlYRzVjYmlBZ2QyaHBiR1VnS0hOMVluTmxkQzVzWlc1bmRHZ2dQQ0J1S1NCN1hHNGdJQ0FnWTI5dWMzUWdhV1I0SUQwZ2JXRjRRbmtvWEc0Z0lDQWdJQ0JqYjIxd2JHVnRaVzUwTG5aaGJIVmxjeWdwSUdGeklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl4Y2JpQWdJQ0FnSUNocEtTQTlQaUJOWVhSb0xtMXBiaTVoY0hCc2VTaE5ZWFJvTENCemRXSnpaWFF1YldGd0tHWjFibU4wYVc5dUtIWmhiQ3dnYVc1a1pYZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1JwYzNRb2FTd2dkbUZzS1R0Y2JpQWdJQ0FnSUgwcEtTazdYRzRnSUNBZ2FXWWdLR2xrZUNrZ2UxeHVJQ0FnSUNBZ2MzVmljMlYwTG5CMWMyZ29hV1I0S1R0Y2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdVpHVnNaWFJsS0dsa2VDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCemRXSnpaWFE3WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QnViM0p0WVd4cGVtVmtJSFpsWTNSdmNseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJR1JoZEdFZ2JuVnRaWEpwWTJGc0lHRnljbUY1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnViM0p0WVd4cGVtVW9aR0YwWVRvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdiR1YwSUcxbFlXNGdQU0F3TzF4dUlDQnNaWFFnYzNSa0lEMGdNRHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2JXVmhiaUFyUFNCa1lYUmhXMmxkTzF4dVhHNGdJRzFsWVc0Z0x6MGdaR0YwWVM1c1pXNW5kR2c3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lITjBaQ0FyUFNBb1pHRjBZVnRwWFNBdElHMWxZVzRwSUNvZ0tHUmhkR0ZiYVYwZ0xTQnRaV0Z1S1R0Y2JseHVJQ0J6ZEdRZ1BTQk5ZWFJvTG5OeGNuUW9jM1JrSUM4Z1pHRjBZUzVzWlc1bmRHZ3BPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2daR0YwWVM1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCa1lYUmhXMmxkSUQwZ0tHUmhkR0ZiYVYwZ0xTQnRaV0Z1S1NBdklITjBaRHRjYmx4dUlDQnlaWFIxY200Z1pHRjBZVHRjYm4xY2JseHVMeW9xWEc0Z0tpQkdhVzVrY3lCelpYUWdaR2xtWm1WeVpXNWpaU0JpWlhSM1pXVnVJSFIzYnlCc2FYTjBjeTVjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdFZ1ZHaGxJR1pwY25OMElHeHBjM1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyRnVlVnRkZlNCaUlGUm9aU0J6WldOdmJtUWdiR2x6ZEM1Y2JpQXFJRUJ5WlhSMWNtNGdlMkZ1ZVZ0ZGZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYzJWMFJHbG1abVZ5Wlc1alpTaGhPaUJoYm5sYlhTd2dZam9nWVc1NVcxMHBPaUJoYm5sYlhTQjdYRzRnSUdOdmJuTjBJR0pUWlhRZ1BTQnVaWGNnVTJWMEtHSXBPMXh1SUNCeVpYUjFjbTRnUVhKeVlYa3Vabkp2YlNodVpYY2dVMlYwS0dFdVptbHNkR1Z5S0NoNEtTQTlQaUFoWWxObGRDNW9ZWE1vZUNrcEtTNTJZV3gxWlhNb0tTazdYRzU5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcbmNvbnN0IHBlcSA9IG5ldyBVaW50MzJBcnJheSgweDEwMDAwKTtcbmNvbnN0IG15ZXJzXzMyID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbiA9IGEubGVuZ3RoO1xuICBjb25zdCBtID0gYi5sZW5ndGg7XG4gIGNvbnN0IGxzdCA9IDEgPDwgKG4gLSAxKTtcbiAgbGV0IHB2ID0gLTE7XG4gIGxldCBtdiA9IDA7XG4gIGxldCBzYyA9IG47XG4gIGxldCBpID0gbjtcbiAgd2hpbGUgKGktLSkge1xuICAgIHBlcVthLmNoYXJDb2RlQXQoaSldIHw9IDEgPDwgaTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgbGV0IGVxID0gcGVxW2IuY2hhckNvZGVBdChpKV07XG4gICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgIGVxIHw9ICgoZXEgJiBwdikgKyBwdikgXiBwdjtcbiAgICBtdiB8PSB+KGVxIHwgcHYpO1xuICAgIHB2ICY9IGVxO1xuICAgIGlmIChtdiAmIGxzdCkge1xuICAgICAgc2MrKztcbiAgICB9XG4gICAgaWYgKHB2ICYgbHN0KSB7XG4gICAgICBzYy0tO1xuICAgIH1cbiAgICBtdiA9IChtdiA8PCAxKSB8IDE7XG4gICAgcHYgPSAocHYgPDwgMSkgfCB+KHh2IHwgbXYpO1xuICAgIG12ICY9IHh2O1xuICB9XG4gIGkgPSBuO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgcGVxW2EuY2hhckNvZGVBdChpKV0gPSAwO1xuICB9XG4gIHJldHVybiBzYztcbn07XG5cbmNvbnN0IG15ZXJzX3ggPSAoYSwgYikgPT4ge1xuICBjb25zdCBuID0gYS5sZW5ndGg7XG4gIGNvbnN0IG0gPSBiLmxlbmd0aDtcbiAgY29uc3QgbWhjID0gW107XG4gIGNvbnN0IHBoYyA9IFtdO1xuICBjb25zdCBoc2l6ZSA9IE1hdGguY2VpbChuIC8gMzIpO1xuICBjb25zdCB2c2l6ZSA9IE1hdGguY2VpbChtIC8gMzIpO1xuICBsZXQgc2NvcmUgPSBtO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGhzaXplOyBpKyspIHtcbiAgICBwaGNbaV0gPSAtMTtcbiAgICBtaGNbaV0gPSAwO1xuICB9XG4gIGxldCBqID0gMDtcbiAgZm9yICg7IGogPCB2c2l6ZSAtIDE7IGorKykge1xuICAgIGxldCBtdiA9IDA7XG4gICAgbGV0IHB2ID0gLTE7XG4gICAgY29uc3Qgc3RhcnQgPSBqICogMzI7XG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4oMzIsIG0pICsgc3RhcnQ7XG4gICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICAgIHBlcVtiLmNoYXJDb2RlQXQoayldIHw9IDEgPDwgaztcbiAgICB9XG4gICAgc2NvcmUgPSBtO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb25zdCBlcSA9IHBlcVthLmNoYXJDb2RlQXQoaSldO1xuICAgICAgY29uc3QgcGIgPSAocGhjWyhpIC8gMzIpIHwgMF0gPj4+IGkpICYgMTtcbiAgICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgICBjb25zdCB4diA9IGVxIHwgbXY7XG4gICAgICBjb25zdCB4aCA9ICgoKChlcSB8IG1iKSAmIHB2KSArIHB2KSBeIHB2KSB8IGVxIHwgbWI7XG4gICAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgICBsZXQgbWggPSBwdiAmIHhoO1xuICAgICAgaWYgKChwaCA+Pj4gMzEpIF4gcGIpIHtcbiAgICAgICAgcGhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgfVxuICAgICAgaWYgKChtaCA+Pj4gMzEpIF4gbWIpIHtcbiAgICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgICAgfVxuICAgICAgcGggPSAocGggPDwgMSkgfCBwYjtcbiAgICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgICBwdiA9IG1oIHwgfih4diB8IHBoKTtcbiAgICAgIG12ID0gcGggJiB4djtcbiAgICB9XG4gICAgZm9yIChsZXQgayA9IHN0YXJ0OyBrIDwgZW5kOyBrKyspIHtcbiAgICAgIHBlcVtiLmNoYXJDb2RlQXQoayldID0gMDtcbiAgICB9XG4gIH1cbiAgbGV0IG12ID0gMDtcbiAgbGV0IHB2ID0gLTE7XG4gIGNvbnN0IHN0YXJ0ID0gaiAqIDMyO1xuICBjb25zdCBlbmQgPSBNYXRoLm1pbigzMiwgbSAtIHN0YXJ0KSArIHN0YXJ0O1xuICBmb3IgKGxldCBrID0gc3RhcnQ7IGsgPCBlbmQ7IGsrKykge1xuICAgIHBlcVtiLmNoYXJDb2RlQXQoayldIHw9IDEgPDwgaztcbiAgfVxuICBzY29yZSA9IG07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgY29uc3QgZXEgPSBwZXFbYS5jaGFyQ29kZUF0KGkpXTtcbiAgICBjb25zdCBwYiA9IChwaGNbKGkgLyAzMikgfCAwXSA+Pj4gaSkgJiAxO1xuICAgIGNvbnN0IG1iID0gKG1oY1soaSAvIDMyKSB8IDBdID4+PiBpKSAmIDE7XG4gICAgY29uc3QgeHYgPSBlcSB8IG12O1xuICAgIGNvbnN0IHhoID0gKCgoKGVxIHwgbWIpICYgcHYpICsgcHYpIF4gcHYpIHwgZXEgfCBtYjtcbiAgICBsZXQgcGggPSBtdiB8IH4oeGggfCBwdik7XG4gICAgbGV0IG1oID0gcHYgJiB4aDtcbiAgICBzY29yZSArPSAocGggPj4+IChtIC0gMSkpICYgMTtcbiAgICBzY29yZSAtPSAobWggPj4+IChtIC0gMSkpICYgMTtcbiAgICBpZiAoKHBoID4+PiAzMSkgXiBwYikge1xuICAgICAgcGhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgIH1cbiAgICBpZiAoKG1oID4+PiAzMSkgXiBtYikge1xuICAgICAgbWhjWyhpIC8gMzIpIHwgMF0gXj0gMSA8PCBpO1xuICAgIH1cbiAgICBwaCA9IChwaCA8PCAxKSB8IHBiO1xuICAgIG1oID0gKG1oIDw8IDEpIHwgbWI7XG4gICAgcHYgPSBtaCB8IH4oeHYgfCBwaCk7XG4gICAgbXYgPSBwaCAmIHh2O1xuICB9XG4gIGZvciAobGV0IGsgPSBzdGFydDsgayA8IGVuZDsgaysrKSB7XG4gICAgcGVxW2IuY2hhckNvZGVBdChrKV0gPSAwO1xuICB9XG4gIHJldHVybiBzY29yZTtcbn07XG5cbmNvbnN0IGRpc3RhbmNlID0gKGEsIGIpID0+IHtcbiAgaWYgKGEubGVuZ3RoID4gYi5sZW5ndGgpIHtcbiAgICBjb25zdCB0bXAgPSBiO1xuICAgIGIgPSBhO1xuICAgIGEgPSB0bXA7XG4gIH1cbiAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGIubGVuZ3RoO1xuICB9XG4gIGlmIChhLmxlbmd0aCA8PSAzMikge1xuICAgIHJldHVybiBteWVyc18zMihhLCBiKTtcbiAgfVxuICByZXR1cm4gbXllcnNfeChhLCBiKTtcbn07XG5cbmNvbnN0IGNsb3Nlc3QgPSAoc3RyLCBhcnIpID0+IHtcbiAgbGV0IG1pbl9kaXN0YW5jZSA9IEluZmluaXR5O1xuICBsZXQgbWluX2luZGV4ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBkaXN0ID0gZGlzdGFuY2Uoc3RyLCBhcnJbaV0pO1xuICAgIGlmIChkaXN0IDwgbWluX2Rpc3RhbmNlKSB7XG4gICAgICBtaW5fZGlzdGFuY2UgPSBkaXN0O1xuICAgICAgbWluX2luZGV4ID0gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyclttaW5faW5kZXhdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNsb3Nlc3QsIGRpc3RhbmNlXG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIFJlZmVyZW5jZTogaHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcvamFyby1hbmQtamFyby13aW5rbGVyLXNpbWlsYXJpdHkvXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmphcm9XaW5rbGVyID0gZXhwb3J0cy5qYXJvID0gdm9pZCAwO1xuLyoqXG4gKlxuICogQHBhcmFtIHN0cjEgU3RyaW5nIDEgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBzdHIyIFN0cmluZyAyIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gb3B0aW9ucyB0byBjb250cm9sIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBqYXJvKHN0cjEsIHN0cjIsIG9wdGlvbnMpIHtcbiAgICAvLyBFeGl0IGVhcmx5IGlmIGVpdGhlciBhcmUgZW1wdHkuXG4gICAgaWYgKHN0cjEubGVuZ3RoID09PSAwIHx8IHN0cjIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBDb252ZXJ0IHRvIHVwcGVyIGlmIGNhc2Utc2Vuc2l0aXZlIGlzIGZhbHNlLlxuICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgc3RyMSA9IHN0cjEudG9VcHBlckNhc2UoKTtcbiAgICAgICAgc3RyMiA9IHN0cjIudG9VcHBlckNhc2UoKTtcbiAgICB9XG4gICAgLy8gRXhhY3QgbWF0Y2hcbiAgICBpZiAoc3RyMSA9PT0gc3RyMikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgLy8gTnVtYmVyIG9mIG1hdGNoZXNcbiAgICB2YXIgbSA9IDA7XG4gICAgLy8gTGVuZ3RoIG9mIHR3byBTdHJpbmdzXG4gICAgdmFyIGxlbjEgPSBzdHIxLmxlbmd0aDtcbiAgICB2YXIgbGVuMiA9IHN0cjIubGVuZ3RoO1xuICAgIC8vIE1heGltdW0gZGlzdGFuY2VcbiAgICB2YXIgd2luZG93ID0gTWF0aC5mbG9vcihNYXRoLm1heChsZW4xLCBsZW4yKSAvIDIpIC0gMTtcbiAgICAvLyBIYXNoIGZvciBtYXRjaGVzXG4gICAgdmFyIHN0cjFIYXNoID0gbmV3IEFycmF5KGxlbjEpO1xuICAgIHZhciBzdHIySGFzaCA9IG5ldyBBcnJheShsZW4yKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgaSAtIHdpbmRvdyk7IGogPD0gTWF0aC5taW4obGVuMiwgaSArIHdpbmRvdyArIDEpOyBqKyspIHtcbiAgICAgICAgICAgIGlmICghc3RyMUhhc2hbaV0gJiYgIXN0cjJIYXNoW2pdICYmIHN0cjFbaV0gPT09IHN0cjJbal0pIHtcbiAgICAgICAgICAgICAgICArK207XG4gICAgICAgICAgICAgICAgc3RyMUhhc2hbaV0gPSBzdHIySGFzaFtqXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdCBlYXJseSBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQuXG4gICAgaWYgKG0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIC8vIENvdW50IHRoZSB0cmFuc3Bvc2l0aW9ucy5cbiAgICB2YXIgdCA9IDA7XG4gICAgdmFyIHBvaW50ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgICAgICBpZiAoc3RyMUhhc2hbaV0pIHtcbiAgICAgICAgICAgIHdoaWxlICghc3RyMkhhc2hbcG9pbnRdKSB7XG4gICAgICAgICAgICAgICAgcG9pbnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHIxLmNoYXJBdChpKSAhPT0gc3RyMi5jaGFyQXQocG9pbnQrKykpIHtcbiAgICAgICAgICAgICAgICB0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdCAvPSAyO1xuICAgIHJldHVybiAobSAvIGxlbjEgKyBtIC8gbGVuMiArIChtIC0gdCkgLyBtKSAvIDM7XG59XG5leHBvcnRzLmphcm8gPSBqYXJvO1xuLyoqXG4gKlxuICogQHBhcmFtIHN0cjEgU3RyaW5nIDEgZm9yIGNvbXBhcmVcbiAqIEBwYXJhbSBzdHIyIFN0cmluZyAyIGZvciBjb21wYXJlXG4gKiBAcGFyYW0gb3B0aW9ucyB0byBjb250cm9sIGNhc2Ugc2Vuc2l0aXZlIG9yIG5vdFxuICovXG5mdW5jdGlvbiBqYXJvV2lua2xlcihzdHIxLCBzdHIyLCBvcHRpb25zKSB7XG4gICAgLy8gSmFybyBEaXN0YW5jZVxuICAgIHZhciBqYXJvRGlzdCA9IGphcm8oc3RyMSwgc3RyMiwgb3B0aW9ucyk7XG4gICAgLy8gU2FtZSBwcmVmaXggbGVuZ3RoLCBtYXhpdW0gaXMgNFxuICAgIHZhciBwcmVmaXggPSAwO1xuICAgIGlmIChqYXJvRGlzdCA+IDAuNykge1xuICAgICAgICB2YXIgbWluSW5kZXggPSBNYXRoLm1pbihzdHIxLmxlbmd0aCwgc3RyMi5sZW5ndGgpO1xuICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgIHdoaWxlIChzdHIxW2ldID09PSBzdHIyW2ldICYmIGkgPCA0ICYmIGkgPCBtaW5JbmRleCkge1xuICAgICAgICAgICAgKytwcmVmaXg7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgamFyb0Rpc3QgKz0gMC4xICogcHJlZml4ICogKDEgLSBqYXJvRGlzdCk7XG4gICAgfVxuICAgIHJldHVybiBqYXJvRGlzdDtcbn1cbmV4cG9ydHMuamFyb1dpbmtsZXIgPSBqYXJvV2lua2xlcjtcbiIsImNsYXNzIENlbGwge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gMDtcbiAgICAgICAgdGhpcy5wYXJlbnRJID0gMDtcbiAgICAgICAgdGhpcy5wYXJlbnRKID0gMDtcbiAgICB9XG59XG47XG5leHBvcnQgY2xhc3MgQWxpZ25lZCB7XG4gICAgY29uc3RydWN0b3Ioc2VxMV8sIHNlcTJfLCBzY29yZV8pIHtcbiAgICAgICAgdGhpcy5zZXExID0gc2VxMV87XG4gICAgICAgIHRoaXMuc2VxMiA9IHNlcTJfO1xuICAgICAgICB0aGlzLnNjb3JlID0gc2NvcmVfO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZUFsaWdubWVudCB7XG4gICAgY29uc3RydWN0b3Ioc2VxMV8sIHNlcTJfLCBnYXBfLCBhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICB0aGlzLnNlcTEgPSAnJztcbiAgICAgICAgdGhpcy5zZXEyID0gJyc7XG4gICAgICAgIHRoaXMuZ2FwID0gMTtcbiAgICAgICAgdGhpcy5sZW4xID0gMDtcbiAgICAgICAgdGhpcy5sZW4yID0gMDtcbiAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSBbXTtcbiAgICAgICAgdGhpcy5zY29yZXMgPSBbXTtcbiAgICAgICAgdGhpcy5kcEdyaWQgPSBbXTtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLkJMT1NVTTQ1ID0gW1s1LCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgMCwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgMCwgLTEsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAzLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMSwgLTIsIC0xLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCA2LCAyLCAtMiwgMCwgMCwgMCwgMSwgLTIsIC0zLCAwLCAtMiwgLTIsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCA0LCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgMiwgNywgLTMsIDAsIDIsIC0xLCAwLCAtNCwgLTMsIDAsIC0zLCAtNCwgLTEsIDAsIC0xLCAtNCwgLTIsIC0zLCA1LCAxLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0zLCAxMiwgLTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTQsIC0xLCAtMSwgLTUsIC0zLCAtMSwgLTIsIC0zLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNiwgMiwgLTIsIDEsIC0yLCAtMiwgMSwgMCwgLTQsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMywgMCwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTMsIDIsIDYsIC0yLCAwLCAtMywgLTIsIDEsIC0yLCAtMywgMCwgMCwgLTEsIC0zLCAtMiwgLTMsIDEsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA3LCAtMiwgLTQsIC0zLCAtMiwgLTIsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgMCwgLTMsIDEsIDAsIC0yLCAxMCwgLTMsIC0yLCAtMSwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMywgMCwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtNCwgLTMsIC0yLCAtMywgLTQsIC0zLCA1LCAyLCAtMywgMiwgMCwgLTIsIC0yLCAtMSwgLTIsIDAsIDMsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0zLCAtMywgLTIsIC0yLCAtMiwgLTMsIC0yLCAyLCA1LCAtMywgMiwgMSwgLTMsIC0zLCAtMSwgLTIsIDAsIDEsIC0zLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgMCwgLTMsIDEsIDEsIC0yLCAtMSwgLTMsIC0zLCA1LCAtMSwgLTMsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTIsIDAsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIDAsIDIsIDIsIC0xLCA2LCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMSwgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTIsIC00LCAtMiwgLTQsIC0zLCAtMywgLTIsIDAsIDEsIC0zLCAwLCA4LCAtMywgLTIsIC0xLCAxLCAzLCAwLCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC00LCAtMSwgMCwgLTIsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTMsIDksIC0xLCAtMSwgLTMsIC0zLCAtMywgLTIsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgMCwgMCwgLTEsIC0yLCAtMywgLTEsIC0yLCAtMiwgLTEsIDQsIDIsIC00LCAtMiwgLTEsIDAsIDAsIDAsIC01XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMiwgNSwgLTMsIC0xLCAwLCAwLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTQsIC00LCAtNSwgLTIsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTIsIC0yLCAxLCAtMywgLTQsIC0zLCAxNSwgMywgLTMsIC00LCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0yLCAtMiwgLTMsIC0xLCAtMiwgLTMsIDIsIDAsIDAsIC0xLCAwLCAzLCAtMywgLTIsIC0xLCAzLCA4LCAtMSwgLTIsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTMsIC0xLCAtMywgLTMsIC0zLCAtMywgMywgMSwgLTIsIDEsIDAsIC0zLCAtMSwgMCwgLTMsIC0xLCA1LCAtMywgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCA0LCA1LCAtMiwgMCwgMSwgLTEsIDAsIC0zLCAtMywgMCwgLTIsIC0zLCAtMiwgMCwgMCwgLTQsIC0yLCAtMywgNCwgMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDQsIDQsIC0yLCAwLCAtMywgLTIsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMiwgLTIsIC0zLCAyLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTUwID0gW1s1LCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0zLCAtMSwgMSwgMCwgLTMsIC0yLCAwLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDcsIC0xLCAtMiwgLTQsIDEsIDAsIC0zLCAwLCAtNCwgLTMsIDMsIC0yLCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMywgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCA3LCAyLCAtMiwgMCwgMCwgMCwgMSwgLTMsIC00LCAwLCAtMiwgLTQsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCA0LCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMiwgMiwgOCwgLTQsIDAsIDIsIC0xLCAtMSwgLTQsIC00LCAtMSwgLTQsIC01LCAtMSwgMCwgLTEsIC01LCAtMywgLTQsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMiwgLTQsIDEzLCAtMywgLTMsIC0zLCAtMywgLTIsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMywgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA3LCAyLCAtMiwgMSwgLTMsIC0yLCAyLCAwLCAtNCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTMsIDAsIC00LCAtMywgMSwgLTIsIC0zLCAtMSwgLTEsIC0xLCAtMywgLTIsIC0zLCAxLCA1LCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtMSwgLTMsIC0yLCAtMywgOCwgLTIsIC00LCAtNCwgLTIsIC0zLCAtNCwgLTIsIDAsIC0yLCAtMywgLTMsIC00LCAtMSwgLTIsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIC0xLCAtMywgMSwgMCwgLTIsIDEwLCAtNCwgLTMsIDAsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTMsIDIsIC00LCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTMsIC00LCAtMiwgLTMsIC00LCAtNCwgLTQsIDUsIDIsIC0zLCAyLCAwLCAtMywgLTMsIC0xLCAtMywgLTEsIDQsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTQsIC0zLCAyLCA1LCAtMywgMywgMSwgLTQsIC0zLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDMsIDAsIC0xLCAtMywgMiwgMSwgLTIsIDAsIC0zLCAtMywgNiwgLTIsIC00LCAtMSwgMCwgLTEsIC0zLCAtMiwgLTMsIDAsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTQsIC0yLCAwLCAtMiwgLTMsIC0xLCAyLCAzLCAtMiwgNywgMCwgLTMsIC0yLCAtMSwgLTEsIDAsIDEsIC0zLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTIsIC00LCAtMywgLTQsIC0xLCAwLCAxLCAtNCwgMCwgOCwgLTQsIC0zLCAtMiwgMSwgNCwgLTEsIC00LCAtNCwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0yLCAtMSwgLTQsIC0xLCAtMSwgLTIsIC0yLCAtMywgLTQsIC0xLCAtMywgLTQsIDEwLCAtMSwgLTEsIC00LCAtMywgLTMsIC0yLCAtMSwgLTIsIC01XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIC0xLCAwLCAtMSwgLTMsIC0zLCAwLCAtMiwgLTMsIC0xLCA1LCAyLCAtNCwgLTIsIC0yLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAyLCA1LCAtMywgLTIsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTUsIC01LCAtMSwgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTEsIDEsIC00LCAtNCwgLTMsIDE1LCAyLCAtMywgLTUsIC0yLCAtMywgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgMiwgLTEsIC0xLCAtMiwgMCwgNCwgLTMsIC0yLCAtMiwgMiwgOCwgLTEsIC0zLCAtMiwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC00LCAtMSwgLTMsIC0zLCAtNCwgLTQsIDQsIDEsIC0zLCAxLCAtMSwgLTMsIC0yLCAwLCAtMywgLTEsIDUsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDQsIDUsIC0zLCAwLCAxLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0yLCAwLCAwLCAtNSwgLTMsIC00LCA1LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTEsIC00LCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIDAsIC0zLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU02MiA9IFtbNCwgLTEsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgMCwgLTMsIC0yLCAwLCAtMiwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMSwgNSwgMCwgLTIsIC0zLCAxLCAwLCAtMiwgMCwgLTMsIC0yLCAyLCAtMSwgLTMsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTMsIC0xLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAwLCA2LCAxLCAtMywgMCwgMCwgMCwgMSwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAxLCAwLCAtNCwgLTIsIC0zLCAzLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMiwgMSwgNiwgLTMsIDAsIDIsIC0xLCAtMSwgLTMsIC00LCAtMSwgLTMsIC0zLCAtMSwgMCwgLTEsIC00LCAtMywgLTMsIDQsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtMywgOSwgLTMsIC00LCAtMywgLTMsIC0xLCAtMSwgLTMsIC0xLCAtMiwgLTMsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTMsIC0zLCAtMiwgLTRdLFxuICAgICAgICAgICAgWy0xLCAxLCAwLCAwLCAtMywgNSwgMiwgLTIsIDAsIC0zLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMiwgMCwgMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMiwgLTQsIDIsIDUsIC0yLCAwLCAtMywgLTMsIDEsIC0yLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMSwgLTMsIC0yLCAtMiwgNiwgLTIsIC00LCAtNCwgLTIsIC0zLCAtMywgLTIsIDAsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDEsIC0xLCAtMywgMCwgMCwgLTIsIDgsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTIsIC0xLCAtMiwgLTIsIDIsIC0zLCAwLCAwLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtMSwgLTMsIC0zLCAtNCwgLTMsIDQsIDIsIC0zLCAxLCAwLCAtMywgLTIsIC0xLCAtMywgLTEsIDMsIC0zLCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0zLCAtNCwgLTEsIC0yLCAtMywgLTQsIC0zLCAyLCA0LCAtMiwgMiwgMCwgLTMsIC0yLCAtMSwgLTIsIC0xLCAxLCAtNCwgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDIsIDAsIC0xLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTIsIDUsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAwLCAxLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTIsIC0zLCAtMSwgMCwgLTIsIC0zLCAtMiwgMSwgMiwgLTEsIDUsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgMSwgLTMsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC0zLCAtMiwgLTMsIC0zLCAtMywgLTEsIDAsIDAsIC0zLCAwLCA2LCAtNCwgLTIsIC0yLCAxLCAzLCAtMSwgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0xLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtNCwgNywgLTEsIC0xLCAtNCwgLTMsIC0yLCAtMiwgLTEsIC0yLCAtNF0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0yLCAwLCAtMSwgLTIsIC0xLCA0LCAxLCAtMywgLTIsIC0yLCAwLCAwLCAwLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDEsIDUsIC0yLCAtMiwgMCwgLTEsIC0xLCAwLCAtNF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAtNCwgLTQsIC0yLCAtMiwgLTMsIC0yLCAtMiwgLTMsIC0yLCAtMywgLTEsIDEsIC00LCAtMywgLTIsIDExLCAyLCAtMywgLTQsIC0zLCAtMiwgLTRdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTIsIC0zLCAtMiwgLTEsIC0yLCAtMywgMiwgLTEsIC0xLCAtMiwgLTEsIDMsIC0zLCAtMiwgLTIsIDIsIDcsIC0xLCAtMywgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgLTMsIC0zLCAzLCAxLCAtMiwgMSwgLTEsIC0yLCAtMiwgMCwgLTMsIC0xLCA0LCAtMywgLTIsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0xLCAzLCA0LCAtMywgMCwgMSwgLTEsIDAsIC0zLCAtNCwgMCwgLTMsIC0zLCAtMiwgMCwgLTEsIC00LCAtMywgLTMsIDQsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCAzLCA0LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTMsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMiwgMSwgNCwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIDAsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIDFdXTtcbiAgICAgICAgdGhpcy5CTE9TVU04MCA9IFtbNywgLTMsIC0zLCAtMywgLTEsIC0yLCAtMiwgMCwgLTMsIC0zLCAtMywgLTEsIC0yLCAtNCwgLTEsIDIsIDAsIC01LCAtNCwgLTEsIC0zLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMywgOSwgLTEsIC0zLCAtNiwgMSwgLTEsIC00LCAwLCAtNSwgLTQsIDMsIC0zLCAtNSwgLTMsIC0yLCAtMiwgLTUsIC00LCAtNCwgLTIsIDAsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0xLCA5LCAyLCAtNSwgMCwgLTEsIC0xLCAxLCAtNiwgLTYsIDAsIC00LCAtNiwgLTQsIDEsIDAsIC03LCAtNCwgLTUsIDUsIC0xLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtMywgMiwgMTAsIC03LCAtMSwgMiwgLTMsIC0yLCAtNywgLTcsIC0yLCAtNiwgLTYsIC0zLCAtMSwgLTIsIC04LCAtNiwgLTYsIDYsIDEsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC02LCAtNSwgLTcsIDEzLCAtNSwgLTcsIC02LCAtNywgLTIsIC0zLCAtNiwgLTMsIC00LCAtNiwgLTIsIC0yLCAtNSwgLTUsIC0yLCAtNiwgLTcsIC00LCAtOF0sXG4gICAgICAgICAgICBbLTIsIDEsIDAsIC0xLCAtNSwgOSwgMywgLTQsIDEsIC01LCAtNCwgMiwgLTEsIC01LCAtMywgLTEsIC0xLCAtNCwgLTMsIC00LCAtMSwgNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTEsIC0xLCAyLCAtNywgMywgOCwgLTQsIDAsIC02LCAtNiwgMSwgLTQsIC02LCAtMiwgLTEsIC0yLCAtNiwgLTUsIC00LCAxLCA2LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC00LCAtMSwgLTMsIC02LCAtNCwgLTQsIDksIC00LCAtNywgLTcsIC0zLCAtNSwgLTYsIC01LCAtMSwgLTMsIC02LCAtNiwgLTYsIC0yLCAtNCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMywgMCwgMSwgLTIsIC03LCAxLCAwLCAtNCwgMTIsIC02LCAtNSwgLTEsIC00LCAtMiwgLTQsIC0yLCAtMywgLTQsIDMsIC01LCAtMSwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTUsIC02LCAtNywgLTIsIC01LCAtNiwgLTcsIC02LCA3LCAyLCAtNSwgMiwgLTEsIC01LCAtNCwgLTIsIC01LCAtMywgNCwgLTYsIC02LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTYsIC03LCAtMywgLTQsIC02LCAtNywgLTUsIDIsIDYsIC00LCAzLCAwLCAtNSwgLTQsIC0zLCAtNCwgLTIsIDEsIC03LCAtNSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTIsIC02LCAyLCAxLCAtMywgLTEsIC01LCAtNCwgOCwgLTMsIC01LCAtMiwgLTEsIC0xLCAtNiwgLTQsIC00LCAtMSwgMSwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTMsIC00LCAtNiwgLTMsIC0xLCAtNCwgLTUsIC00LCAyLCAzLCAtMywgOSwgMCwgLTQsIC0zLCAtMSwgLTMsIC0zLCAxLCAtNSwgLTMsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNiwgLTYsIC00LCAtNSwgLTYsIC02LCAtMiwgLTEsIDAsIC01LCAwLCAxMCwgLTYsIC00LCAtNCwgMCwgNCwgLTIsIC02LCAtNiwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC00LCAtMywgLTYsIC0zLCAtMiwgLTUsIC00LCAtNSwgLTUsIC0yLCAtNCwgLTYsIDEyLCAtMiwgLTMsIC03LCAtNiwgLTQsIC00LCAtMiwgLTMsIC04XSxcbiAgICAgICAgICAgIFsyLCAtMiwgMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMiwgLTQsIC00LCAtMSwgLTMsIC00LCAtMiwgNywgMiwgLTYsIC0zLCAtMywgMCwgLTEsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0yLCAtMiwgLTEsIC0yLCAtMywgLTMsIC0yLCAtMywgLTEsIC0xLCAtNCwgLTMsIDIsIDgsIC01LCAtMywgMCwgLTEsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTcsIC04LCAtNSwgLTQsIC02LCAtNiwgLTQsIC01LCAtNCwgLTYsIC0zLCAwLCAtNywgLTYsIC01LCAxNiwgMywgLTUsIC04LCAtNSwgLTUsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTQsIC00LCAtNiwgLTUsIC0zLCAtNSwgLTYsIDMsIC0zLCAtMiwgLTQsIC0zLCA0LCAtNiwgLTMsIC0zLCAzLCAxMSwgLTMsIC01LCAtNCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC01LCAtNiwgLTIsIC00LCAtNCwgLTYsIC01LCA0LCAxLCAtNCwgMSwgLTIsIC00LCAtMywgMCwgLTUsIC0zLCA3LCAtNiwgLTQsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0yLCA1LCA2LCAtNiwgLTEsIDEsIC0yLCAtMSwgLTYsIC03LCAtMSwgLTUsIC02LCAtNCwgMCwgLTEsIC04LCAtNSwgLTYsIDYsIDAsIC0zLCAtOF0sXG4gICAgICAgICAgICBbLTIsIDAsIC0xLCAxLCAtNywgNSwgNiwgLTQsIDAsIC02LCAtNSwgMSwgLTMsIC02LCAtMiwgLTEsIC0yLCAtNSwgLTQsIC00LCAwLCA2LCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMSwgLTUsIC0zLCAtMiwgLTMsIC0xLCAtMiwgLThdLFxuICAgICAgICAgICAgWy04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTkwID0gW1s1LCAtMiwgLTIsIC0zLCAtMSwgLTEsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMSwgMSwgMCwgLTQsIC0zLCAtMSwgLTIsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCA2LCAtMSwgLTMsIC01LCAxLCAtMSwgLTMsIDAsIC00LCAtMywgMiwgLTIsIC00LCAtMywgLTEsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDcsIDEsIC00LCAwLCAtMSwgLTEsIDAsIC00LCAtNCwgMCwgLTMsIC00LCAtMywgMCwgMCwgLTUsIC0zLCAtNCwgNCwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC0zLCAxLCA3LCAtNSwgLTEsIDEsIC0yLCAtMiwgLTUsIC01LCAtMSwgLTQsIC01LCAtMywgLTEsIC0yLCAtNiwgLTQsIC01LCA0LCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTQsIC01LCA5LCAtNCwgLTYsIC00LCAtNSwgLTIsIC0yLCAtNCwgLTIsIC0zLCAtNCwgLTIsIC0yLCAtNCwgLTQsIC0yLCAtNCwgLTUsIC0zLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIC0xLCAtNCwgNywgMiwgLTMsIDEsIC00LCAtMywgMSwgMCwgLTQsIC0yLCAtMSwgLTEsIC0zLCAtMywgLTMsIC0xLCA0LCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDEsIC02LCAyLCA2LCAtMywgLTEsIC00LCAtNCwgMCwgLTMsIC01LCAtMiwgLTEsIC0xLCAtNSwgLTQsIC0zLCAwLCA0LCAtMiwgLTZdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIDYsIC0zLCAtNSwgLTUsIC0yLCAtNCwgLTUsIC0zLCAtMSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgMCwgMCwgLTIsIC01LCAxLCAtMSwgLTMsIDgsIC00LCAtNCwgLTEsIC0zLCAtMiwgLTMsIC0yLCAtMiwgLTMsIDEsIC00LCAtMSwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC00LCAtNSwgLTIsIC00LCAtNCwgLTUsIC00LCA1LCAxLCAtNCwgMSwgLTEsIC00LCAtMywgLTEsIC00LCAtMiwgMywgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC01LCAtMiwgLTMsIC00LCAtNSwgLTQsIDEsIDUsIC0zLCAyLCAwLCAtNCwgLTMsIC0yLCAtMywgLTIsIDAsIC01LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC00LCAxLCAwLCAtMiwgLTEsIC00LCAtMywgNiwgLTIsIC00LCAtMiwgLTEsIC0xLCAtNSwgLTMsIC0zLCAtMSwgMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIC0zLCAtNCwgLTIsIDAsIC0zLCAtNCwgLTMsIDEsIDIsIC0yLCA3LCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0yLCAwLCAtNCwgLTIsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNCwgLTUsIC0zLCAtNCwgLTUsIC01LCAtMiwgLTEsIDAsIC00LCAtMSwgNywgLTQsIC0zLCAtMywgMCwgMywgLTIsIC00LCAtNCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgLTMsIC0zLCAtMywgLTQsIC0yLCAtMiwgLTMsIC0zLCAtNCwgLTQsIC0yLCAtMywgLTQsIDgsIC0yLCAtMiwgLTUsIC00LCAtMywgLTMsIC0yLCAtMiwgLTZdLFxuICAgICAgICAgICAgWzEsIC0xLCAwLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTMsIC0yLCA1LCAxLCAtNCwgLTMsIC0yLCAwLCAtMSwgLTEsIC02XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTEsIC0zLCAtMiwgLTEsIC0yLCAtMSwgLTEsIC0zLCAtMiwgMSwgNiwgLTQsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTUsIC02LCAtNCwgLTMsIC01LCAtNCwgLTMsIC00LCAtMywgLTUsIC0yLCAwLCAtNSwgLTQsIC00LCAxMSwgMiwgLTMsIC02LCAtNCwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIC0zLCAtNCwgLTQsIC0zLCAtNCwgLTUsIDEsIC0yLCAtMiwgLTMsIC0yLCAzLCAtNCwgLTMsIC0yLCAyLCA4LCAtMywgLTQsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC01LCAtMiwgLTMsIC0zLCAtNSwgLTQsIDMsIDAsIC0zLCAwLCAtMiwgLTMsIC0yLCAtMSwgLTMsIC0zLCA1LCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0yLCA0LCA0LCAtNCwgLTEsIDAsIC0yLCAtMSwgLTUsIC01LCAtMSwgLTQsIC00LCAtMywgMCwgLTEsIC02LCAtNCwgLTQsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIDAsIC0xLCAwLCAtNSwgNCwgNCwgLTMsIDAsIC00LCAtNCwgMSwgLTIsIC00LCAtMiwgLTEsIC0xLCAtNCwgLTMsIC0zLCAwLCA0LCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgMV1dO1xuICAgICAgICB0aGlzLk5VQ0xFT1RJREVTID0gW1sxLCAtMSwgLTEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgMSwgLTEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgLTEsIDEsIC0xXSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAxXV07XG4gICAgICAgIHRoaXMuUEFNMzAgPSBbWzYsIC03LCAtNCwgLTMsIC02LCAtNCwgLTIsIC0yLCAtNywgLTUsIC02LCAtNywgLTUsIC04LCAtMiwgMCwgLTEsIC0xMywgLTgsIC0yLCAtMywgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy03LCA4LCAtNiwgLTEwLCAtOCwgLTIsIC05LCAtOSwgLTIsIC01LCAtOCwgMCwgLTQsIC05LCAtNCwgLTMsIC02LCAtMiwgLTEwLCAtOCwgLTcsIC00LCAtNiwgLTE3XSxcbiAgICAgICAgICAgIFstNCwgLTYsIDgsIDIsIC0xMSwgLTMsIC0yLCAtMywgMCwgLTUsIC03LCAtMSwgLTksIC05LCAtNiwgMCwgLTIsIC04LCAtNCwgLTgsIDYsIC0zLCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTEwLCAyLCA4LCAtMTQsIC0yLCAyLCAtMywgLTQsIC03LCAtMTIsIC00LCAtMTEsIC0xNSwgLTgsIC00LCAtNSwgLTE1LCAtMTEsIC04LCA2LCAxLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC0xMSwgLTE0LCAxMCwgLTE0LCAtMTQsIC05LCAtNywgLTYsIC0xNSwgLTE0LCAtMTMsIC0xMywgLTgsIC0zLCAtOCwgLTE1LCAtNCwgLTYsIC0xMiwgLTE0LCAtOSwgLTE3XSxcbiAgICAgICAgICAgIFstNCwgLTIsIC0zLCAtMiwgLTE0LCA4LCAxLCAtNywgMSwgLTgsIC01LCAtMywgLTQsIC0xMywgLTMsIC01LCAtNSwgLTEzLCAtMTIsIC03LCAtMywgNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC05LCAtMiwgMiwgLTE0LCAxLCA4LCAtNCwgLTUsIC01LCAtOSwgLTQsIC03LCAtMTQsIC01LCAtNCwgLTYsIC0xNywgLTgsIC02LCAxLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0zLCAtMywgLTksIC03LCAtNCwgNiwgLTksIC0xMSwgLTEwLCAtNywgLTgsIC05LCAtNiwgLTIsIC02LCAtMTUsIC0xNCwgLTUsIC0zLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTcsIC0yLCAwLCAtNCwgLTcsIDEsIC01LCAtOSwgOSwgLTksIC02LCAtNiwgLTEwLCAtNiwgLTQsIC02LCAtNywgLTcsIC0zLCAtNiwgLTEsIC0xLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNSwgLTUsIC01LCAtNywgLTYsIC04LCAtNSwgLTExLCAtOSwgOCwgLTEsIC02LCAtMSwgLTIsIC04LCAtNywgLTIsIC0xNCwgLTYsIDIsIC02LCAtNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTYsIC04LCAtNywgLTEyLCAtMTUsIC01LCAtOSwgLTEwLCAtNiwgLTEsIDcsIC04LCAxLCAtMywgLTcsIC04LCAtNywgLTYsIC03LCAtMiwgLTksIC03LCAtNiwgLTE3XSxcbiAgICAgICAgICAgIFstNywgMCwgLTEsIC00LCAtMTQsIC0zLCAtNCwgLTcsIC02LCAtNiwgLTgsIDcsIC0yLCAtMTQsIC02LCAtNCwgLTMsIC0xMiwgLTksIC05LCAtMiwgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNCwgLTksIC0xMSwgLTEzLCAtNCwgLTcsIC04LCAtMTAsIC0xLCAxLCAtMiwgMTEsIC00LCAtOCwgLTUsIC00LCAtMTMsIC0xMSwgLTEsIC0xMCwgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy04LCAtOSwgLTksIC0xNSwgLTEzLCAtMTMsIC0xNCwgLTksIC02LCAtMiwgLTMsIC0xNCwgLTQsIDksIC0xMCwgLTYsIC05LCAtNCwgMiwgLTgsIC0xMCwgLTEzLCAtOCwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC02LCAtOCwgLTgsIC0zLCAtNSwgLTYsIC00LCAtOCwgLTcsIC02LCAtOCwgLTEwLCA4LCAtMiwgLTQsIC0xNCwgLTEzLCAtNiwgLTcsIC00LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFswLCAtMywgMCwgLTQsIC0zLCAtNSwgLTQsIC0yLCAtNiwgLTcsIC04LCAtNCwgLTUsIC02LCAtMiwgNiwgMCwgLTUsIC03LCAtNiwgLTEsIC01LCAtMywgLTE3XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC0yLCAtNSwgLTgsIC01LCAtNiwgLTYsIC03LCAtMiwgLTcsIC0zLCAtNCwgLTksIC00LCAwLCA3LCAtMTMsIC02LCAtMywgLTMsIC02LCAtNCwgLTE3XSxcbiAgICAgICAgICAgIFstMTMsIC0yLCAtOCwgLTE1LCAtMTUsIC0xMywgLTE3LCAtMTUsIC03LCAtMTQsIC02LCAtMTIsIC0xMywgLTQsIC0xNCwgLTUsIC0xMywgMTMsIC01LCAtMTUsIC0xMCwgLTE0LCAtMTEsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC0xMCwgLTQsIC0xMSwgLTQsIC0xMiwgLTgsIC0xNCwgLTMsIC02LCAtNywgLTksIC0xMSwgMiwgLTEzLCAtNywgLTYsIC01LCAxMCwgLTcsIC02LCAtOSwgLTcsIC0xN10sXG4gICAgICAgICAgICBbLTIsIC04LCAtOCwgLTgsIC02LCAtNywgLTYsIC01LCAtNiwgMiwgLTIsIC05LCAtMSwgLTgsIC02LCAtNiwgLTMsIC0xNSwgLTcsIDcsIC04LCAtNiwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC03LCA2LCA2LCAtMTIsIC0zLCAxLCAtMywgLTEsIC02LCAtOSwgLTIsIC0xMCwgLTEwLCAtNywgLTEsIC0zLCAtMTAsIC02LCAtOCwgNiwgMCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgMSwgLTE0LCA2LCA2LCAtNSwgLTEsIC02LCAtNywgLTQsIC01LCAtMTMsIC00LCAtNSwgLTYsIC0xNCwgLTksIC02LCAwLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTYsIC0zLCAtNSwgLTksIC01LCAtNSwgLTUsIC01LCAtNSwgLTYsIC01LCAtNSwgLTgsIC01LCAtMywgLTQsIC0xMSwgLTcsIC01LCAtNSwgLTUsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAxXV07XG4gICAgICAgIHRoaXMuUEFNNzAgPSBbWzUsIC00LCAtMiwgLTEsIC00LCAtMiwgLTEsIDAsIC00LCAtMiwgLTQsIC00LCAtMywgLTYsIDAsIDEsIDEsIC05LCAtNSwgLTEsIC0xLCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDgsIC0zLCAtNiwgLTUsIDAsIC01LCAtNiwgMCwgLTMsIC02LCAyLCAtMiwgLTcsIC0yLCAtMSwgLTQsIDAsIC03LCAtNSwgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIDYsIDMsIC03LCAtMSwgMCwgLTEsIDEsIC0zLCAtNSwgMCwgLTUsIC02LCAtMywgMSwgMCwgLTYsIC0zLCAtNSwgNSwgLTEsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNiwgMywgNiwgLTksIDAsIDMsIC0xLCAtMSwgLTUsIC04LCAtMiwgLTcsIC0xMCwgLTQsIC0xLCAtMiwgLTEwLCAtNywgLTUsIDUsIDIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNSwgLTcsIC05LCA5LCAtOSwgLTksIC02LCAtNSwgLTQsIC0xMCwgLTksIC05LCAtOCwgLTUsIC0xLCAtNSwgLTExLCAtMiwgLTQsIC04LCAtOSwgLTYsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIDAsIC0xLCAwLCAtOSwgNywgMiwgLTQsIDIsIC01LCAtMywgLTEsIC0yLCAtOSwgLTEsIC0zLCAtMywgLTgsIC04LCAtNCwgLTEsIDUsIC0yLCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgMCwgMywgLTksIDIsIDYsIC0yLCAtMiwgLTQsIC02LCAtMiwgLTQsIC05LCAtMywgLTIsIC0zLCAtMTEsIC02LCAtNCwgMiwgNSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbMCwgLTYsIC0xLCAtMSwgLTYsIC00LCAtMiwgNiwgLTYsIC02LCAtNywgLTUsIC02LCAtNywgLTMsIDAsIC0zLCAtMTAsIC05LCAtMywgLTEsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgMCwgMSwgLTEsIC01LCAyLCAtMiwgLTYsIDgsIC02LCAtNCwgLTMsIC02LCAtNCwgLTIsIC0zLCAtNCwgLTUsIC0xLCAtNCwgMCwgMSwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTUsIC00LCAtNSwgLTQsIC02LCAtNiwgNywgMSwgLTQsIDEsIDAsIC01LCAtNCwgLTEsIC05LCAtNCwgMywgLTQsIC00LCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNCwgLTYsIC01LCAtOCwgLTEwLCAtMywgLTYsIC03LCAtNCwgMSwgNiwgLTUsIDIsIC0xLCAtNSwgLTYsIC00LCAtNCwgLTQsIDAsIC02LCAtNCwgLTQsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIDIsIDAsIC0yLCAtOSwgLTEsIC0yLCAtNSwgLTMsIC00LCAtNSwgNiwgMCwgLTksIC00LCAtMiwgLTEsIC03LCAtNywgLTYsIC0xLCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTMsIC0yLCAtNSwgLTcsIC05LCAtMiwgLTQsIC02LCAtNiwgMSwgMiwgMCwgMTAsIC0yLCAtNSwgLTMsIC0yLCAtOCwgLTcsIDAsIC02LCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTYsIC03LCAtNiwgLTEwLCAtOCwgLTksIC05LCAtNywgLTQsIDAsIC0xLCAtOSwgLTIsIDgsIC03LCAtNCwgLTYsIC0yLCA0LCAtNSwgLTcsIC05LCAtNSwgLTExXSxcbiAgICAgICAgICAgIFswLCAtMiwgLTMsIC00LCAtNSwgLTEsIC0zLCAtMywgLTIsIC01LCAtNSwgLTQsIC01LCAtNywgNywgMCwgLTIsIC05LCAtOSwgLTMsIC00LCAtMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIC0xLCAtMSwgLTMsIC0yLCAwLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAwLCA1LCAyLCAtMywgLTUsIC0zLCAwLCAtMiwgLTEsIC0xMV0sXG4gICAgICAgICAgICBbMSwgLTQsIDAsIC0yLCAtNSwgLTMsIC0zLCAtMywgLTQsIC0xLCAtNCwgLTEsIC0yLCAtNiwgLTIsIDIsIDYsIC04LCAtNCwgLTEsIC0xLCAtMywgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTksIDAsIC02LCAtMTAsIC0xMSwgLTgsIC0xMSwgLTEwLCAtNSwgLTksIC00LCAtNywgLTgsIC0yLCAtOSwgLTMsIC04LCAxMywgLTMsIC0xMCwgLTcsIC0xMCwgLTcsIC0xMV0sXG4gICAgICAgICAgICBbLTUsIC03LCAtMywgLTcsIC0yLCAtOCwgLTYsIC05LCAtMSwgLTQsIC00LCAtNywgLTcsIDQsIC05LCAtNSwgLTQsIC0zLCA5LCAtNSwgLTQsIC03LCAtNSwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTUsIC01LCAtNSwgLTQsIC00LCAtNCwgLTMsIC00LCAzLCAwLCAtNiwgMCwgLTUsIC0zLCAtMywgLTEsIC0xMCwgLTUsIDYsIC01LCAtNCwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC00LCA1LCA1LCAtOCwgLTEsIDIsIC0xLCAwLCAtNCwgLTYsIC0xLCAtNiwgLTcsIC00LCAwLCAtMSwgLTcsIC00LCAtNSwgNSwgMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMSwgMiwgLTksIDUsIDUsIC0zLCAxLCAtNCwgLTQsIC0yLCAtMywgLTksIC0yLCAtMiwgLTMsIC0xMCwgLTcsIC00LCAxLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0yLCAtMywgLTYsIC0yLCAtMywgLTMsIC0zLCAtMywgLTQsIC0zLCAtMywgLTUsIC0zLCAtMSwgLTIsIC03LCAtNSwgLTIsIC0yLCAtMywgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0yNTAgPSBbWzIsIC0yLCAwLCAwLCAtMiwgMCwgMCwgMSwgLTEsIC0xLCAtMiwgLTEsIC0xLCAtMywgMSwgMSwgMSwgLTYsIC0zLCAwLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbLTIsIDYsIDAsIC0xLCAtNCwgMSwgLTEsIC0zLCAyLCAtMiwgLTMsIDMsIDAsIC00LCAwLCAwLCAtMSwgMiwgLTQsIC0yLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAwLCAyLCAyLCAtNCwgMSwgMSwgMCwgMiwgLTIsIC0zLCAxLCAtMiwgLTMsIDAsIDEsIDAsIC00LCAtMiwgLTIsIDIsIDEsIDAsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMiwgNCwgLTUsIDIsIDMsIDEsIDEsIC0yLCAtNCwgMCwgLTMsIC02LCAtMSwgMCwgMCwgLTcsIC00LCAtMiwgMywgMywgLTEsIC04XSxcbiAgICAgICAgICAgIFstMiwgLTQsIC00LCAtNSwgMTIsIC01LCAtNSwgLTMsIC0zLCAtMiwgLTYsIC01LCAtNSwgLTQsIC0zLCAwLCAtMiwgLTgsIDAsIC0yLCAtNCwgLTUsIC0zLCAtOF0sXG4gICAgICAgICAgICBbMCwgMSwgMSwgMiwgLTUsIDQsIDIsIC0xLCAzLCAtMiwgLTIsIDEsIC0xLCAtNSwgMCwgLTEsIC0xLCAtNSwgLTQsIC0yLCAxLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAxLCAzLCAtNSwgMiwgNCwgMCwgMSwgLTIsIC0zLCAwLCAtMiwgLTUsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzEsIC0zLCAwLCAxLCAtMywgLTEsIDAsIDUsIC0yLCAtMywgLTQsIC0yLCAtMywgLTUsIDAsIDEsIDAsIC03LCAtNSwgLTEsIDAsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIDIsIDIsIDEsIC0zLCAzLCAxLCAtMiwgNiwgLTIsIC0yLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgLTMsIDAsIC0yLCAxLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMywgLTIsIDUsIDIsIC0yLCAyLCAxLCAtMiwgLTEsIDAsIC01LCAtMSwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTMsIC00LCAtNiwgLTIsIC0zLCAtNCwgLTIsIDIsIDYsIC0zLCA0LCAyLCAtMywgLTMsIC0yLCAtMiwgLTEsIDIsIC0zLCAtMywgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMywgMSwgMCwgLTUsIDEsIDAsIC0yLCAwLCAtMiwgLTMsIDUsIDAsIC01LCAtMSwgMCwgMCwgLTMsIC00LCAtMiwgMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTIsIC0zLCAtNSwgLTEsIC0yLCAtMywgLTIsIDIsIDQsIDAsIDYsIDAsIC0yLCAtMiwgLTEsIC00LCAtMiwgMiwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNCwgLTMsIC02LCAtNCwgLTUsIC01LCAtNSwgLTIsIDEsIDIsIC01LCAwLCA5LCAtNSwgLTMsIC0zLCAwLCA3LCAtMSwgLTQsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWzEsIDAsIDAsIC0xLCAtMywgMCwgLTEsIDAsIDAsIC0yLCAtMywgLTEsIC0yLCAtNSwgNiwgMSwgMCwgLTYsIC01LCAtMSwgLTEsIDAsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMSwgMCwgMCwgLTEsIDAsIDEsIC0xLCAtMSwgLTMsIDAsIC0yLCAtMywgMSwgMiwgMSwgLTIsIC0zLCAtMSwgMCwgMCwgMCwgLThdLFxuICAgICAgICAgICAgWzEsIC0xLCAwLCAwLCAtMiwgLTEsIDAsIDAsIC0xLCAwLCAtMiwgMCwgLTEsIC0zLCAwLCAxLCAzLCAtNSwgLTMsIDAsIDAsIC0xLCAwLCAtOF0sXG4gICAgICAgICAgICBbLTYsIDIsIC00LCAtNywgLTgsIC01LCAtNywgLTcsIC0zLCAtNSwgLTIsIC0zLCAtNCwgMCwgLTYsIC0yLCAtNSwgMTcsIDAsIC02LCAtNSwgLTYsIC00LCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMiwgLTQsIDAsIC00LCAtNCwgLTUsIDAsIC0xLCAtMSwgLTQsIC0yLCA3LCAtNSwgLTMsIC0zLCAwLCAxMCwgLTIsIC0zLCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTIsIDQsIDIsIC0yLCAyLCAtMSwgLTEsIC0xLCAwLCAtNiwgLTIsIDQsIC0yLCAtMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMSwgMiwgMywgLTQsIDEsIDMsIDAsIDEsIC0yLCAtMywgMSwgLTIsIC00LCAtMSwgMCwgMCwgLTUsIC0zLCAtMiwgMywgMiwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAwLCAxLCAzLCAtNSwgMywgMywgMCwgMiwgLTIsIC0zLCAwLCAtMiwgLTUsIDAsIDAsIC0xLCAtNiwgLTQsIC0yLCAyLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAwLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuU0NITkVJREVSID0gW1sxMS42LCAtMi43LCA5LjcsIC0xLjcsIC0yLjcsIC02LjQsIC0zLjksIC01LjYsIDUuMSwgLTUuMCwgMy42LCAtNC4yLCAtNi4zLCAtMTMuMCwgLTcuMSwgLTExLjUsIDAuNCwgLTYuMCwgLTEuOSwgLTUuMywgLTguNSwgLTExLjIsIC04LjksIC0xMC44LCAyLjEsIDAuMCwgMS40LCAwLjIsIC0xMC4yLCAtMTMuNSwgLTEzLjAsIC0xMi41LCAtMi42LCAtOC41LCAtNS4wLCAtOC4xLCAtNi4zLCAtOS45LCAtNy41LCAtOS4wLCAtNy4xLCAtMTAuMiwgLTguMiwgLTkuMiwgLTguMiwgLTEyLjUsIC0xMS4xLCAtMTEuNCwgLTUwLjAsIC0xNC44LCAtNTAuMCwgLTEzLjgsIC03LjMsIC0xMC4xLCAtOC40LCAtOS4xLCAtNTAuMCwgLTEzLjAsIC0xMy41LCAtMTIuNCwgLTEwLjcsIC0xOC4xLCAtMTEuOCwgLTE3LjIsXSxcbiAgICAgICAgICAgIFstMi43LCAxMy4wLCAtMy4zLCAxMC45LCAtMy41LCAtMC40LCAtMy4zLCAtMS44LCAtNS40LCA0LjYsIC01LjUsIDMuMCwgLTEwLjIsIC03LjksIC05LjksIC05LjYsIC01LjAsIDAuNSwgLTUuNSwgLTEuMCwgLTEwLjMsIC04LjEsIC05LjQsIC05LjYsIC04LjEsIC01LjAsIC03LjMsIC02LjMsIC0xMy40LCAtMTEuMywgLTE0LjQsIC0xMi45LCAtNi4zLCAwLjgsIC02LjQsIC0xLjEsIC03LjQsIC01LjAsIC02LjIsIC02LjUsIC01LjYsIC0xLjYsIC00LjcsIC0zLjAsIC0xMC44LCAtOC43LCAtMTEuOSwgLTEwLjAsIC01MC4wLCAtNi4yLCAtNTAuMCwgLTcuNSwgLTYuMywgLTQuMywgLTYuMiwgLTUuNCwgLTUwLjAsIC03LjAsIC0xNi4zLCAtOC4yLCAtMTMuMiwgLTEyLjMsIC0xMy4xLCAtMTMuMyxdLFxuICAgICAgICAgICAgWzkuNywgLTMuMywgMTEuNiwgLTIuOCwgLTQuNSwgLTYuNywgLTMuMSwgLTYuOSwgMy4zLCAtNS41LCA0LjgsIC01LjEsIC04LjksIC0xMy4yLCAtNS43LCAtMTIuNiwgLTEuNSwgLTYuMSwgLTAuNiwgLTYuMSwgLTEwLjAsIC0xMS44LCAtOC42LCAtMTEuOSwgMS4yLCAwLjUsIDIuMiwgMC4xLCAtMTEuOCwgLTE0LjAsIC0xMS45LCAtMTMuNCwgLTQuOSwgLTkuMSwgLTMuNCwgLTguOSwgLTguMCwgLTEwLjAsIC03LjIsIC0xMC4wLCAtOS4xLCAtMTAuMiwgLTcuMSwgLTkuOSwgLTEwLjEsIC0xMy4wLCAtMTAuNiwgLTEyLjcsIC01MC4wLCAtMTQuOSwgLTUwLjAsIC0xNC40LCAtOC45LCAtMTAuOCwgLTguOSwgLTEwLjQsIC01MC4wLCAtMTMuMSwgLTExLjgsIC0xMy4wLCAtMTIuNCwgLTE5LjQsIC0xMS41LCAtMTcuOCxdLFxuICAgICAgICAgICAgWy0xLjcsIDEwLjksIC0yLjgsIDEyLjksIC0yLjcsIC0yLjIsIC0yLjgsIDAuMiwgLTQuOCwgMi45LCAtNS4yLCA1LjIsIC05LjEsIC05LjUsIC05LjAsIC03LjAsIC00LjAsIC0xLjAsIC01LjAsIDEuMCwgLTkuMCwgLTguOCwgLTguOSwgLTcuNywgLTcuMCwgLTYuOCwgLTcuMSwgLTQuMywgLTEyLjQsIC0xMi45LCAtMTMuOSwgLTEwLjAsIC00LjksIC0wLjcsIC01LjYsIDEuNCwgLTYuMCwgLTYuNSwgLTYuMiwgLTQuOCwgLTUuMSwgLTMuMiwgLTUuMCwgLTEuMiwgLTkuOCwgLTkuOSwgLTExLjMsIC04LjIsIC01MC4wLCAtNy42LCAtNTAuMCwgLTUuMSwgLTUuNSwgLTUuOCwgLTUuOSwgLTQuMiwgLTUwLjAsIC04LjMsIC0xNS41LCAtNS45LCAtMTEuNiwgLTE0LjIsIC0xMi4wLCAtMTEuNixdLFxuICAgICAgICAgICAgWy0yLjcsIC0zLjUsIC00LjUsIC0yLjcsIDExLjcsIDkuMCwgMTAuNiwgOS42LCAtMy4yLCAtMC43LCAtNS4xLCAtMC40LCAwLjcsIC00LjYsIC0wLjQsIC0zLjYsIC00LjgsIC04LjksIC02LjUsIC03LjgsIC0xLjQsIC00LjEsIC0yLjksIC0zLjMsIC04LjAsIC05LjEsIC04LjAsIC04LjIsIC02LjAsIC05LjMsIC03LjcsIC04LjUsIC02LjQsIC0xMC4xLCAtNy41LCAtOC42LCAyLjgsIC0wLjcsIDAuOSwgMC4xLCAtNS45LCAtNy4zLCAtNi41LCAtNi41LCAtMC40LCAtMy45LCAtMi42LCAtMy4xLCAtNTAuMCwgLTE0LjYsIC01MC4wLCAtMTIuNiwgMi45LCAwLjEsIDEuOCwgMS4wLCAtNTAuMCwgLTkuMiwgLTEzLjYsIC03LjcsIC00LjgsIC0xMi4yLCAtNi4yLCAtMTEuMCxdLFxuICAgICAgICAgICAgWy02LjQsIC0wLjQsIC02LjcsIC0yLjIsIDkuMCwgMTIuMywgOS44LCA5LjYsIC03LjEsIDIuNCwgLTcuMiwgMC4zLCAtMi45LCAtMS4yLCAtMy4wLCAtMy4zLCAtNy42LCAtNi43LCAtOC4xLCAtNy45LCAtNC45LCAtMS45LCAtNC41LCAtMy44LCAtOS41LCAtNy44LCAtOS4zLCAtOC45LCAtOS40LCAtNy4xLCAtOS4wLCAtOS4wLCAtOS40LCAtNy41LCAtOS4zLCAtOS4yLCAtMC43LCAyLjYsIDAuMiwgLTAuMSwgLTguMCwgLTQuNiwgLTcuNywgLTYuMSwgLTMuNiwgLTEuMCwgLTQuMSwgLTMuMSwgLTUwLjAsIC0xMS42LCAtNTAuMCwgLTExLjYsIDAuMiwgMi4zLCAwLjQsIDAuNSwgLTUwLjAsIC02LjUsIC0xNS4zLCAtNy44LCAtOC40LCAtOS41LCAtOC4zLCAtMTEuMSxdLFxuICAgICAgICAgICAgWy0zLjksIC0zLjMsIC0zLjEsIC0yLjgsIDEwLjYsIDkuOCwgMTIuMiwgOS44LCAtNC45LCAwLjEsIC0zLjYsIC0wLjIsIC0xLjcsIC00LjEsIDAuOSwgLTMuNSwgLTUuOSwgLTguOSwgLTUuNiwgLTguNSwgLTMuOSwgLTMuOSwgLTIuMiwgLTQuNSwgLTcuMywgLTcuNSwgLTYuNCwgLTguNSwgLTcuMSwgLTguMiwgLTYuNywgLTcuOCwgLTcuOSwgLTkuMSwgLTcuMSwgLTkuNCwgMC45LCAtMC4yLCAyLjUsIC0wLjMsIC02LjksIC02LjUsIC01LjUsIC02LjgsIC0xLjcsIC0zLjQsIC0xLjcsIC0yLjgsIC01MC4wLCAtMTMuMCwgLTUwLjAsIC0xMS41LCAxLjUsIDAuNywgMi43LCAwLjYsIC01MC4wLCAtOC45LCAtMTIuMSwgLTcuNCwgLTYuMSwgLTExLjUsIC01LjQsIC0xMC40LF0sXG4gICAgICAgICAgICBbLTUuNiwgLTEuOCwgLTYuOSwgMC4yLCA5LjYsIDkuNiwgOS44LCAxMS42LCAtNi42LCAwLjksIC03LjIsIDIuNSwgLTIuMywgLTMuNCwgLTIuMywgLTAuNiwgLTYuNSwgLTguMiwgLTguMCwgLTYuMywgLTMuNywgLTMuNSwgLTMuOSwgLTEuNiwgLTkuOSwgLTguOSwgLTkuNiwgLTcuMCwgLTguNiwgLTguOSwgLTguOCwgLTYuOCwgLTguNiwgLTguMiwgLTguOCwgLTYuOCwgMC4zLCAwLjEsIDAuMiwgMi40LCAtNy40LCAtNi4yLCAtNi45LCAtNC40LCAtMi45LCAtMi45LCAtMy41LCAtMC45LCAtNTAuMCwgLTEyLjIsIC01MC4wLCAtMTAuMSwgMS4yLCAwLjYsIDEuMiwgMi40LCAtNTAuMCwgLTcuNiwgLTE2LjEsIC01LjgsIC03LjIsIC0xMC44LCAtNy40LCAtOS4wLF0sXG4gICAgICAgICAgICBbNS4xLCAtNS40LCAzLjMsIC00LjgsIC0zLjIsIC03LjEsIC00LjksIC02LjYsIDEzLjMsIC0yLjgsIDExLjIsIC0xLjksIC01LjcsIC0xMi41LCAtNy4yLCAtMTEuNiwgLTAuNywgLTQuOCwgLTMuMSwgLTQuMywgLTEwLjAsIC0xMS42LCAtOC44LCAtMTEuNywgMTAuNSwgNy43LCA5LjEsIDguNSwgLTkuOCwgLTEyLjcsIC0xMS43LCAtMTEuOCwgLTYuMywgLTExLjQsIC04LjgsIC0xMS4wLCAtNy41LCAtMTAuMywgLTguMywgLTkuOSwgLTEuOSwgLTYuNywgLTQuMSwgLTYuNCwgLTcuOSwgLTEyLjUsIC0xMS40LCAtMTEuNywgLTUwLjAsIC0xNC4wLCAtNTAuMCwgLTEzLjIsIC04LjUsIC0xMC40LCAtOS4xLCAtOS42LCAtNTAuMCwgLTkuOCwgLTcuNywgLTguOCwgLTEwLjMsIC0xNy45LCAtMTEuOCwgLTE2LjAsXSxcbiAgICAgICAgICAgIFstNS4wLCA0LjYsIC01LjUsIDIuOSwgLTAuNywgMi40LCAwLjEsIDAuOSwgLTIuOCwgMTIuOCwgLTIuNiwgMTEuMCwgLTguNCwgLTYuMywgLTguMywgLTcuNywgLTYuMSwgLTIuOSwgLTYuNSwgLTQuMiwgLTguNSwgLTUuOSwgLTcuNSwgLTcuNywgLTUuNSwgLTIuNCwgLTUuNSwgLTQuMSwgLTEyLjksIC0xMC4zLCAtMTIuNywgLTExLjMsIC03LjQsIC0zLjEsIC03LjQsIC00LjksIC00LjQsIC0xLjgsIC0zLjUsIC0zLjUsIC0xLjYsIDMuMCwgLTAuOCwgMC45LCAtOC40LCAtNi4zLCAtOS42LCAtNy4zLCAtNTAuMCwgLTkuMCwgLTUwLjAsIC05LjcsIC0yLjMsIC0wLjIsIC0xLjIsIC0xLjUsIC01MC4wLCAtMC43LCAtMTMuMywgLTIuMCwgLTExLjgsIC0xMS45LCAtMTIuMywgLTEyLjcsXSxcbiAgICAgICAgICAgIFszLjYsIC01LjUsIDQuOCwgLTUuMiwgLTUuMSwgLTcuMiwgLTMuNiwgLTcuMiwgMTEuMiwgLTIuNiwgMTMuNCwgLTIuMSwgLTcuNywgLTEyLjUsIC01LjMsIC0xMS45LCAtMi4yLCAtNC40LCAtMS45LCAtNC44LCAtMTAuMiwgLTExLjUsIC04LjEsIC0xMi4wLCA5LjMsIDguMiwgMTAuMCwgOC4wLCAtMTAuOCwgLTExLjksIC0xMC43LCAtMTIuNCwgLTguMiwgLTExLjgsIC02LjksIC0xMS41LCAtOC40LCAtOS45LCAtNy4xLCAtMTAuNiwgLTQuNywgLTYuOCwgLTEuMiwgLTcuMCwgLTkuOCwgLTExLjYsIC05LjYsIC0xMi4xLCAtNTAuMCwgLTE0LjEsIC01MC4wLCAtMTIuNywgLTEwLjAsIC0xMC44LCAtOC44LCAtMTAuNSwgLTUwLjAsIC05LjIsIC00LjIsIC05LjMsIC0xMS4wLCAtMTguMiwgLTExLjEsIC0xNi4xLF0sXG4gICAgICAgICAgICBbLTQuMiwgMy4wLCAtNS4xLCA1LjIsIC0wLjQsIDAuMywgLTAuMiwgMi41LCAtMS45LCAxMS4wLCAtMi4xLCAxMy4yLCAtNy42LCAtOC41LCAtOC4wLCAtNS4zLCAtNS42LCAtNC41LCAtNi44LCAtMi40LCAtNy44LCAtNy45LCAtNy45LCAtNi4yLCAtNS43LCAtNS4xLCAtNS40LCAtMi4xLCAtMTIuNCwgLTEyLjMsIC0xMy4xLCAtMTAuMSwgLTYuNiwgLTQuNCwgLTYuOSwgLTIuNiwgLTMuNiwgLTMuOCwgLTMuNywgLTIuMCwgLTEuNCwgMC44LCAtMC45LCAzLjAsIC04LjIsIC04LjEsIC05LjIsIC01LjgsIC01MC4wLCAtMTAuMSwgLTUwLjAsIC03LjQsIC0xLjcsIC0yLjAsIC0xLjUsIC0wLjUsIC01MC4wLCAtMi4xLCAtMTIuNiwgLTAuNCwgLTExLjYsIC0xMy45LCAtMTEuNCwgLTExLjEsXSxcbiAgICAgICAgICAgIFstNi4zLCAtMTAuMiwgLTguOSwgLTkuMSwgMC43LCAtMi45LCAtMS43LCAtMi4zLCAtNS43LCAtOC40LCAtNy43LCAtNy42LCAxMy4yLCA5LjYsIDMuNSwgOS43LCAtOC43LCAtMTIuNCwgLTEwLjcsIC0xMC43LCAtNy44LCAtMTAuMiwgLTguOCwgLTkuNiwgLTkuNSwgLTExLjksIC0xMC45LCAtMTAuNSwgMi4zLCAtMC40LCAtMC4yLCAtMC4zLCAtOS43LCAtMTUuNSwgLTExLjQsIC0xMy43LCAtMy4wLCAtNi40LCAtNC4xLCAtNS40LCAtOS42LCAtMTEuOSwgLTEwLjUsIC0xMS44LCA2LjIsIDMuMywgMy43LCAzLjYsIC01MC4wLCAtMTMuNiwgLTUwLjAsIC0xMS45LCAtNS42LCAtOC44LCAtNy4yLCAtOC45LCAtNTAuMCwgLTEyLjQsIC0xNC4xLCAtMTEuNiwgMi44LCAtNi40LCAwLjUsIC01LjIsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTcuOSwgLTEzLjIsIC05LjUsIC00LjYsIC0xLjIsIC00LjEsIC0zLjQsIC0xMi41LCAtNi4zLCAtMTIuNSwgLTguNSwgOS42LCAxMi43LCAwLjIsIDEwLjUsIC0xMi40LCAtMTEuNiwgLTEzLjIsIC0xMi4wLCAtMTIuNCwgLTEwLjEsIC0xMS42LCAtMTIuMCwgLTE1LjEsIC0xMy4xLCAtMTQuMywgLTEzLjQsIC0xLjQsIDEuNCwgLTEuNiwgLTAuNSwgLTE0LjksIC0xNC4zLCAtMTUuMiwgLTE2LjgsIC03LjcsIC00LjcsIC02LjMsIC02LjYsIC0xNC42LCAtMTAuOCwgLTEyLjgsIC0xMy4wLCAyLjMsIDYuMCwgMi41LCAzLjYsIC01MC4wLCAtMTEuMiwgLTUwLjAsIC0xMS45LCAtMTAuNSwgLTkuMiwgLTEwLjUsIC0xMC41LCAtNTAuMCwgLTEwLjMsIC0xNi4yLCAtMTEuMywgLTEuNywgLTMuNywgLTIuNSwgLTUuNCxdLFxuICAgICAgICAgICAgWy03LjEsIC05LjksIC01LjcsIC05LjAsIC0wLjQsIC0zLjAsIDAuOSwgLTIuMywgLTcuMiwgLTguMywgLTUuMywgLTguMCwgMy41LCAwLjIsIDE0LjMsIDEuMCwgLTcuMywgLTExLjIsIC02LjksIC05LjcsIC04LjUsIC0xMC4yLCAtNy43LCAtOS44LCAtMTAuMCwgLTEwLjQsIC04LjQsIC0xMC4yLCAxLjAsIC0wLjYsIDEuNywgLTAuNSwgLTExLjEsIC0xNC44LCAtOS43LCAtMTQuNSwgLTMuNywgLTUuOCwgLTMuMSwgLTUuNiwgLTEwLjQsIC0xMS41LCAtOC4yLCAtMTEuMSwgMC42LCAtMS42LCAxLjYsIC0xLjEsIC01MC4wLCAtMTIuNCwgLTUwLjAsIC0xMS41LCAtNS41LCAtOC4wLCAtNC45LCAtNy4yLCAtNTAuMCwgLTEyLjQsIC0xMC4zLCAtMTEuNiwgMC43LCAtNi44LCAyLjQsIC02LjAsXSxcbiAgICAgICAgICAgIFstMTEuNSwgLTkuNiwgLTEyLjYsIC03LjAsIC0zLjYsIC0zLjMsIC0zLjUsIC0wLjYsIC0xMS42LCAtNy43LCAtMTEuOSwgLTUuMywgOS43LCAxMC41LCAxLjAsIDEyLjYsIC0xMi4wLCAtMTIuMiwgLTEyLjUsIC05LjcsIC0xMS4xLCAtMTEuMiwgLTExLjksIC05LjQsIC0xMi45LCAtMTQuMywgLTE0LjAsIC0xMS45LCAtMS4wLCAtMC40LCAtMS42LCAxLjIsIC0xMy45LCAtMTUuNCwgLTEzLjcsIC0xMi42LCAtNi4yLCAtNi43LCAtNi4zLCAtNC40LCAtMTMuMCwgLTEyLjIsIC0xMy4wLCAtMTAuNCwgMi45LCAzLjgsIDIuNSwgNS44LCAtNTAuMCwgLTEyLjUsIC01MC4wLCAtMTAuMiwgLTkuNiwgLTkuNywgLTkuNiwgLTguMywgLTUwLjAsIC0xMS42LCAtMTUuNCwgLTkuNCwgLTEuMSwgLTUuNCwgLTEuNiwgLTMuMyxdLFxuICAgICAgICAgICAgWzAuNCwgLTUuMCwgLTEuNSwgLTQuMCwgLTQuOCwgLTcuNiwgLTUuOSwgLTYuNSwgLTAuNywgLTYuMSwgLTIuMiwgLTUuNiwgLTguNywgLTEyLjQsIC03LjMsIC0xMi4wLCAxMi44LCAyLjMsIDEwLjIsIDMuMCwgMC4wLCAtMy40LCAtMC43LCAtMy4yLCAyLjUsIC0wLjgsIDAuOSwgMC4yLCAtMy4wLCAtNy4yLCAtNS43LCAtNi4xLCAtMC4yLCAtNi42LCAtMS44LCAtNi4wLCAtNS4zLCAtOC4yLCAtNS43LCAtNy42LCAtNi43LCAtOS42LCAtNy41LCAtOS4zLCAtNy4xLCAtMTAuNSwgLTkuNiwgLTkuNCwgLTUwLjAsIC04LjEsIC01MC4wLCAtNy4yLCAtNC4zLCAtNi44LCAtNS43LCAtNi4zLCAtNTAuMCwgLTkuNSwgLTkuNiwgLTguOSwgLTYuMiwgLTEyLjgsIC02LjgsIC0xMS44LF0sXG4gICAgICAgICAgICBbLTYuMCwgMC41LCAtNi4xLCAtMS4wLCAtOC45LCAtNi43LCAtOC45LCAtOC4yLCAtNC44LCAtMi45LCAtNC40LCAtNC41LCAtMTIuNCwgLTExLjYsIC0xMS4yLCAtMTIuMiwgMi4zLCAxNC42LCAxLjksIDEyLjksIC01LjUsIC0yLjYsIC00LjEsIC00LjcsIC0xLjIsIDMuMCwgLTEuMSwgMS42LCAtOC4wLCAtNC43LCAtOC43LCAtNi4wLCAtOC4yLCAtNC43LCAtNy44LCAtNi43LCAtMTAuMCwgLTguMywgLTguOSwgLTkuOSwgLTEwLjgsIC03LjEsIC0xMC4wLCAtOS4yLCAtMTEuNiwgLTEwLjEsIC0xMi4zLCAtMTEuOSwgLTUwLjAsIDIuMiwgLTUwLjAsIDAuOSwgLTcuOSwgLTUuOSwgLTcuNCwgLTYuOSwgLTUwLjAsIC00LjYsIC0xMS42LCAtNS42LCAtOS43LCAtNS45LCAtOS45LCAtNy4zLF0sXG4gICAgICAgICAgICBbLTEuOSwgLTUuNSwgLTAuNiwgLTUuMCwgLTYuNSwgLTguMSwgLTUuNiwgLTguMCwgLTMuMSwgLTYuNSwgLTEuOSwgLTYuOCwgLTEwLjcsIC0xMy4yLCAtNi45LCAtMTIuNSwgMTAuMiwgMS45LCAxMS45LCAyLjEsIC0yLjMsIC00LjEsIC0wLjUsIC00LjYsIC0wLjEsIC0wLjksIDIuNCwgLTAuOCwgLTUuMSwgLTYuOSwgLTQuOCwgLTYuNywgLTIuMywgLTcuMSwgLTAuOCwgLTcuMiwgLTcuMiwgLTguMCwgLTUuNiwgLTguNSwgLTkuNCwgLTkuNywgLTcuMiwgLTkuOCwgLTkuMiwgLTExLjEsIC05LjUsIC0xMC43LCAtNTAuMCwgLTguNywgLTUwLjAsIC04LjYsIC02LjEsIC03LjUsIC01LjUsIC03LjcsIC01MC4wLCAtMTAuNCwgLTcuNywgLTEwLjAsIC03LjMsIC0xMy42LCAtNi40LCAtMTMuMyxdLFxuICAgICAgICAgICAgWy01LjMsIC0xLjAsIC02LjEsIDEuMCwgLTcuOCwgLTcuOSwgLTguNSwgLTYuMywgLTQuMywgLTQuMiwgLTQuOCwgLTIuNCwgLTEwLjcsIC0xMi4wLCAtOS43LCAtOS43LCAzLjAsIDEyLjksIDIuMSwgMTQuNywgLTQuOSwgLTMuOCwgLTQuMCwgLTIuNCwgLTEuMCwgMC44LCAtMS4zLCAzLjQsIC03LjYsIC01LjcsIC04LjEsIC0zLjUsIC02LjgsIC01LjgsIC03LjIsIC00LjIsIC04LjksIC0xMC4yLCAtOC40LCAtOC4yLCAtOS45LCAtOC40LCAtOS43LCAtNi40LCAtMTEuMSwgLTExLjEsIC0xMS44LCAtMTAuMCwgLTUwLjAsIDAuNCwgLTUwLjAsIDIuNiwgLTcuMiwgLTcuMCwgLTcuNCwgLTUuMSwgLTUwLjAsIC01LjcsIC05LjgsIC0zLjIsIC04LjQsIC03LjQsIC04LjksIC01LjksXSxcbiAgICAgICAgICAgIFstOC41LCAtMTAuMywgLTEwLjAsIC05LjAsIC0xLjQsIC00LjksIC0zLjksIC0zLjcsIC0xMC4wLCAtOC41LCAtMTAuMiwgLTcuOCwgLTcuOCwgLTEyLjQsIC04LjUsIC0xMS4xLCAwLjAsIC01LjUsIC0yLjMsIC00LjksIDEyLjYsIDEwLjAsIDExLjEsIDEwLjUsIC02LjAsIC04LjMsIC02LjksIC03LjUsIC0yLjIsIC03LjQsIC01LjMsIC01LjksIC04LjksIC0xMi41LCAtOS40LCAtMTEuNiwgLTAuNywgLTMuOSwgLTIuMywgLTMuMCwgLTkuMSwgLTkuOCwgLTkuMiwgLTkuNSwgLTUuNiwgLTkuMCwgLTguMCwgLTguNSwgLTUwLjAsIC0xNS4zLCAtNTAuMCwgLTE0LjEsIDIuMywgLTEuNCwgMC4zLCAtMC41LCAtNTAuMCwgLTEzLjYsIC0xNC4zLCAtMTEuNSwgLTUuMywgLTEzLjcsIC02LjEsIC0xMi43LF0sXG4gICAgICAgICAgICBbLTExLjIsIC04LjEsIC0xMS44LCAtOC44LCAtNC4xLCAtMS45LCAtMy45LCAtMy41LCAtMTEuNiwgLTUuOSwgLTExLjUsIC03LjksIC0xMC4yLCAtMTAuMSwgLTEwLjIsIC0xMS4yLCAtMy40LCAtMi42LCAtNC4xLCAtMy44LCAxMC4wLCAxMy4xLCAxMC43LCAxMC42LCAtOC4xLCAtNS4yLCAtOC4wLCAtNi43LCAtNi4xLCAtMy43LCAtNy41LCAtNS42LCAtMTEuMSwgLTEwLjMsIC0xMC42LCAtMTEuOSwgLTMuMiwgLTEuMCwgLTIuMiwgLTIuOCwgLTEwLjUsIC04LjEsIC05LjQsIC05LjUsIC04LjMsIC02LjksIC05LjQsIC04LjgsIC01MC4wLCAtMTEuMywgLTUwLjAsIC0xMi44LCAtMC42LCAyLjIsIC0wLjMsIDAuMSwgLTUwLjAsIC0xMC4xLCAtMTcuNSwgLTExLjEsIC04LjYsIC05LjksIC04LjYsIC0xMS45LF0sXG4gICAgICAgICAgICBbLTguOSwgLTkuNCwgLTguNiwgLTguOSwgLTIuOSwgLTQuNSwgLTIuMiwgLTMuOSwgLTguOCwgLTcuNSwgLTguMSwgLTcuOSwgLTguOCwgLTExLjYsIC03LjcsIC0xMS45LCAtMC43LCAtNC4xLCAtMC41LCAtNC4wLCAxMS4xLCAxMC43LCAxMy4yLCAxMC40LCAtNS43LCAtNS44LCAtMy41LCAtNi4xLCAtMy42LCAtNi41LCAtMy4zLCAtNS41LCAtOS40LCAtMTEuMCwgLTguNywgLTExLjIsIC0xLjgsIC0yLjcsIDAuNywgLTMuMCwgLTkuMSwgLTguMiwgLTcuMywgLTkuNCwgLTcuMiwgLTguMiwgLTcuMiwgLTguMiwgLTUwLjAsIC0xMy4yLCAtNTAuMCwgLTEzLjMsIDAuNSwgLTAuOSwgMS44LCAtMC42LCAtNTAuMCwgLTExLjQsIC0xMS4xLCAtMTAuNSwgLTYuMSwgLTEyLjksIC01LjAsIC0xMS45LF0sXG4gICAgICAgICAgICBbLTEwLjgsIC05LjYsIC0xMS45LCAtNy43LCAtMy4zLCAtMy44LCAtNC41LCAtMS42LCAtMTEuNywgLTcuNywgLTEyLjAsIC02LjIsIC05LjYsIC0xMi4wLCAtOS44LCAtOS40LCAtMy4yLCAtNC43LCAtNC42LCAtMi40LCAxMC41LCAxMC42LCAxMC40LCAxMi42LCAtOC4yLCAtNy45LCAtOS4wLCAtNC43LCAtNi4xLCAtNi4wLCAtNy41LCAtMi45LCAtMTAuOSwgLTEyLjIsIC0xMS4yLCAtMTAuOSwgLTIuNCwgLTIuOSwgLTIuNywgLTAuOSwgLTEwLjQsIC05LjcsIC0xMC4yLCAtOC4wLCAtOC40LCAtOS4xLCAtOS4zLCAtNi41LCAtNTAuMCwgLTEzLjMsIC01MC4wLCAtMTEuMCwgLTAuMCwgLTAuNCwgLTAuNCwgMi4zLCAtNTAuMCwgLTEwLjksIC0xNy4yLCAtOC4zLCAtOC4zLCAtMTIuNywgLTcuOCwgLTkuMyxdLFxuICAgICAgICAgICAgWzIuMSwgLTguMSwgMS4yLCAtNy4wLCAtOC4wLCAtOS41LCAtNy4zLCAtOS45LCAxMC41LCAtNS41LCA5LjMsIC01LjcsIC05LjUsIC0xNS4xLCAtMTAuMCwgLTEyLjksIDIuNSwgLTEuMiwgLTAuMSwgLTEuMCwgLTYuMCwgLTguMSwgLTUuNywgLTguMiwgMTMuOCwgMTEuMywgMTEuOCwgMTIuMSwgLTYuMCwgLTkuMSwgLTkuMCwgLTkuNSwgLTguOSwgLTEzLjQsIC0xMC4wLCAtMTMuMSwgLTkuOSwgLTExLjcsIC05LjgsIC0xMi44LCAtNS45LCAtOS40LCAtNi41LCAtOC4xLCAtMTAuNywgLTE0LjAsIC0xMy4zLCAtMTMuOSwgLTUwLjAsIC0xMS45LCAtNTAuMCwgLTkuNywgLTguOSwgLTEwLjgsIC05LjAsIC0xMS4xLCAtNTAuMCwgLTYuNSwgLTUuMywgLTYuMywgLTEwLjUsIC0xNi4yLCAtMTAuNCwgLTE1LjIsXSxcbiAgICAgICAgICAgIFswLjAsIC01LjAsIDAuNSwgLTYuOCwgLTkuMSwgLTcuOCwgLTcuNSwgLTguOSwgNy43LCAtMi40LCA4LjIsIC01LjEsIC0xMS45LCAtMTMuMSwgLTEwLjQsIC0xNC4zLCAtMC44LCAzLjAsIC0wLjksIDAuOCwgLTguMywgLTUuMiwgLTUuOCwgLTcuOSwgMTEuMywgMTUuMCwgMTEuMiwgMTIuOCwgLTkuNywgLTUuMywgLTkuMiwgLTcuOCwgLTExLjcsIC0xMC42LCAtMTAuMSwgLTEyLjIsIC0xMS43LCAtOC44LCAtOC45LCAtMTEuOCwgLTkuMywgLTUuMCwgLTguMCwgLTguMiwgLTEzLjYsIC0xMS40LCAtMTIuOCwgLTEzLjAsIC01MC4wLCAtNy4yLCAtNTAuMCwgLTguNCwgLTExLjAsIC03LjcsIC04LjcsIC0xMC4yLCAtNTAuMCwgLTEuNSwgLTcuMSwgLTQuOSwgLTExLjIsIC0xMS42LCAtMTEuNiwgLTE1LjAsXSxcbiAgICAgICAgICAgIFsxLjQsIC03LjMsIDIuMiwgLTcuMSwgLTguMCwgLTkuMywgLTYuNCwgLTkuNiwgOS4xLCAtNS41LCAxMC4wLCAtNS40LCAtMTAuOSwgLTE0LjMsIC04LjQsIC0xNC4wLCAwLjksIC0xLjEsIDIuNCwgLTEuMywgLTYuOSwgLTguMCwgLTMuNSwgLTkuMCwgMTEuOCwgMTEuMiwgMTMuNCwgMTEuNCwgLTcuMywgLTguOCwgLTYuNSwgLTguNSwgLTEwLjAsIC0xMi41LCAtNy44LCAtMTIuNSwgLTkuNiwgLTExLjAsIC03LjEsIC0xMC43LCAtNy45LCAtOC4wLCAtNC4zLCAtOS40LCAtMTEuNCwgLTEyLjMsIC0xMC45LCAtMTIuOSwgLTUwLjAsIC0xMS44LCAtNTAuMCwgLTExLjIsIC05LjQsIC05LjgsIC03LjMsIC0xMC41LCAtNTAuMCwgLTYuMiwgLTIuMiwgLTYuNywgLTkuOCwgLTE1LjIsIC04LjUsIC0xNC45LF0sXG4gICAgICAgICAgICBbMC4yLCAtNi4zLCAwLjEsIC00LjMsIC04LjIsIC04LjksIC04LjUsIC03LjAsIDguNSwgLTQuMSwgOC4wLCAtMi4xLCAtMTAuNSwgLTEzLjQsIC0xMC4yLCAtMTEuOSwgMC4yLCAxLjYsIC0wLjgsIDMuNCwgLTcuNSwgLTYuNywgLTYuMSwgLTQuNywgMTIuMSwgMTIuOCwgMTEuNCwgMTQuNywgLTguNywgLTcuNCwgLTkuNCwgLTUuMywgLTkuOSwgLTExLjgsIC0xMC41LCAtMTAuMywgLTkuOSwgLTEwLjEsIC05LjMsIC05LjMsIC04LjEsIC03LjIsIC04LjAsIC01LjIsIC0xMi4wLCAtMTIuMSwgLTEyLjYsIC0xMC45LCAtNTAuMCwgLTcuOSwgLTUwLjAsIC01LjMsIC05LjMsIC04LjgsIC04LjksIC03LjAsIC01MC4wLCAtMy42LCAtNy4xLCAtMS4yLCAtMTAuMiwgLTEyLjcsIC05LjksIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTEwLjIsIC0xMy40LCAtMTEuOCwgLTEyLjQsIC02LjAsIC05LjQsIC03LjEsIC04LjYsIC05LjgsIC0xMi45LCAtMTAuOCwgLTEyLjQsIDIuMywgLTEuNCwgMS4wLCAtMS4wLCAtMy4wLCAtOC4wLCAtNS4xLCAtNy42LCAtMi4yLCAtNi4xLCAtMy42LCAtNi4xLCAtNi4wLCAtOS43LCAtNy4zLCAtOC43LCAxMS4yLCA3LjksIDguOSwgOC4xLCAtMTIuMSwgLTE3LjQsIC0xMy4yLCAtMTYuOCwgLTYuMywgLTkuNSwgLTcuNSwgLTguOCwgLTEyLjcsIC0xNS4yLCAtMTMuMSwgLTE0LjIsIDAuMCwgLTMuMSwgLTEuOCwgLTMuMSwgLTUwLjAsIC0xMC43LCAtNTAuMCwgLTkuMywgLTQuNiwgLTguOSwgLTUuOSwgLTguMywgLTUwLjAsIC0xMi44LCAtOS42LCAtMTAuNiwgOS41LCAtMy4yLCA4LjIsIC0yLjgsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTExLjMsIC0xNC4wLCAtMTIuOSwgLTkuMywgLTcuMSwgLTguMiwgLTguOSwgLTEyLjcsIC0xMC4zLCAtMTEuOSwgLTEyLjMsIC0wLjQsIDEuNCwgLTAuNiwgLTAuNCwgLTcuMiwgLTQuNywgLTYuOSwgLTUuNywgLTcuNCwgLTMuNywgLTYuNSwgLTYuMCwgLTkuMSwgLTUuMywgLTguOCwgLTcuNCwgNy45LCAxMS45LCA3LjgsIDkuMywgLTE1LjIsIC0xNS4xLCAtMTQuNiwgLTE3LjIsIC05LjcsIC03LjMsIC04LjIsIC05LjIsIC0xNS4wLCAtMTIuOCwgLTE0LjEsIC0xNC45LCAtMi44LCAwLjIsIC0yLjksIC0yLjMsIC01MC4wLCAtNy40LCAtNTAuMCwgLTguNywgLTkuNCwgLTcuMywgLTkuNCwgLTkuNCwgLTUwLjAsIC04LjAsIC0xMS45LCAtOS43LCA2LjUsIDAuNSwgNi40LCAtMS44LF0sXG4gICAgICAgICAgICBbLTEzLjAsIC0xNC40LCAtMTEuOSwgLTEzLjksIC03LjcsIC05LjAsIC02LjcsIC04LjgsIC0xMS43LCAtMTIuNywgLTEwLjcsIC0xMy4xLCAtMC4yLCAtMS42LCAxLjcsIC0xLjYsIC01LjcsIC04LjcsIC00LjgsIC04LjEsIC01LjMsIC03LjUsIC0zLjMsIC03LjUsIC05LjAsIC05LjIsIC02LjUsIC05LjQsIDguOSwgNy44LCAxMC4xLCA3LjgsIC0xNC4zLCAtMTcuNywgLTEzLjAsIC0xNy44LCAtOC4wLCAtOS40LCAtNi4yLCAtOS4yLCAtMTUuMSwgLTE0LjksIC0xMi4yLCAtMTQuOSwgLTEuOCwgLTMuMiwgLTAuOCwgLTMuMiwgLTUwLjAsIC0xMC44LCAtNTAuMCwgLTkuOSwgLTcuMywgLTkuNiwgLTYuNCwgLTkuNCwgLTUwLjAsIC0xMi4zLCAtOC43LCAtMTEuMywgNy42LCAtMy4zLCA4LjcsIC0yLjksXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTEyLjksIC0xMy40LCAtMTAuMCwgLTguNSwgLTkuMCwgLTcuOCwgLTYuOCwgLTExLjgsIC0xMS4zLCAtMTIuNCwgLTEwLjEsIC0wLjMsIC0wLjUsIC0wLjUsIDEuMiwgLTYuMSwgLTYuMCwgLTYuNywgLTMuNSwgLTUuOSwgLTUuNiwgLTUuNSwgLTIuOSwgLTkuNSwgLTcuOCwgLTguNSwgLTUuMywgOC4xLCA5LjMsIDcuOCwgMTEuOCwgLTE0LjQsIC0xNS43LCAtMTQuNSwgLTE0LjYsIC04LjQsIC04LjcsIC03LjksIC03LjEsIC0xNC4zLCAtMTMuOCwgLTEzLjgsIC0xMi4zLCAtMi40LCAtMi4yLCAtMi45LCAtMC4yLCAtNTAuMCwgLTguOSwgLTUwLjAsIC03LjEsIC04LjEsIC05LjEsIC04LjcsIC02LjYsIC01MC4wLCAtOS43LCAtMTEuNCwgLTguMCwgNi44LCAtMS44LCA2LjksIDAuNCxdLFxuICAgICAgICAgICAgWy0yLjYsIC02LjMsIC00LjksIC00LjksIC02LjQsIC05LjQsIC03LjksIC04LjYsIC02LjMsIC03LjQsIC04LjIsIC02LjYsIC05LjcsIC0xNC45LCAtMTEuMSwgLTEzLjksIC0wLjIsIC04LjIsIC0yLjMsIC02LjgsIC04LjksIC0xMS4xLCAtOS40LCAtMTAuOSwgLTguOSwgLTExLjcsIC0xMC4wLCAtOS45LCAtMTIuMSwgLTE1LjIsIC0xNC4zLCAtMTQuNCwgMTEuMSwgMi45LCA5LjIsIDMuNSwgLTMuMCwgLTcuMCwgLTQuMywgLTYuMiwgLTIuMiwgLTYuNiwgLTMuNywgLTUuNywgLTYuMCwgLTEwLjQsIC04LjYsIC05LjUsIC01MC4wLCAtMTUuNSwgLTUwLjAsIC0xMy45LCAtNy44LCAtMTAuNSwgLTguNywgLTkuNiwgLTUwLjAsIC0xNi41LCAtMTcuMSwgLTE0LjgsIC0xMi4xLCAtMTguOSwgLTEyLjQsIC0xNy40LF0sXG4gICAgICAgICAgICBbLTguNSwgMC44LCAtOS4xLCAtMC43LCAtMTAuMSwgLTcuNSwgLTkuMSwgLTguMiwgLTExLjQsIC0zLjEsIC0xMS44LCAtNC40LCAtMTUuNSwgLTE0LjMsIC0xNC44LCAtMTUuNCwgLTYuNiwgLTQuNywgLTcuMSwgLTUuOCwgLTEyLjUsIC0xMC4zLCAtMTEuMCwgLTEyLjIsIC0xMy40LCAtMTAuNiwgLTEyLjUsIC0xMS44LCAtMTcuNCwgLTE1LjEsIC0xNy43LCAtMTUuNywgMi45LCAxMi41LCAzLjEsIDEwLjMsIC03LjcsIC01LjIsIC02LjIsIC03LjMsIC01LjQsIC0xLjcsIC01LjQsIC0zLjcsIC0xMS42LCAtOS4xLCAtMTMuMCwgLTEwLjgsIC01MC4wLCAtMTAuMywgLTUwLjAsIC0xMS4yLCAtOS44LCAtOC4zLCAtOS4xLCAtOS43LCAtNTAuMCwgLTEyLjcsIC0yMC42LCAtMTMuMSwgLTE2LjAsIC0xNi42LCAtMTcuMCwgLTE4LjQsXSxcbiAgICAgICAgICAgIFstNS4wLCAtNi40LCAtMy40LCAtNS42LCAtNy41LCAtOS4zLCAtNy4xLCAtOC44LCAtOC44LCAtNy40LCAtNi45LCAtNi45LCAtMTEuNCwgLTE1LjIsIC05LjcsIC0xMy43LCAtMS44LCAtNy44LCAtMC44LCAtNy4yLCAtOS40LCAtMTAuNiwgLTguNywgLTExLjIsIC0xMC4wLCAtMTAuMSwgLTcuOCwgLTEwLjUsIC0xMy4yLCAtMTQuNiwgLTEzLjAsIC0xNC41LCA5LjIsIDMuMSwgMTAuOCwgMy4wLCAtNC41LCAtNi43LCAtMi43LCAtNi43LCAtNS4wLCAtNi44LCAtMi41LCAtNi43LCAtNy41LCAtMTAuNCwgLTcuNCwgLTEwLjIsIC01MC4wLCAtMTUuNSwgLTUwLjAsIC0xNC4yLCAtOC45LCAtMTAuMiwgLTguNSwgLTEwLjAsIC01MC4wLCAtMTUuNiwgLTE1LjMsIC0xNS41LCAtMTMuMCwgLTE4LjgsIC0xMi42LCAtMTguMyxdLFxuICAgICAgICAgICAgWy04LjEsIC0xLjEsIC04LjksIDEuNCwgLTguNiwgLTkuMiwgLTkuNCwgLTYuOCwgLTExLjAsIC00LjksIC0xMS41LCAtMi42LCAtMTMuNywgLTE2LjgsIC0xNC41LCAtMTIuNiwgLTYuMCwgLTYuNywgLTcuMiwgLTQuMiwgLTExLjYsIC0xMS45LCAtMTEuMiwgLTEwLjksIC0xMy4xLCAtMTIuMiwgLTEyLjUsIC0xMC4zLCAtMTYuOCwgLTE3LjIsIC0xNy44LCAtMTQuNiwgMy41LCAxMC4zLCAzLjAsIDEyLjQsIC02LjksIC03LjUsIC02LjgsIC00LjksIC01LjQsIC00LjIsIC01LjQsIC0xLjMsIC0xMC44LCAtMTEuNSwgLTEyLjQsIC04LjIsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC04LjksIC05LjIsIC0xMC4wLCAtOS40LCAtNy45LCAtNTAuMCwgLTE0LjMsIC0xOS45LCAtMTEuNCwgLTE2LjIsIC0xOS4yLCAtMTUuOCwgLTE1LjksXSxcbiAgICAgICAgICAgIFstNi4zLCAtNy40LCAtOC4wLCAtNi4wLCAyLjgsIC0wLjcsIDAuOSwgMC4zLCAtNy41LCAtNC40LCAtOC40LCAtMy42LCAtMy4wLCAtNy43LCAtMy43LCAtNi4yLCAtNS4zLCAtMTAuMCwgLTcuMiwgLTguOSwgLTAuNywgLTMuMiwgLTEuOCwgLTIuNCwgLTkuOSwgLTExLjcsIC05LjYsIC05LjksIC02LjMsIC05LjcsIC04LjAsIC04LjQsIC0zLjAsIC03LjcsIC00LjUsIC02LjksIDExLjMsIDguMiwgOS40LCA5LjEsIC0xLjAsIC0zLjMsIC0xLjgsIC0yLjQsIDEuNSwgLTIuMSwgLTAuNCwgLTEuMSwgLTUwLjAsIC0xNC41LCAtNTAuMCwgLTEyLjksIDIuOCwgLTAuMCwgMS40LCAwLjcsIC01MC4wLCAtOC43LCAtMTQuMSwgLTcuNSwgLTUuMiwgLTEyLjUsIC02LjUsIC0xMC43LF0sXG4gICAgICAgICAgICBbLTkuOSwgLTUuMCwgLTEwLjAsIC02LjUsIC0wLjcsIDIuNiwgLTAuMiwgMC4xLCAtMTAuMywgLTEuOCwgLTkuOSwgLTMuOCwgLTYuNCwgLTQuNywgLTUuOCwgLTYuNywgLTguMiwgLTguMywgLTguMCwgLTEwLjIsIC0zLjksIC0xLjAsIC0yLjcsIC0yLjksIC0xMS43LCAtOC44LCAtMTEuMCwgLTEwLjEsIC05LjUsIC03LjMsIC05LjQsIC04LjcsIC03LjAsIC01LjIsIC02LjcsIC03LjUsIDguMiwgMTEuNiwgOC44LCA5LjEsIC0zLjcsIC0wLjksIC0zLjEsIC0zLjAsIC0yLjAsIDEuMiwgLTIuMywgLTEuMywgLTUwLjAsIC0xMi4xLCAtNTAuMCwgLTEyLjYsIDAuMSwgMi41LCAwLjcsIDAuNiwgLTUwLjAsIC02LjAsIC0xNC44LCAtNy41LCAtOC42LCAtOS40LCAtOC41LCAtMTEuMixdLFxuICAgICAgICAgICAgWy03LjUsIC02LjIsIC03LjIsIC02LjIsIDAuOSwgMC4yLCAyLjUsIDAuMiwgLTguMywgLTMuNSwgLTcuMSwgLTMuNywgLTQuMSwgLTYuMywgLTMuMSwgLTYuMywgLTUuNywgLTguOSwgLTUuNiwgLTguNCwgLTIuMywgLTIuMiwgMC43LCAtMi43LCAtOS44LCAtOC45LCAtNy4xLCAtOS4zLCAtNy41LCAtOC4yLCAtNi4yLCAtNy45LCAtNC4zLCAtNi4yLCAtMi43LCAtNi44LCA5LjQsIDguOCwgMTIuMSwgOC44LCAtMi4xLCAtMi4wLCAwLjEsIC0yLjQsIDAuMCwgLTEuMSwgMS4zLCAtMC44LCAtNTAuMCwgLTExLjksIC01MC4wLCAtMTIuNiwgMS4yLCAwLjcsIDMuNSwgMC44LCAtNTAuMCwgLTcuMSwgLTEyLjQsIC03LjEsIC03LjEsIC0xMC42LCAtNS4wLCAtMTAuNixdLFxuICAgICAgICAgICAgWy05LjAsIC02LjUsIC0xMC4wLCAtNC44LCAwLjEsIC0wLjEsIC0wLjMsIDIuNCwgLTkuOSwgLTMuNSwgLTEwLjYsIC0yLjAsIC01LjQsIC02LjYsIC01LjYsIC00LjQsIC03LjYsIC05LjksIC04LjUsIC04LjIsIC0zLjAsIC0yLjgsIC0zLjAsIC0wLjksIC0xMi44LCAtMTEuOCwgLTEwLjcsIC05LjMsIC04LjgsIC05LjIsIC05LjIsIC03LjEsIC02LjIsIC03LjMsIC02LjcsIC00LjksIDkuMSwgOS4xLCA4LjgsIDExLjIsIC0zLjEsIC0zLjAsIC0zLjMsIC0xLjAsIC0xLjEsIC0xLjQsIC0yLjAsIDEuMiwgLTUwLjAsIC0xMi44LCAtNTAuMCwgLTEwLjksIDAuOCwgMC41LCAwLjcsIDIuMywgLTUwLjAsIC03LjUsIC0xNi41LCAtNS45LCAtNy44LCAtMTEuMSwgLTcuOCwgLTkuMCxdLFxuICAgICAgICAgICAgWy03LjEsIC01LjYsIC05LjEsIC01LjEsIC01LjksIC04LjAsIC02LjksIC03LjQsIC0xLjksIC0xLjYsIC00LjcsIC0xLjQsIC05LjYsIC0xNC42LCAtMTAuNCwgLTEzLjAsIC02LjcsIC0xMC44LCAtOS40LCAtOS45LCAtOS4xLCAtMTAuNSwgLTkuMSwgLTEwLjQsIC01LjksIC05LjMsIC03LjksIC04LjEsIC0xMi43LCAtMTUuMCwgLTE1LjEsIC0xNC4zLCAtMi4yLCAtNS40LCAtNS4wLCAtNS40LCAtMS4wLCAtMy43LCAtMi4xLCAtMy4xLCAxMi44LCA5LjYsIDExLjEsIDEwLjEsIC00LjgsIC05LjQsIC04LjEsIC04LjYsIC01MC4wLCAtMTguMywgLTUwLjAsIC0xNS40LCAtNS45LCAtNy41LCAtNi42LCAtNy4xLCAtNTAuMCwgLTkuNSwgLTExLjcsIC04LjQsIC0xMi41LCAtMTcuMywgLTEzLjIsIC0xNS40LF0sXG4gICAgICAgICAgICBbLTEwLjIsIC0xLjYsIC0xMC4yLCAtMy4yLCAtNy4zLCAtNC42LCAtNi41LCAtNi4yLCAtNi43LCAzLjAsIC02LjgsIDAuOCwgLTExLjksIC0xMC44LCAtMTEuNSwgLTEyLjIsIC05LjYsIC03LjEsIC05LjcsIC04LjQsIC05LjgsIC04LjEsIC04LjIsIC05LjcsIC05LjQsIC01LjAsIC04LjAsIC03LjIsIC0xNS4yLCAtMTIuOCwgLTE0LjksIC0xMy44LCAtNi42LCAtMS43LCAtNi44LCAtNC4yLCAtMy4zLCAtMC45LCAtMi4wLCAtMy4wLCA5LjYsIDEyLjgsIDkuNywgMTAuNSwgLTguNSwgLTUuNiwgLTkuMywgLTcuOCwgLTUwLjAsIC0xMi43LCAtNTAuMCwgLTEzLjgsIC02LjgsIC01LjEsIC01LjMsIC02LjUsIC01MC4wLCAtNC4xLCAtMTIuOCwgLTUuOCwgLTE0LjQsIC0xNC4xLCAtMTMuNiwgLTE0LjgsXSxcbiAgICAgICAgICAgIFstOC4yLCAtNC43LCAtNy4xLCAtNS4wLCAtNi41LCAtNy43LCAtNS41LCAtNi45LCAtNC4xLCAtMC44LCAtMS4yLCAtMC45LCAtMTAuNSwgLTEyLjgsIC04LjIsIC0xMy4wLCAtNy41LCAtMTAuMCwgLTcuMiwgLTkuNywgLTkuMiwgLTkuNCwgLTcuMywgLTEwLjIsIC02LjUsIC04LjAsIC00LjMsIC04LjAsIC0xMy4xLCAtMTQuMSwgLTEyLjIsIC0xMy44LCAtMy43LCAtNS40LCAtMi41LCAtNS40LCAtMS44LCAtMy4xLCAwLjEsIC0zLjMsIDExLjEsIDkuNywgMTIuOSwgOS44LCAtNS41LCAtOC4xLCAtNS40LCAtNy44LCAtNTAuMCwgLTE2LjQsIC01MC4wLCAtMTQuOCwgLTUuOSwgLTcuMSwgLTQuNywgLTcuMiwgLTUwLjAsIC04LjQsIC02LjQsIC04LjEsIC0xMi4xLCAtMTYuMiwgLTEwLjMsIC0xNS44LF0sXG4gICAgICAgICAgICBbLTkuMiwgLTMuMCwgLTkuOSwgLTEuMiwgLTYuNSwgLTYuMSwgLTYuOCwgLTQuNCwgLTYuNCwgMC45LCAtNy4wLCAzLjAsIC0xMS44LCAtMTMuMCwgLTExLjEsIC0xMC40LCAtOS4zLCAtOS4yLCAtOS44LCAtNi40LCAtOS41LCAtOS41LCAtOS40LCAtOC4wLCAtOC4xLCAtOC4yLCAtOS40LCAtNS4yLCAtMTQuMiwgLTE0LjksIC0xNC45LCAtMTIuMywgLTUuNywgLTMuNywgLTYuNywgLTEuMywgLTIuNCwgLTMuMCwgLTIuNCwgLTEuMCwgMTAuMSwgMTAuNSwgOS44LCAxMy4xLCAtNy4yLCAtOC4wLCAtOC40LCAtNS4wLCAtNTAuMCwgLTE0LjcsIC01MC4wLCAtMTEuNCwgLTYuMywgLTYuNywgLTUuOCwgLTUuMCwgLTUwLjAsIC02LjEsIC0xMy40LCAtMy42LCAtMTMuMCwgLTE2LjAsIC0xMy43LCAtMTMuMyxdLFxuICAgICAgICAgICAgWy04LjIsIC0xMC44LCAtMTAuMSwgLTkuOCwgLTAuNCwgLTMuNiwgLTEuNywgLTIuOSwgLTcuOSwgLTguNCwgLTkuOCwgLTguMiwgNi4yLCAyLjMsIDAuNiwgMi45LCAtNy4xLCAtMTEuNiwgLTkuMiwgLTExLjEsIC01LjYsIC04LjMsIC03LjIsIC04LjQsIC0xMC43LCAtMTMuNiwgLTExLjQsIC0xMi4wLCAwLjAsIC0yLjgsIC0xLjgsIC0yLjQsIC02LjAsIC0xMS42LCAtNy41LCAtMTAuOCwgMS41LCAtMi4wLCAwLjAsIC0xLjEsIC00LjgsIC04LjUsIC01LjUsIC03LjIsIDExLjksIDguNiwgMTAuMCwgOS4wLCAtNTAuMCwgLTE0LjIsIC01MC4wLCAtMTIuOCwgLTQuMSwgLTcuNCwgLTUuNywgLTYuNSwgLTUwLjAsIC0xMS4wLCAtMTQuMywgLTkuOSwgMS40LCAtNy45LCAtMC43LCAtNi44LF0sXG4gICAgICAgICAgICBbLTEyLjUsIC04LjcsIC0xMy4wLCAtOS45LCAtMy45LCAtMS4wLCAtMy40LCAtMi45LCAtMTIuNSwgLTYuMywgLTExLjYsIC04LjEsIDMuMywgNi4wLCAtMS42LCAzLjgsIC0xMC41LCAtMTAuMSwgLTExLjEsIC0xMS4xLCAtOS4wLCAtNi45LCAtOC4yLCAtOS4xLCAtMTQuMCwgLTExLjQsIC0xMi4zLCAtMTIuMSwgLTMuMSwgMC4yLCAtMy4yLCAtMi4yLCAtMTAuNCwgLTkuMSwgLTEwLjQsIC0xMS41LCAtMi4xLCAxLjIsIC0xLjEsIC0xLjQsIC05LjQsIC01LjYsIC04LjEsIC04LjAsIDguNiwgMTIuNCwgOC42LCA5LjUsIC01MC4wLCAtMTAuNCwgLTUwLjAsIC0xMS42LCAtNy4yLCAtNS43LCAtNy41LCAtNy40LCAtNTAuMCwgLTguNiwgLTE1LjcsIC05LjcsIC0zLjAsIC0zLjcsIC0zLjIsIC01LjksXSxcbiAgICAgICAgICAgIFstMTEuMSwgLTExLjksIC0xMC42LCAtMTEuMywgLTIuNiwgLTQuMSwgLTEuNywgLTMuNSwgLTExLjQsIC05LjYsIC05LjYsIC05LjIsIDMuNywgMi41LCAxLjYsIDIuNSwgLTkuNiwgLTEyLjMsIC05LjUsIC0xMS44LCAtOC4wLCAtOS40LCAtNy4yLCAtOS4zLCAtMTMuMywgLTEyLjgsIC0xMC45LCAtMTIuNiwgLTEuOCwgLTIuOSwgLTAuOCwgLTIuOSwgLTguNiwgLTEzLjAsIC03LjQsIC0xMi40LCAtMC40LCAtMi4zLCAxLjMsIC0yLjAsIC04LjEsIC05LjMsIC01LjQsIC04LjQsIDEwLjAsIDguNiwgMTEuNCwgOC45LCAtNTAuMCwgLTEzLjcsIC01MC4wLCAtMTMuMiwgLTYuMSwgLTguMSwgLTUuNSwgLTcuNSwgLTUwLjAsIC0xMS4zLCAtMTIuNywgLTEwLjEsIC0xLjYsIC03LjgsIC0wLjMsIC03LjIsXSxcbiAgICAgICAgICAgIFstMTEuNCwgLTEwLjAsIC0xMi43LCAtOC4yLCAtMy4xLCAtMy4xLCAtMi44LCAtMC45LCAtMTEuNywgLTcuMywgLTEyLjEsIC01LjgsIDMuNiwgMy42LCAtMS4xLCA1LjgsIC05LjQsIC0xMS45LCAtMTAuNywgLTEwLjAsIC04LjUsIC04LjgsIC04LjIsIC02LjUsIC0xMy45LCAtMTMuMCwgLTEyLjksIC0xMC45LCAtMy4xLCAtMi4zLCAtMy4yLCAtMC4yLCAtOS41LCAtMTAuOCwgLTEwLjIsIC04LjIsIC0xLjEsIC0xLjMsIC0wLjgsIDEuMiwgLTguNiwgLTcuOCwgLTcuOCwgLTUuMCwgOS4wLCA5LjUsIDguOSwgMTIuMCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTEwLjMsIC02LjIsIC03LjAsIC03LjEsIC01LjQsIC01MC4wLCAtOS4zLCAtMTQuMCwgLTguMiwgLTIuNCwgLTYuMywgLTIuNCwgLTMuOSxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMzLjMsIC01MC4wLCAzMC42LCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI5LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTE0LjgsIC02LjIsIC0xNC45LCAtNy42LCAtMTQuNiwgLTExLjYsIC0xMy4wLCAtMTIuMiwgLTE0LjAsIC05LjAsIC0xNC4xLCAtMTAuMSwgLTEzLjYsIC0xMS4yLCAtMTIuNCwgLTEyLjUsIC04LjEsIDIuMiwgLTguNywgMC40LCAtMTUuMywgLTExLjMsIC0xMy4yLCAtMTMuMywgLTExLjksIC03LjIsIC0xMS44LCAtNy45LCAtMTAuNywgLTcuNCwgLTEwLjgsIC04LjksIC0xNS41LCAtMTAuMywgLTE1LjUsIC0xMi41LCAtMTQuNSwgLTEyLjEsIC0xMS45LCAtMTIuOCwgLTE4LjMsIC0xMi43LCAtMTYuNCwgLTE0LjcsIC0xNC4yLCAtMTAuNCwgLTEzLjcsIC0xMy4wLCAtNTAuMCwgMTUuMSwgLTUwLjAsIDEzLjMsIC05LjksIC01LjgsIC04LjksIC03LjYsIC01MC4wLCAtMS41LCAtNy44LCAtMy4wLCAtOC4xLCAzLjYsIC05LjQsIDIuMCxdLFxuICAgICAgICAgICAgWy01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDMwLjYsIC01MC4wLCAzNS4yLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIDI4LjUsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLF0sXG4gICAgICAgICAgICBbLTEzLjgsIC03LjUsIC0xNC40LCAtNS4xLCAtMTIuNiwgLTExLjYsIC0xMS41LCAtMTAuMSwgLTEzLjIsIC05LjcsIC0xMi43LCAtNy40LCAtMTEuOSwgLTExLjksIC0xMS41LCAtMTAuMiwgLTcuMiwgMC45LCAtOC42LCAyLjYsIC0xNC4xLCAtMTIuOCwgLTEzLjMsIC0xMS4wLCAtOS43LCAtOC40LCAtMTEuMiwgLTUuMywgLTkuMywgLTguNywgLTkuOSwgLTcuMSwgLTEzLjksIC0xMS4yLCAtMTQuMiwgLTguOSwgLTEyLjksIC0xMi42LCAtMTIuNiwgLTEwLjksIC0xNS40LCAtMTMuOCwgLTE0LjgsIC0xMS40LCAtMTIuOCwgLTExLjYsIC0xMy4yLCAtMTAuMywgLTUwLjAsIDEzLjMsIC01MC4wLCAxNS4yLCAtOC42LCAtNy4wLCAtOC40LCAtNC44LCAtNTAuMCwgLTMuMCwgLTcuMSwgLTAuMSwgLTcuMywgMi4zLCAtOC43LCAzLjksXSxcbiAgICAgICAgICAgIFstNy4zLCAtNi4zLCAtOC45LCAtNS41LCAyLjksIDAuMiwgMS41LCAxLjIsIC04LjUsIC0yLjMsIC0xMC4wLCAtMS43LCAtNS42LCAtMTAuNSwgLTUuNSwgLTkuNiwgLTQuMywgLTcuOSwgLTYuMSwgLTcuMiwgMi4zLCAtMC42LCAwLjUsIC0wLjAsIC04LjksIC0xMS4wLCAtOS40LCAtOS4zLCAtNC42LCAtOS40LCAtNy4zLCAtOC4xLCAtNy44LCAtOS44LCAtOC45LCAtOS4yLCAyLjgsIDAuMSwgMS4yLCAwLjgsIC01LjksIC02LjgsIC01LjksIC02LjMsIC00LjEsIC03LjIsIC02LjEsIC02LjIsIC01MC4wLCAtOS45LCAtNTAuMCwgLTguNiwgMTIuNSwgOS40LCAxMS4wLCA5LjgsIC01MC4wLCAtNC44LCAtOC43LCAtMy41LCAtMC4wLCAtOC42LCAtMi4xLCAtNy4wLF0sXG4gICAgICAgICAgICBbLTEwLjEsIC00LjMsIC0xMC44LCAtNS44LCAwLjEsIDIuMywgMC43LCAwLjYsIC0xMC40LCAtMC4yLCAtMTAuOCwgLTIuMCwgLTguOCwgLTkuMiwgLTguMCwgLTkuNywgLTYuOCwgLTUuOSwgLTcuNSwgLTcuMCwgLTEuNCwgMi4yLCAtMC45LCAtMC40LCAtMTAuOCwgLTcuNywgLTkuOCwgLTguOCwgLTguOSwgLTcuMywgLTkuNiwgLTkuMSwgLTEwLjUsIC04LjMsIC0xMC4yLCAtMTAuMCwgLTAuMCwgMi41LCAwLjcsIDAuNSwgLTcuNSwgLTUuMSwgLTcuMSwgLTYuNywgLTcuNCwgLTUuNywgLTguMSwgLTcuMCwgLTUwLjAsIC01LjgsIC01MC4wLCAtNy4wLCA5LjQsIDEyLjcsIDEwLjEsIDEwLjAsIC01MC4wLCAtMS41LCAtMTEuMywgLTMuMywgLTUuNCwgLTQuMiwgLTUuNiwgLTYuOCxdLFxuICAgICAgICAgICAgWy04LjQsIC02LjIsIC04LjksIC01LjksIDEuOCwgMC40LCAyLjcsIDEuMiwgLTkuMSwgLTEuMiwgLTguOCwgLTEuNSwgLTcuMiwgLTEwLjUsIC00LjksIC05LjYsIC01LjcsIC03LjQsIC01LjUsIC03LjQsIDAuMywgLTAuMywgMS44LCAtMC40LCAtOS4wLCAtOC43LCAtNy4zLCAtOC45LCAtNS45LCAtOS40LCAtNi40LCAtOC43LCAtOC43LCAtOS4xLCAtOC41LCAtOS40LCAxLjQsIDAuNywgMy41LCAwLjcsIC02LjYsIC01LjMsIC00LjcsIC01LjgsIC01LjcsIC03LjUsIC01LjUsIC03LjEsIC01MC4wLCAtOC45LCAtNTAuMCwgLTguNCwgMTEuMCwgMTAuMSwgMTMuMiwgMTAuMiwgLTUwLjAsIC00LjIsIC02LjEsIC0zLjYsIC0zLjUsIC04LjQsIC0xLjIsIC02LjgsXSxcbiAgICAgICAgICAgIFstOS4xLCAtNS40LCAtMTAuNCwgLTQuMiwgMS4wLCAwLjUsIDAuNiwgMi40LCAtOS42LCAtMS41LCAtMTAuNSwgLTAuNSwgLTguOSwgLTEwLjUsIC03LjIsIC04LjMsIC02LjMsIC02LjksIC03LjcsIC01LjEsIC0wLjUsIDAuMSwgLTAuNiwgMi4zLCAtMTEuMSwgLTEwLjIsIC0xMC41LCAtNy4wLCAtOC4zLCAtOS40LCAtOS40LCAtNi42LCAtOS42LCAtOS43LCAtMTAuMCwgLTcuOSwgMC43LCAwLjYsIDAuOCwgMi4zLCAtNy4xLCAtNi41LCAtNy4yLCAtNS4wLCAtNi41LCAtNy40LCAtNy41LCAtNS40LCAtNTAuMCwgLTcuNiwgLTUwLjAsIC00LjgsIDkuOCwgMTAuMCwgMTAuMiwgMTIuMSwgLTUwLjAsIC0zLjEsIC0xMS40LCAtMC43LCAtNC42LCAtNi42LCAtNC45LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIDI4LjUsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTcuMCwgLTEzLjEsIC04LjMsIC05LjIsIC02LjUsIC04LjksIC03LjYsIC05LjgsIC0wLjcsIC05LjIsIC0yLjEsIC0xMi40LCAtMTAuMywgLTEyLjQsIC0xMS42LCAtOS41LCAtNC42LCAtMTAuNCwgLTUuNywgLTEzLjYsIC0xMC4xLCAtMTEuNCwgLTEwLjksIC02LjUsIC0xLjUsIC02LjIsIC0zLjYsIC0xMi44LCAtOC4wLCAtMTIuMywgLTkuNywgLTE2LjUsIC0xMi43LCAtMTUuNiwgLTE0LjMsIC04LjcsIC02LjAsIC03LjEsIC03LjUsIC05LjUsIC00LjEsIC04LjQsIC02LjEsIC0xMS4wLCAtOC42LCAtMTEuMywgLTkuMywgLTUwLjAsIC0xLjUsIC01MC4wLCAtMy4wLCAtNC44LCAtMS41LCAtNC4yLCAtMy4xLCAtNTAuMCwgMTYuNCwgLTUuMSwgMTQuMiwgLTEwLjEsIC00LjMsIC0xMC4wLCAtNS40LF0sXG4gICAgICAgICAgICBbLTEzLjUsIC0xNi4zLCAtMTEuOCwgLTE1LjUsIC0xMy42LCAtMTUuMywgLTEyLjEsIC0xNi4xLCAtNy43LCAtMTMuMywgLTQuMiwgLTEyLjYsIC0xNC4xLCAtMTYuMiwgLTEwLjMsIC0xNS40LCAtOS42LCAtMTEuNiwgLTcuNywgLTkuOCwgLTE0LjMsIC0xNy41LCAtMTEuMSwgLTE3LjIsIC01LjMsIC03LjEsIC0yLjIsIC03LjEsIC05LjYsIC0xMS45LCAtOC43LCAtMTEuNCwgLTE3LjEsIC0yMC42LCAtMTUuMywgLTE5LjksIC0xNC4xLCAtMTQuOCwgLTEyLjQsIC0xNi41LCAtMTEuNywgLTEyLjgsIC02LjQsIC0xMy40LCAtMTQuMywgLTE1LjcsIC0xMi43LCAtMTQuMCwgLTUwLjAsIC03LjgsIC01MC4wLCAtNy4xLCAtOC43LCAtMTEuMywgLTYuMSwgLTExLjQsIC01MC4wLCAtNS4xLCAxOC42LCAtNC44LCAtOC42LCAtOC4xLCAtNC41LCAtNy4zLF0sXG4gICAgICAgICAgICBbLTEyLjQsIC04LjIsIC0xMy4wLCAtNS45LCAtNy43LCAtNy44LCAtNy40LCAtNS44LCAtOC44LCAtMi4wLCAtOS4zLCAtMC40LCAtMTEuNiwgLTExLjMsIC0xMS42LCAtOS40LCAtOC45LCAtNS42LCAtMTAuMCwgLTMuMiwgLTExLjUsIC0xMS4xLCAtMTAuNSwgLTguMywgLTYuMywgLTQuOSwgLTYuNywgLTEuMiwgLTEwLjYsIC05LjcsIC0xMS4zLCAtOC4wLCAtMTQuOCwgLTEzLjEsIC0xNS41LCAtMTEuNCwgLTcuNSwgLTcuNSwgLTcuMSwgLTUuOSwgLTguNCwgLTUuOCwgLTguMSwgLTMuNiwgLTkuOSwgLTkuNywgLTEwLjEsIC04LjIsIC01MC4wLCAtMy4wLCAtNTAuMCwgLTAuMSwgLTMuNSwgLTMuMywgLTMuNiwgLTAuNywgLTUwLjAsIDE0LjIsIC00LjgsIDE2LjQsIC04LjksIC01LjgsIC04LjksIC0zLjQsXSxcbiAgICAgICAgICAgIFstMTAuNywgLTEzLjIsIC0xMi40LCAtMTEuNiwgLTQuOCwgLTguNCwgLTYuMSwgLTcuMiwgLTEwLjMsIC0xMS44LCAtMTEuMCwgLTExLjYsIDIuOCwgLTEuNywgMC43LCAtMS4xLCAtNi4yLCAtOS43LCAtNy4zLCAtOC40LCAtNS4zLCAtOC42LCAtNi4xLCAtOC4zLCAtMTAuNSwgLTExLjIsIC05LjgsIC0xMC4yLCA5LjUsIDYuNSwgNy42LCA2LjgsIC0xMi4xLCAtMTYuMCwgLTEzLjAsIC0xNi4yLCAtNS4yLCAtOC42LCAtNy4xLCAtNy44LCAtMTIuNSwgLTE0LjQsIC0xMi4xLCAtMTMuMCwgMS40LCAtMy4wLCAtMS42LCAtMi40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjMsIC0wLjAsIC01LjQsIC0zLjUsIC00LjYsIC01MC4wLCAtMTAuMSwgLTguNiwgLTguOSwgMTMuMiwgLTAuOSwgOS43LCAtMC4zLF0sXG4gICAgICAgICAgICBbLTE4LjEsIC0xMi4zLCAtMTkuNCwgLTE0LjIsIC0xMi4yLCAtOS41LCAtMTEuNSwgLTEwLjgsIC0xNy45LCAtMTEuOSwgLTE4LjIsIC0xMy45LCAtNi40LCAtMy43LCAtNi44LCAtNS40LCAtMTIuOCwgLTUuOSwgLTEzLjYsIC03LjQsIC0xMy43LCAtOS45LCAtMTIuOSwgLTEyLjcsIC0xNi4yLCAtMTEuNiwgLTE1LjIsIC0xMi43LCAtMy4yLCAwLjUsIC0zLjMsIC0xLjgsIC0xOC45LCAtMTYuNiwgLTE4LjgsIC0xOS4yLCAtMTIuNSwgLTkuNCwgLTEwLjYsIC0xMS4xLCAtMTcuMywgLTE0LjEsIC0xNi4yLCAtMTYuMCwgLTcuOSwgLTMuNywgLTcuOCwgLTYuMywgLTUwLjAsIDMuNiwgLTUwLjAsIDIuMywgLTguNiwgLTQuMiwgLTguNCwgLTYuNiwgLTUwLjAsIC00LjMsIC04LjEsIC01LjgsIC0wLjksIDE0LjIsIC0xLjgsIDExLjYsXSxcbiAgICAgICAgICAgIFstMTEuOCwgLTEzLjEsIC0xMS41LCAtMTIuMCwgLTYuMiwgLTguMywgLTUuNCwgLTcuNCwgLTExLjgsIC0xMi4zLCAtMTEuMSwgLTExLjQsIDAuNSwgLTIuNSwgMi40LCAtMS42LCAtNi44LCAtOS45LCAtNi40LCAtOC45LCAtNi4xLCAtOC42LCAtNS4wLCAtNy44LCAtMTAuNCwgLTExLjYsIC04LjUsIC05LjksIDguMiwgNi40LCA4LjcsIDYuOSwgLTEyLjQsIC0xNy4wLCAtMTIuNiwgLTE1LjgsIC02LjUsIC04LjUsIC01LjAsIC03LjgsIC0xMy4yLCAtMTMuNiwgLTEwLjMsIC0xMy43LCAtMC43LCAtMy4yLCAtMC4zLCAtMi40LCAtNTAuMCwgLTkuNCwgLTUwLjAsIC04LjcsIC0yLjEsIC01LjYsIC0xLjIsIC00LjksIC01MC4wLCAtMTAuMCwgLTQuNSwgLTguOSwgOS43LCAtMS44LCAxMS4zLCAtMC45LF0sXG4gICAgICAgICAgICBbLTE3LjIsIC0xMy4zLCAtMTcuOCwgLTExLjYsIC0xMS4wLCAtMTEuMSwgLTEwLjQsIC05LjAsIC0xNi4wLCAtMTIuNywgLTE2LjEsIC0xMS4xLCAtNS4yLCAtNS40LCAtNi4wLCAtMy4zLCAtMTEuOCwgLTcuMywgLTEzLjMsIC01LjksIC0xMi43LCAtMTEuOSwgLTExLjksIC05LjMsIC0xNS4yLCAtMTUuMCwgLTE0LjksIC0xMS4wLCAtMi44LCAtMS44LCAtMi45LCAwLjQsIC0xNy40LCAtMTguNCwgLTE4LjMsIC0xNS45LCAtMTAuNywgLTExLjIsIC0xMC42LCAtOS4wLCAtMTUuNCwgLTE0LjgsIC0xNS44LCAtMTMuMywgLTYuOCwgLTUuOSwgLTcuMiwgLTMuOSwgLTUwLjAsIDIuMCwgLTUwLjAsIDMuOSwgLTcuMCwgLTYuOCwgLTYuOCwgLTMuOSwgLTUwLjAsIC01LjQsIC03LjMsIC0zLjQsIC0wLjMsIDExLjYsIC0wLjksIDE0LjEsXV07XG4gICAgICAgIHRoaXMuVFJBTlMgPSBbWzUsIDAsIDAsIDRdLFxuICAgICAgICAgICAgWzAsIDUsIDQsIDBdLFxuICAgICAgICAgICAgWzAsIDQsIDUsIDBdLFxuICAgICAgICAgICAgWzQsIDAsIDAsIDVdXTtcbiAgICAgICAgdGhpcy5DT05CTE8gPSB7ICdBJzogMCwgJ1InOiAxLCAnTic6IDIsICdEJzogMywgJ0MnOiA0LCAnUSc6IDUsICdFJzogNiwgJ0cnOiA3LCAnSCc6IDgsICdJJzogOSwgJ0wnOiAxMCwgJ0snOiAxMSwgJ00nOiAxMiwgJ0YnOiAxMywgJ1AnOiAxNCwgJ1MnOiAxNSwgJ1QnOiAxNiwgJ1cnOiAxNywgJ1knOiAxOCwgJ1YnOiAxOSwgJ0InOiAyMCwgJ1onOiAyMSwgJ1gnOiAyMiwgJyonOiAyMyB9O1xuICAgICAgICB0aGlzLkNPTk5VQ0wgPSB7ICdBJzogMCwgJ1QnOiAxLCAnQyc6IDIsICdHJzogMyB9O1xuICAgICAgICB0aGlzLkNPTlNDSE4gPSB7ICdBQUEnOiAwLCAnQUFDJzogMSwgJ0FBRyc6IDIsICdBQVQnOiAzLCAnQUNBJzogNCwgJ0FDQyc6IDUsICdBQ0cnOiA2LCAnQUNUJzogNywgJ0FHQSc6IDgsICdBR0MnOiA5LCAnQUdHJzogMTAsICdBR1QnOiAxMSwgJ0FUQSc6IDEyLCAnQVRDJzogMTMsICdBVEcnOiAxNCwgJ0FUVCc6IDE1LCAnQ0FBJzogMTYsICdDQUMnOiAxNywgJ0NBRyc6IDE4LCAnQ0FUJzogMTksICdDQ0EnOiAyMCwgJ0NDQyc6IDIxLCAnQ0NHJzogMjIsICdDQ1QnOiAyMywgJ0NHQSc6IDI0LCAnQ0dDJzogMjUsICdDR0cnOiAyNiwgJ0NHVCc6IDI3LCAnQ1RBJzogMjgsICdDVEMnOiAyOSwgJ0NURyc6IDMwLCAnQ1RUJzogMzEsICdHQUEnOiAzMiwgJ0dBQyc6IDMzLCAnR0FHJzogMzQsICdHQVQnOiAzNSwgJ0dDQSc6IDM2LCAnR0NDJzogMzcsICdHQ0cnOiAzOCwgJ0dDVCc6IDM5LCAnR0dBJzogNDAsICdHR0MnOiA0MSwgJ0dHRyc6IDQyLCAnR0dUJzogNDMsICdHVEEnOiA0NCwgJ0dUQyc6IDQ1LCAnR1RHJzogNDYsICdHVFQnOiA0NywgJ1RBQSc6IDQ4LCAnVEFDJzogNDksICdUQUcnOiA1MCwgJ1RBVCc6IDUxLCAnVENBJzogNTIsICdUQ0MnOiA1MywgJ1RDRyc6IDU0LCAnVENUJzogNTUsICdUR0EnOiA1NiwgJ1RHQyc6IDU3LCAnVEdHJzogNTgsICdUR1QnOiA1OSwgJ1RUQSc6IDYwLCAnVFRDJzogNjEsICdUVEcnOiA2MiwgJ1RUVCc6IDYzIH07XG4gICAgICAgIHRoaXMuc2V0TWV0aG9kKGFsaWduR3JpZF8pO1xuICAgICAgICB0aGlzLnNldFNlcXVlbmNlcyhzZXExXywgc2VxMl8pO1xuICAgICAgICB0aGlzLnNldEdhcChnYXBfKTtcbiAgICB9XG4gICAgZmlsbE5lZWRsZW1hbigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldWzBdLnBhcmVudEogPSAwO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMjsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS52YWx1ZSA9IC1pICogdGhpcy5nYXA7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFswXVtpXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEogPSBpIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaWxsT25lKGksIGopIHtcbiAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPSBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1baiAtIDFdLnZhbHVlICsgdGhpcy5zY29yZXNbaSAtIDFdW2ogLSAxXSwgTWF0aC5tYXgodGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXAsIHRoaXMuZHBHcmlkW2ldW2ogLSAxXS52YWx1ZSAtIHRoaXMuZ2FwKSk7XG4gICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9PSB0aGlzLmRwR3JpZFtpIC0gMV1baiAtIDFdLnZhbHVlICsgdGhpcy5zY29yZXNbaSAtIDFdW2ogLSAxXSkge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGogLSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqXS52YWx1ZSAtIHRoaXMuZ2FwKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gajtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IGogLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdyaWRGcm9tTmFtZShwYXRoKSB7XG4gICAgICAgIHN3aXRjaCAocGF0aCkge1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNDUnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU00NTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU02Mic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTYyO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNODAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU04MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTkwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNOTA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU0zMCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTMwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNNzAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5QQU03MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTI1MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTI1MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ05VQ0xFT1RJREVTJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuTlVDTEVPVElERVM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OTlVDTDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVFJBTlMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5UUkFOUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTQ0hORUlERVInOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5TQ0hORUlERVI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OU0NITjtcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RSZXN1bHQoaSwgaikge1xuICAgICAgICBsZXQgcmVzMSA9IFwiXCIsIHJlczIgPSBcIlwiLCBnYXBTID0gXCJcIjtcbiAgICAgICAgbGV0IHRvdGFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGVwOyBpKyspIHtcbiAgICAgICAgICAgIGdhcFMgKz0gJ3wnO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpID4gMCB8fCBqID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPT0gaSkge1xuICAgICAgICAgICAgICAgIHJlczEgPSBnYXBTICsgcmVzMTtcbiAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPT0gaikge1xuICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgICAgICByZXMxID0gdGhpcy5zZXExLnN1YnN0cigoaSAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMxID0gdGhpcy5zZXExLnN1YnN0cigoaSAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSBnYXBTICsgcmVzMTtcbiAgICAgICAgICAgICAgICBpZiAoaiAtIDEgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmVzMiA9IHRoaXMuc2VxMi5zdWJzdHIoKGogLSAxKSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKSArIHJlczI7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gZ2FwUyArIHJlczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdGVtcEkgPSBpO1xuICAgICAgICAgICAgaSA9IHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEk7XG4gICAgICAgICAgICBqID0gdGhpcy5kcEdyaWRbdGVtcEldW2pdLnBhcmVudEo7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBBbGlnbmVkKHJlczEsIHJlczIsIHRvdGFsKTtcbiAgICB9XG4gICAgZmlsbFNjb3JlcygpIHtcbiAgICAgICAgdGhpcy5zY29yZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zY29yZXMucHVzaChbXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY29yZXNbaV0ucHVzaCh0aGlzLmFsaWduR3JpZFt0aGlzLmNvbm5lY3Rpb25zW3RoaXMuc2VxMS5zdWJzdHIoaSAqIHRoaXMuc3RlcCwgdGhpcy5zdGVwKV1dW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXEyLnN1YnN0cihqICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHR5cGVSZWMoKSB7XG4gICAgICAgIGlmICgvW0FUR0NdKi8udGVzdCh0aGlzLnNlcTEpICYmIC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMikpXG4gICAgICAgICAgICByZXR1cm4gXCJOVUNMRU9USURFU1wiO1xuICAgICAgICBpZiAoL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTEpICYmIC9bQVJORENRRUdISUxLTUZQU1RXWVZCWlgqXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIkJMT1NVTTYyXCI7XG4gICAgICAgIHRocm93IEVycm9yKFwiQ2FuJ3QgcmVjb2duaXplIHNlcXVlbmNlIHR5cGVcIik7XG4gICAgfVxuICAgIG5lZWRsZW1hbld1bmNoKCkge1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMSArIDE7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjIgKyAxOyBqKyspXG4gICAgICAgICAgICAgICAgcm93LnB1c2gobmV3IENlbGwoKSk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZC5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsTmVlZGxlbWFuKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbE9uZShpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQodGhpcy5sZW4xLCB0aGlzLmxlbjIpO1xuICAgIH1cbiAgICBzbWl0aFdhdGVybWFuKCkge1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMSArIDE7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmxlbjIgKyAxOyBqKyspXG4gICAgICAgICAgICAgICAgcm93LnB1c2gobmV3IENlbGwoKSk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZC5wdXNoKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJlc3RWYWwgPSAwO1xuICAgICAgICBsZXQgYmVzdEkgPSAwLCBiZXN0SiA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSB0aGlzLmxlbjI7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsbE9uZShpLCBqKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SV1bdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50Sl0udmFsdWUgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA+IGJlc3RWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgYmVzdFZhbCA9IHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBiZXN0SSA9IGk7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RKID0gajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0UmVzdWx0KGJlc3RJLCBiZXN0Sik7XG4gICAgfVxuICAgIHNldFNlcXVlbmNlcyhzZXExXywgc2VxMl8pIHtcbiAgICAgICAgdGhpcy5zZXExID0gc2VxMV87XG4gICAgICAgIHRoaXMuc2VxMiA9IHNlcTJfO1xuICAgICAgICB0aGlzLmxlbjEgPSB0aGlzLnNlcTEubGVuZ3RoIC8gdGhpcy5zdGVwO1xuICAgICAgICB0aGlzLmxlbjIgPSB0aGlzLnNlcTIubGVuZ3RoIC8gdGhpcy5zdGVwO1xuICAgICAgICB0aGlzLmZpbGxTY29yZXMoKTtcbiAgICB9XG4gICAgc2V0R2FwKGdhcF8pIHtcbiAgICAgICAgdGhpcy5nYXAgPSBnYXBfO1xuICAgIH1cbiAgICBzZXRNZXRob2QoYWxpZ25HcmlkXyA9IFwiXCIpIHtcbiAgICAgICAgaWYgKGFsaWduR3JpZF8gPT0gXCJBVVRPXCIpIHtcbiAgICAgICAgICAgIGFsaWduR3JpZF8gPSB0aGlzLnR5cGVSZWMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWRGcm9tTmFtZShhbGlnbkdyaWRfKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgKiBhcyBPQ0wgZnJvbSAnb3BlbmNoZW1saWIvZnVsbC5qcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFjcm9Nb2wobW9sQmxvY2tzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2xCbG9ja3MubGVuZ3RoOyBpKyspXG4gICAgICAgIG1vbEJsb2Nrc1tpXSA9IHJvdGF0ZUJhY2tib25lVjMwMDAobW9sQmxvY2tzW2ldKTtcbiAgICByZXR1cm4gbGlua1YzMDAwKG1vbEJsb2Nrcyk7XG59XG5mdW5jdGlvbiByb3RhdGVCYWNrYm9uZVYzMDAwKG1vbGVjdWxlKSB7XG4gICAgbGV0IG1vbEJsb2NrID0gT0NMLk1vbGVjdWxlLmZyb21Nb2xmaWxlKG1vbGVjdWxlKS50b01vbGZpbGVWMygpO1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2spO1xuICAgIGNvbnN0IG5hdG9tID0gY29vcmRpbmF0ZXMuYXRvbUluZGV4Lmxlbmd0aDtcbiAgICBjb25zdCBpbmRleEZpdmVQcmltZSA9IGNvb3JkaW5hdGVzLmF0b21JbmRleC5pbmRleE9mKDEpO1xuICAgIGNvbnN0IGluZGV4VGhyZWVQcmltZSA9IGNvb3JkaW5hdGVzLmF0b21JbmRleC5pbmRleE9mKG5hdG9tKTtcbiAgICBjb25zdCB4Q2VudGVyID0gKGNvb3JkaW5hdGVzLnhbaW5kZXhUaHJlZVByaW1lXSArIGNvb3JkaW5hdGVzLnhbaW5kZXhGaXZlUHJpbWVdKSAvIDI7XG4gICAgY29uc3QgeUNlbnRlciA9IChjb29yZGluYXRlcy55W2luZGV4VGhyZWVQcmltZV0gKyBjb29yZGluYXRlcy55W2luZGV4Rml2ZVByaW1lXSkgLyAyO1xuICAgIC8vcGxhY2UgdG8gY2VudGVyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgIGNvb3JkaW5hdGVzLnhbaV0gLT0geENlbnRlcjtcbiAgICAgICAgY29vcmRpbmF0ZXMueVtpXSAtPSB5Q2VudGVyO1xuICAgIH1cbiAgICBsZXQgYW5nbGUgPSAwO1xuICAgIGlmIChjb29yZGluYXRlcy54W2luZGV4Rml2ZVByaW1lXSA9PSAwKVxuICAgICAgICBhbmdsZSA9IGNvb3JkaW5hdGVzLnlbaW5kZXhGaXZlUHJpbWVdID4gY29vcmRpbmF0ZXMueVtpbmRleFRocmVlUHJpbWVdID8gTWF0aC5QSSAvIDIgOiAzICogTWF0aC5QSSAvIDI7XG4gICAgZWxzZSBpZiAoY29vcmRpbmF0ZXMueVtpbmRleEZpdmVQcmltZV0gPT0gMClcbiAgICAgICAgYW5nbGUgPSBjb29yZGluYXRlcy54W2luZGV4Rml2ZVByaW1lXSA+IGNvb3JkaW5hdGVzLnhbaW5kZXhUaHJlZVByaW1lXSA/IE1hdGguUEkgOiAwO1xuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkZXJpdmF0aXZlID0gY29vcmRpbmF0ZXMueVtpbmRleEZpdmVQcmltZV0gLyBjb29yZGluYXRlcy54W2luZGV4Rml2ZVByaW1lXTtcbiAgICAgICAgYW5nbGUgPSBkZXJpdmF0aXZlID4gMCA/IE1hdGguUEkgLSBNYXRoLmF0YW4oZGVyaXZhdGl2ZSkgOiBNYXRoLmF0YW4oZGVyaXZhdGl2ZSk7XG4gICAgfVxuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgICBjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHhBZGQgPSBjb29yZGluYXRlcy54W2ldO1xuICAgICAgICBjb29yZGluYXRlcy54W2ldID0geEFkZCAqIGNvcyAtIGNvb3JkaW5hdGVzLnlbaV0gKiBzaW47XG4gICAgICAgIGNvb3JkaW5hdGVzLnlbaV0gPSB4QWRkICogc2luICsgY29vcmRpbmF0ZXMueVtpXSAqIGNvcztcbiAgICB9XG4gICAgLy9wbGFjZSB0byByaWdodFxuICAgIGNvbnN0IHhTaGlmdCA9IGNvb3JkaW5hdGVzLnhbaW5kZXhGaXZlUHJpbWVdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF0b207IGkrKylcbiAgICAgICAgY29vcmRpbmF0ZXMueFtpXSAtPSB4U2hpZnQ7XG4gICAgLy9yZXdyaXRlIG1vbEJsb2NrXG4gICAgbGV0IGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignTSAgVjMwIEJFR0lOIEFUT00nKTsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGNvb3JkaW5hdGVzXG4gICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdcXG4nLCBpbmRleCk7XG4gICAgbGV0IGluZGV4RW5kID0gaW5kZXg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXRvbTsgaSsrKSB7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXhFbmQpO1xuICAgICAgICBtb2xCbG9jayA9IG1vbEJsb2NrLnNsaWNlKDAsIGluZGV4KSArXG4gICAgICAgICAgICBjb29yZGluYXRlcy54W2ldICsgJyAnICsgY29vcmRpbmF0ZXMueVtpXSArXG4gICAgICAgICAgICBtb2xCbG9jay5zbGljZShpbmRleEVuZCk7XG4gICAgICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIG1vbEJsb2NrO1xufVxuZnVuY3Rpb24gZXh0cmFjdEF0b21EYXRhVjMwMDAobW9sQmxvY2spIHtcbiAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2spO1xuICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBBVE9NJyk7IC8vIFYzMDAwIGluZGV4IGZvciBhdG9tcyBjb29yZGluYXRlc1xuICAgIGluZGV4ID0gbW9sQmxvY2suaW5kZXhPZignXFxuJywgaW5kZXgpO1xuICAgIGxldCBpbmRleEVuZCA9IGluZGV4O1xuICAgIGNvbnN0IGluZGV4ZXMgPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB0eXBlcyA9IEFycmF5KG51bWJlcnMubmF0b20pO1xuICAgIGNvbnN0IHggPSBBcnJheShudW1iZXJzLm5hdG9tKTtcbiAgICBjb25zdCB5ID0gQXJyYXkobnVtYmVycy5uYXRvbSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1iZXJzLm5hdG9tOyBpKyspIHtcbiAgICAgICAgaW5kZXggPSBtb2xCbG9jay5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIGluZGV4ZXNbaV0gPSBwYXJzZUludChtb2xCbG9jay5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHR5cGVzW2ldID0gbW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCk7XG4gICAgICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgICAgICBpbmRleEVuZCA9IG1vbEJsb2NrLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgIHhbaV0gPSBwYXJzZUZsb2F0KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICAgICAgaW5kZXggPSBpbmRleEVuZCArIDE7XG4gICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgeVtpXSA9IHBhcnNlRmxvYXQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgICAgICBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ1xcbicsIGluZGV4KSArIDE7XG4gICAgfVxuICAgIHJldHVybiB7IGF0b21JbmRleDogaW5kZXhlcywgYXRvbVR5cGU6IHR5cGVzLCB4OiB4LCB5OiB5IH07XG59XG5mdW5jdGlvbiBsaW5rVjMwMDAobW9sQmxvY2tzKSB7XG4gICAgbGV0IG1hY3JvTW9sQmxvY2sgPSAnXFxuRGF0YWdyb2sgbWFjcm9tb2xlY3VsZSBoYW5kbGVyXFxuXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9ICcgIDAgIDAgIDAgIDAgIDAgIDAgICAgICAgICAgICA5OTkgVjMwMDBcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDVEFCXFxuJztcbiAgICBsZXQgYXRvbUJsb2NrID0gJyc7XG4gICAgbGV0IGJvbmRCbG9jayA9ICcnO1xuICAgIGxldCBjb2xsZWN0aW9uQmxvY2sgPSAnJztcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gW107XG4gICAgbGV0IG5hdG9tID0gMDtcbiAgICBsZXQgbmJvbmQgPSAwO1xuICAgIGxldCB4U2hpZnQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9sQmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1vbEJsb2Nrc1tpXSA9IG1vbEJsb2Nrc1tpXS5yZXBsYWNlQWxsKCcoLVxcbk0gIFYzMCAnLCAnKCcpXG4gICAgICAgICAgICAucmVwbGFjZUFsbCgnLVxcbk0gIFYzMCAnLCAnJykucmVwbGFjZUFsbCgnICknLCAnKScpO1xuICAgICAgICBjb25zdCBudW1iZXJzID0gZXh0cmFjdEF0b21zQm9uZHNOdW1iZXJzVjMwMDAobW9sQmxvY2tzW2ldKTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBleHRyYWN0QXRvbURhdGFWMzAwMChtb2xCbG9ja3NbaV0pO1xuICAgICAgICBsZXQgaW5kZXhBdG9tcyA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAgQkVHSU4gQVRPTScpOyAvLyBWMzAwMCBpbmRleCBmb3IgYXRvbXMgY29vcmRpbmF0ZXNcbiAgICAgICAgaW5kZXhBdG9tcyA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdcXG4nLCBpbmRleEF0b21zKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhBdG9tcztcbiAgICAgICAgbGV0IGluZGV4RW5kID0gaW5kZXhBdG9tcztcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5hdG9tOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlcy5hdG9tSW5kZXhbal0gIT0gMSB8fCBpID09IDApIHtcbiAgICAgICAgICAgICAgICAvL3Jld3JpdGUgYXRvbSBudW1iZXJcbiAgICAgICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdWMzAnLCBpbmRleCkgKyA0O1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXRvbU51bWJlciA9IHBhcnNlSW50KG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXgsIGluZGV4RW5kKSkgKyBuYXRvbTtcbiAgICAgICAgICAgICAgICBtb2xCbG9ja3NbaV0gPSBtb2xCbG9ja3NbaV0uc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbEJsb2Nrc1tpXS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgLy9yZXdyaXRlIGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbFNoaWZ0ID0geFNoaWZ0IC0gY29vcmRpbmF0ZXMueFswXTtcbiAgICAgICAgICAgICAgICBsZXQgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xCbG9ja3NbaV0uc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpICsgdG90YWxTaGlmdCkpIC8gMTAwMDA7XG4gICAgICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGNvb3JkaW5hdGUgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZSA9IE1hdGgucm91bmQoMTAwMDAgKiAocGFyc2VGbG9hdChtb2xCbG9ja3NbaV0uc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpKSkgLyAxMDAwMDtcbiAgICAgICAgICAgICAgICBtb2xCbG9ja3NbaV0gPSBtb2xCbG9ja3NbaV0uc2xpY2UoMCwgaW5kZXgpICsgY29vcmRpbmF0ZSArIG1vbEJsb2Nrc1tpXS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignXFxuJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ00gIFYzMCcsIGluZGV4KSAtIDE7XG4gICAgICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignXFxuJywgaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICBtb2xCbG9ja3NbaV0gPSBtb2xCbG9ja3NbaV0uc2xpY2UoMCwgaW5kZXgpICsgbW9sQmxvY2tzW2ldLnNsaWNlKGluZGV4RW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleEF0b21zRW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ00gIFYzMCBFTkQgQVRPTScpO1xuICAgICAgICBhdG9tQmxvY2sgKz0gbW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleEF0b21zICsgMSwgaW5kZXhBdG9tc0VuZCk7XG4gICAgICAgIGxldCBpbmRleEJvbmRzID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ00gIFYzMCBCRUdJTiBCT05EJyk7IC8vIFYzMDAwIGluZGV4IGZvciBib25kc1xuICAgICAgICBpbmRleEJvbmRzID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ1xcbicsIGluZGV4Qm9uZHMpO1xuICAgICAgICBpbmRleCA9IGluZGV4Qm9uZHM7XG4gICAgICAgIGluZGV4RW5kID0gaW5kZXhCb25kcztcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1iZXJzLm5ib25kOyBqKyspIHtcbiAgICAgICAgICAgIC8vcmV3cml0ZSBib25kIG51bWJlclxuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignVjMwJywgaW5kZXgpICsgNDtcbiAgICAgICAgICAgIGluZGV4RW5kID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCk7XG4gICAgICAgICAgICBjb25zdCBib25kTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIG5ib25kO1xuICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGJvbmROdW1iZXIgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgLy9yZXdyaXRlIGF0b20gcGFpciBpbiBib25kXG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpICsgMTtcbiAgICAgICAgICAgIGluZGV4ID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJyAnLCBpbmRleCkgKyAxO1xuICAgICAgICAgICAgaW5kZXhFbmQgPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KTtcbiAgICAgICAgICAgIGxldCBhdG9tTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKSArIG5hdG9tO1xuICAgICAgICAgICAgbW9sQmxvY2tzW2ldID0gbW9sQmxvY2tzW2ldLnNsaWNlKDAsIGluZGV4KSArIGF0b21OdW1iZXIgKyBtb2xCbG9ja3NbaV0uc2xpY2UoaW5kZXhFbmQpO1xuICAgICAgICAgICAgaW5kZXggPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignICcsIGluZGV4KSArIDE7XG4gICAgICAgICAgICBpbmRleEVuZCA9IE1hdGgubWluKG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdcXG4nLCBpbmRleCksIG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcgJywgaW5kZXgpKTtcbiAgICAgICAgICAgIGF0b21OdW1iZXIgPSBwYXJzZUludChtb2xCbG9ja3NbaV0uc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpICsgbmF0b207XG4gICAgICAgICAgICBtb2xCbG9ja3NbaV0gPSBtb2xCbG9ja3NbaV0uc2xpY2UoMCwgaW5kZXgpICsgYXRvbU51bWJlciArIG1vbEJsb2Nrc1tpXS5zbGljZShpbmRleEVuZCk7XG4gICAgICAgICAgICBpbmRleCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdcXG4nLCBpbmRleCkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4Qm9uZEVuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCdNICBWMzAgRU5EIEJPTkQnKTtcbiAgICAgICAgYm9uZEJsb2NrICs9IG1vbEJsb2Nrc1tpXS5zdWJzdHJpbmcoaW5kZXhCb25kcyArIDEsIGluZGV4Qm9uZEVuZCk7XG4gICAgICAgIGxldCBpbmRleENvbGxlY3Rpb24gPSBtb2xCbG9ja3NbaV0uaW5kZXhPZignTSAgVjMwIE1ETFYzMC9TVEVBQlMgQVRPTVM9KCcpOyAvLyBWMzAwMCBpbmRleCBmb3IgY29sbGVjdGlvbnNcbiAgICAgICAgd2hpbGUgKGluZGV4Q29sbGVjdGlvbiAhPSAtMSkge1xuICAgICAgICAgICAgaW5kZXhDb2xsZWN0aW9uICs9IDI4O1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbkVuZCA9IG1vbEJsb2Nrc1tpXS5pbmRleE9mKCcpJywgaW5kZXhDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb25FbnRyaWVzID0gbW9sQmxvY2tzW2ldLnN1YnN0cmluZyhpbmRleENvbGxlY3Rpb24sIGNvbGxlY3Rpb25FbmQpLnNwbGl0KCcgJykuc2xpY2UoMSk7XG4gICAgICAgICAgICBjb2xsZWN0aW9uRW50cmllcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKHBhcnNlSW50KGUpICsgbmF0b20pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpbmRleENvbGxlY3Rpb24gPSBjb2xsZWN0aW9uRW5kO1xuICAgICAgICAgICAgaW5kZXhDb2xsZWN0aW9uID0gbW9sQmxvY2tzW2ldLmluZGV4T2YoJ00gIFYzMCBNRExWMzAvU1RFQUJTIEFUT01TPSgnLCBpbmRleENvbGxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIG5hdG9tICs9IG51bWJlcnMubmF0b20gLSAxO1xuICAgICAgICBuYm9uZCArPSBudW1iZXJzLm5ib25kO1xuICAgICAgICB4U2hpZnQgKz0gY29vcmRpbmF0ZXMueFtudW1iZXJzLm5hdG9tIC0gMV0gLSBjb29yZGluYXRlcy54WzBdO1xuICAgIH1cbiAgICBjb25zdCBlbnRyaWVzID0gNDtcbiAgICBjb25zdCBjb2xsTnVtYmVyID0gTWF0aC5jZWlsKGNvbGxlY3Rpb24ubGVuZ3RoIC8gZW50cmllcyk7XG4gICAgY29sbGVjdGlvbkJsb2NrICs9ICdNICBWMzAgTURMVjMwL1NURUFCUyBBVE9NUz0oJyArIGNvbGxlY3Rpb24ubGVuZ3RoICsgJyAtXFxuJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbGxOdW1iZXI7IGkrKykge1xuICAgICAgICBjb2xsZWN0aW9uQmxvY2sgKz0gJ00gIFYzMCAnO1xuICAgICAgICBjb25zdCBlbnRyaWVzQ3VycmVudCA9IGkgKyAxID09IGNvbGxOdW1iZXIgPyBjb2xsZWN0aW9uLmxlbmd0aCAtIChjb2xsTnVtYmVyIC0gMSkgKiBlbnRyaWVzIDogZW50cmllcztcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbnRyaWVzQ3VycmVudDsgaisrKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uQmxvY2sgKz0gKGogKyAxID09IGVudHJpZXNDdXJyZW50KSA/XG4gICAgICAgICAgICAgICAgKGkgPT0gY29sbE51bWJlciAtIDEgPyBjb2xsZWN0aW9uW2VudHJpZXMgKiBpICsgal0gKyAnKVxcbicgOiBjb2xsZWN0aW9uW2VudHJpZXMgKiBpICsgal0gKyAnIC1cXG4nKSA6XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbltlbnRyaWVzICogaSArIGpdICsgJyAnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vZ2VuZXJhdGUgZmlsZVxuICAgIG5hdG9tKys7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgVjMwIENPVU5UUyAnICsgbmF0b20gKyAnICcgKyBuYm9uZCArICcgMCAwIDBcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBBVE9NXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9IGF0b21CbG9jaztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIEFUT01cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBCT05EXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9IGJvbmRCbG9jaztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIEJPTkRcXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBCRUdJTiBDT0xMRUNUSU9OXFxuJztcbiAgICBtYWNyb01vbEJsb2NrICs9IGNvbGxlY3Rpb25CbG9jaztcbiAgICBtYWNyb01vbEJsb2NrICs9ICdNICBWMzAgRU5EIENPTExFQ1RJT05cXG4nO1xuICAgIG1hY3JvTW9sQmxvY2sgKz0gJ00gIFYzMCBFTkQgQ1RBQlxcbic7XG4gICAgbWFjcm9Nb2xCbG9jayArPSAnTSAgRU5EXFxuJztcbiAgICByZXR1cm4gbWFjcm9Nb2xCbG9jaztcbn1cbmZ1bmN0aW9uIGV4dHJhY3RBdG9tc0JvbmRzTnVtYmVyc1YzMDAwKG1vbEJsb2NrKSB7XG4gICAgbW9sQmxvY2sgPSBtb2xCbG9jay5yZXBsYWNlQWxsKCdcXHInLCAnJyk7IC8vZXF1YWxpemUgb2xkIGFuZCBuZXcgc2RmIHN0YW5kYXJkc1xuICAgIGxldCBpbmRleCA9IG1vbEJsb2NrLmluZGV4T2YoJ0NPVU5UUycpICsgNzsgLy8gVjMwMDAgaW5kZXggZm9yIGF0b21zIGFuZCBib25kcyBudW1iZXJcbiAgICBsZXQgaW5kZXhFbmQgPSBtb2xCbG9jay5pbmRleE9mKCcgJywgaW5kZXgpO1xuICAgIGNvbnN0IGF0b21zTnVtYmVyID0gcGFyc2VJbnQobW9sQmxvY2suc3Vic3RyaW5nKGluZGV4LCBpbmRleEVuZCkpO1xuICAgIGluZGV4ID0gaW5kZXhFbmQgKyAxO1xuICAgIGluZGV4RW5kID0gbW9sQmxvY2suaW5kZXhPZignICcsIGluZGV4KTtcbiAgICBjb25zdCBib25kc051bWJlciA9IHBhcnNlSW50KG1vbEJsb2NrLnN1YnN0cmluZyhpbmRleCwgaW5kZXhFbmQpKTtcbiAgICByZXR1cm4geyBuYXRvbTogYXRvbXNOdW1iZXIsIG5ib25kOiBib25kc051bWJlciB9O1xufVxuIiwiZXhwb3J0IHZhciBDT0xVTU5TX05BTUVTO1xuKGZ1bmN0aW9uIChDT0xVTU5TX05BTUVTKSB7XG4gICAgQ09MVU1OU19OQU1FU1tcIlNQTElUX0NPTFwiXSA9IFwifnNwbGl0XCI7XG4gICAgQ09MVU1OU19OQU1FU1tcIkFDVElWSVRZXCJdID0gXCJ+YWN0aXZpdHlcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUNUSVZJVFlfU0NBTEVEXCJdID0gXCJhY3Rpdml0eV9zY2FsZWRcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQUxJR05FRF9TRVFVRU5DRVwiXSA9IFwifmFsaWduZWRfc2VxdWVuY2VcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiQU1JTk9fQUNJRF9SRVNJRFVFXCJdID0gXCJBQVJcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIENPTFVNTlNfTkFNRVNbXCJQX1ZBTFVFXCJdID0gXCJwVmFsdWVcIjtcbiAgICBDT0xVTU5TX05BTUVTW1wiTUVBTl9ESUZGRVJFTkNFXCJdID0gXCJNZWFuIGRpZmZlcmVuY2VcIjtcbn0pKENPTFVNTlNfTkFNRVMgfHwgKENPTFVNTlNfTkFNRVMgPSB7fSkpO1xuZXhwb3J0IHZhciBDQVRFR09SSUVTO1xuKGZ1bmN0aW9uIChDQVRFR09SSUVTKSB7XG4gICAgQ0FURUdPUklFU1tcIk9USEVSXCJdID0gXCJPdGhlclwiO1xuICAgIENBVEVHT1JJRVNbXCJBTExcIl0gPSBcIkFsbFwiO1xufSkoQ0FURUdPUklFUyB8fCAoQ0FURUdPUklFUyA9IHt9KSk7XG5leHBvcnQgdmFyIFRBR1M7XG4oZnVuY3Rpb24gKFRBR1MpIHtcbiAgICBUQUdTW1wiQUFSXCJdID0gXCJBQVJcIjtcbiAgICBUQUdTW1wiUE9TSVRJT05cIl0gPSBcIlBvc1wiO1xuICAgIFRBR1NbXCJTRVBBUkFUT1JcIl0gPSBcIm1vbm9tZXItc2VwYXJhdG9yXCI7XG4gICAgVEFHU1tcIlNFTEVDVElPTlwiXSA9IFwic2VsZWN0aW9uXCI7XG59KShUQUdTIHx8IChUQUdTID0ge30pKTtcbmV4cG9ydCB2YXIgU0VNX1RZUEVTO1xuKGZ1bmN0aW9uIChTRU1fVFlQRVMpIHtcbiAgICBTRU1fVFlQRVNbXCJBTUlOT19BQ0lEU1wiXSA9IFwiYW1pbm9BY2lkc1wiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VcIl0gPSBcImFsaWduZWRTZXF1ZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFMSUdORURfU0VRVUVOQ0VfRElGRkVSRU5DRVwiXSA9IFwiYWxpZ25lZFNlcXVlbmNlRGlmZmVyZW5jZVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZXCJdID0gXCJhY3Rpdml0eVwiO1xuICAgIFNFTV9UWVBFU1tcIkFDVElWSVRZX1NDQUxFRFwiXSA9IFwiYWN0aXZpdHlTY2FsZWRcIjtcbiAgICBTRU1fVFlQRVNbXCJNYWNyb19Nb2xlY3VsZVwiXSA9IFwiTWFjcm9tb2xlY3VsZVwiO1xufSkoU0VNX1RZUEVTIHx8IChTRU1fVFlQRVMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFNUQVRTID0gJ3N0YXRzJztcbmV4cG9ydCBjb25zdCBFTUJFRERJTkdfU1RBVFVTID0gJ2VtYmVkZGluZ1N0YXR1cyc7XG5leHBvcnQgY29uc3QgUEVQVElERVNfQU5BTFlTSVMgPSAnaXNQZXB0aWRlc0FuYWx5c2lzJztcbmV4cG9ydCB2YXIgRkxBR1M7XG4oZnVuY3Rpb24gKEZMQUdTKSB7XG4gICAgRkxBR1NbXCJDRUxMX0NIQU5HSU5HXCJdID0gXCJpc0NlbGxDaGFuZ2luZ1wiO1xufSkoRkxBR1MgfHwgKEZMQUdTID0ge30pKTtcbmV4cG9ydCBjb25zdCBhYXJHcm91cHMgPSB7XG4gICAgJ1InOiAnUEMnLCAnSCc6ICdQQycsICdLJzogJ1BDJyxcbiAgICAnRCc6ICdOQycsICdFJzogJ05DJyxcbiAgICAnUyc6ICdVJywgJ1QnOiAnVScsICdOJzogJ1UnLCAnUSc6ICdVJyxcbiAgICAnQyc6ICdTQycsICdVJzogJ1NDJywgJ0cnOiAnU0MnLCAnUCc6ICdTQycsXG4gICAgJ0EnOiAnSCcsICdWJzogJ0gnLCAnSSc6ICdIJywgJ0wnOiAnSCcsICdNJzogJ0gnLCAnRic6ICdIJywgJ1knOiAnSCcsICdXJzogJ0gnLFxuICAgICctJzogJy0nLFxufTtcbmV4cG9ydCBjb25zdCBncm91cERlc2NyaXB0aW9uID0ge1xuICAgICdQQyc6IHsgJ2Rlc2NyaXB0aW9uJzogJ1Bvc2l0aXZlIEFtaW5vIEFjaWRzLCB3aXRoIEVsZWN0cmljYWxseSBDaGFyZ2VkIFNpZGUgQ2hhaW5zJywgJ2FtaW5vQWNpZHMnOiBbJ1InLCAnSCcsICdLJ10gfSxcbiAgICAnTkMnOiB7ICdkZXNjcmlwdGlvbic6ICdOZWdhdGl2ZSBBbWlubyBBY2lkcywgd2l0aCBFbGVjdHJpY2FsbHkgQ2hhcmdlZCBTaWRlIENoYWlucycsICdhbWlub0FjaWRzJzogWydEJywgJ0UnXSB9LFxuICAgICdVJzogeyAnZGVzY3JpcHRpb24nOiAnQW1pbm8gQWNpZHMgd2l0aCBQb2xhciBVbmNoYXJnZWQgU2lkZSBDaGFpbnMnLCAnYW1pbm9BY2lkcyc6IFsnUycsICdUJywgJ04nLCAnUSddIH0sXG4gICAgJ1NDJzogeyAnZGVzY3JpcHRpb24nOiAnU3BlY2lhbCBDYXNlcycsICdhbWlub0FjaWRzJzogWydDJywgJ1UnLCAnRycsICdQJ10gfSxcbiAgICAnSCc6IHtcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FtaW5vIEFjaWRzIHdpdGggSHlkcm9waG9iaWMgU2lkZSBDaGFpbicsXG4gICAgICAgICdhbWlub0FjaWRzJzogWydBJywgJ1YnLCAnSScsICdMJywgJ00nLCAnRicsICdZJywgJ1cnXSxcbiAgICB9LFxuICAgICctJzogeyAnZGVzY3JpcHRpb24nOiAnVW5rbm93biBBbWlubyBBY2lkJywgJ2FtaW5vQWNpZHMnOiBbJy0nXSB9LFxufTtcbiIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgTm90YXRpb25Db252ZXJ0ZXIgfSBmcm9tICcuL25vdGF0aW9uLWNvbnZlcnRlcic7XG4vKipcbiAqIENvbnZlcnRzIG5vdGF0aW9ucyBvZiBhIE1hY3JvbW9sZWN1bGUgY29sdW1uXG4gKlxuICogQHBhcmFtIHtERy5jb2x1bW59IGNvbCBDb2x1bW4gd2l0aCAnTWFjcm9tb2xlY3VsZScgc2VtYW50aWMgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydChjb2wpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgLy9UT0RPOiByZWFkIGFsbCBub3RhdGlvbnNcbiAgICBjb25zdCB1bml0cyA9IFtcbiAgICAgICAgJ2Zhc3RhJyxcbiAgICAgICAgJ3NlcGFyYXRvcicsXG4gICAgICAgICdIRUxNJ1xuICAgIF07XG4gICAgY29uc3QgY2hvaWNlcyA9IHVpLmNob2ljZUlucHV0KCdjb252ZXJ0IHRvJywgJycsIHVuaXRzLmZpbHRlcigoZSkgPT4gZSAhPT0gY3VycmVudCkpO1xuICAgIHVpLmRpYWxvZygnQ29udmVydCBzZXF1ZW5jZScpXG4gICAgICAgIC5hZGQodWkuZGl2KFtcbiAgICAgICAgdWkuaDEoJ2N1cnJlbnQgbm90YXRpb24nKSxcbiAgICAgICAgdWkuZGl2KGN1cnJlbnQpLFxuICAgICAgICBjaG9pY2VzLnJvb3RcbiAgICBdKSlcbiAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICAvL1RPRE86IGNyZWF0ZSBuZXcgY29udmVydGVkIGNvbHVtblxuICAgICAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sLCBjaG9pY2VzLnZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gY29udmVydGVyLmNvbnZlcnQoKTtcbiAgICAgICAgY29sLmRhdGFGcmFtZS5jb2x1bW5zLmFkZChuZXdDb2x1bW4pO1xuICAgIH0pXG4gICAgICAgIC5zaG93KCk7XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCBBaW9saSBmcm9tICdAYmlvd2FzbS9haW9saSc7XG5pbXBvcnQgeyBBbGlnbmVkU2VxdWVuY2VFbmNvZGVyIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcXVlbmNlLWVuY29kZXInO1xuaW1wb3J0ICogYXMgQyBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIENvbnZlcnRzIGFycmF5IG9mIHNlcXVlbmNlcyBpbnRvIHNpbXBsZSBmYXN0YSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gc2VxdWVuY2VzIElucHV0IGxpc3Qgb2Ygc2VxdWVuY2VzLlxuICogQHJldHVybiB7c3RyaW5nfSBGYXN0YS1mb3JtYXR0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBfc3RyaW5nc1RvRmFzdGEoc2VxdWVuY2VzKSB7XG4gICAgcmV0dXJuIHNlcXVlbmNlcy5yZWR1Y2UoKGEsIHYsIGkpID0+IGEgKyBgPnNhbXBsZSR7aSArIDF9XFxuJHt2fVxcbmAsICcnKTtcbn1cbi8qKlxuICogRXh0cmFjdHMgYXJyYXkgb2Ygc2VxdWVuY2VzIGZyb20gc2ltcGxlIGZhc3RhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmFzdGEgRmFzdGEtZm9ybWF0dGVkIHN0cmluZy5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfSBPdXRwdXQgbGlzdCBvZiBzZXF1ZW5jZXMuXG4gKi9cbmZ1bmN0aW9uIF9mYXN0YVRvU3RyaW5ncyhmYXN0YSkge1xuICAgIHJldHVybiBmYXN0YS5yZXBsYWNlKC8+c2FtcGxlXFxkKyhcXHJcXG58XFxyfFxcbikvZywgJycpLnNwbGl0KCdcXG4nKTtcbn1cbi8qKlxuICogUnVucyBBaW9saSBlbnZpcm9ubWVudCB3aXRoIGthbGlnbiB0b29sLlxuICpcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzcmNDb2wgQ29sdW1uIHdpdGggc2VxdWVuY2VzLlxuICogQHBhcmFtIHtib29sZWFufSBpc0FsaWduZWQgV2hldGhlciB0aGUgY29sdW1uIGlzIGFsaWduZWQuXG4gKiBAcmV0dXJuIHtQcm9taXNlPERHLkNvbHVtbj59IEFsaWduZWQgc2VxdWVuY2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuS2FsaWduKHNyY0NvbCwgaXNBbGlnbmVkID0gZmFsc2UpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBsZXQgc2VxdWVuY2VzID0gc3JjQ29sLnRvTGlzdCgpO1xuICAgICAgICBpZiAoaXNBbGlnbmVkKVxuICAgICAgICAgICAgc2VxdWVuY2VzID0gc2VxdWVuY2VzLm1hcCgodiwgXykgPT4gQWxpZ25lZFNlcXVlbmNlRW5jb2Rlci5jbGVhbih2KS5yZXBsYWNlKC9cXC0vZywgJycpKTtcbiAgICAgICAgY29uc3QgZmFzdGEgPSBfc3RyaW5nc1RvRmFzdGEoc2VxdWVuY2VzKTtcbiAgICAgICAgY29uc3QgQ0xJID0geWllbGQgbmV3IEFpb2xpKHtcbiAgICAgICAgICAgIHRvb2w6ICdrYWxpZ24nLFxuICAgICAgICAgICAgdmVyc2lvbjogJzMuMy4xJyxcbiAgICAgICAgICAgIHJlaW5pdDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFsnZmFzdGEubGVuZ3RoID0nLCBmYXN0YS5sZW5ndGhdKTtcbiAgICAgICAgeWllbGQgQ0xJLmZzLndyaXRlRmlsZSgnaW5wdXQuZmEnLCBmYXN0YSk7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHlpZWxkIENMSS5leGVjKCdrYWxpZ24gaW5wdXQuZmEgLWYgZmFzdGEgLW8gcmVzdWx0LmZhc3RhJyk7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IHlpZWxkIENMSS5jYXQoJ3Jlc3VsdC5mYXN0YScpO1xuICAgICAgICBjb25zb2xlLndhcm4ob3V0cHV0KTtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IF9mYXN0YVRvU3RyaW5ncyhidWYpLnNsaWNlKDAsIHNlcXVlbmNlcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCB0Z3RDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoYG1zYSgke3NyY0NvbC5uYW1lfSlgLCBhbGlnbmVkKTtcbiAgICAgICAgLy8gdW5pdHNcbiAgICAgICAgY29uc3Qgc3JjVW5pdHMgPSBzcmNDb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgICAgICBjb25zdCB0Z3RVbml0cyA9IHNyY1VuaXRzLnNwbGl0KCc6JykubWFwKChwLCBpKSA9PiBpID09IDEgPyBwICsgJy5NU0EnIDogcCkuam9pbignOicpO1xuICAgICAgICB0Z3RDb2wuc2V0VGFnKERHLlRBR1MuVU5JVFMsIHRndFVuaXRzKTtcbiAgICAgICAgdGd0Q29sLnNlbVR5cGUgPSBDLlNFTV9UWVBFUy5NYWNyb19Nb2xlY3VsZTtcbiAgICAgICAgcmV0dXJuIHRndENvbDtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0TVNBRW5vdWdoTWVtb3J5KGNvbCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlc0NvdW50ID0gY29sLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBzZXF1ZW5jZXNDb3VudCAvIDEwMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRlbHRhOyBpIDwgc2VxdWVuY2VzQ291bnQ7IGkgKz0gZGVsdGEpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgcnVuS2FsaWduKERHLkNvbHVtbi5mcm9tU3RyaW5ncyhjb2wubmFtZSwgY29sLnRvTGlzdCgpLnNsaWNlKDAsIE1hdGgucm91bmQoaSkpKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBzdWNjZWVkZWQgb24gJHtpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJ1bkthbGlnbiBmYWlsZWQgb24gJHtpfSB3aXRoICcke2Vycm9yfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuIiwiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbi8vIGV4cG9ydCBjb25zdCBlbnVtIE5PVEFUSU9OIHtcbi8vICAgLy8gdGhlc2UgdmFsdWVzIGNhbiBiZSBjaGFuZ2VkIHRvIFwidXNlci1mcmllbmRseVwiIG9uZXMgbGF0ZXIgb25cbi8vICAgRkFTVEEgPSAnZmFzdGEnLFxuLy8gICBTRVBBUkFUT1IgPSAnc2VwYXJhdG9yJyxcbi8vICAgSEVMTSA9ICdoZWxtJ1xuLy8gfVxuZXhwb3J0IGNsYXNzIE5vdGF0aW9uQ29udmVydGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihjb2wsIHRhcmdldCkge1xuICAgICAgICAvLyB0aGVzZSB2YWx1ZXMgY2FuIGJlIGNoYW5nZWQgdG8gXCJ1c2VyLWZyaWVuZGx5XCIgb25lcyBsYXRlciBvblxuICAgICAgICB0aGlzLl9mYXN0YSA9ICdmYXN0YSc7XG4gICAgICAgIHRoaXMuX3NlcGFyYXRvciA9ICdzZXBhcmF0b3InO1xuICAgICAgICB0aGlzLl9oZWxtID0gJ2hlbG0nO1xuICAgICAgICB0aGlzLl9zb3VyY2VDb2x1bW4gPSBjb2w7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRVbml0cyA9IHRoaXMuX3NvdXJjZUNvbHVtbi50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgICAgICB0aGlzLl9zb3VyY2VOb3RhdGlvbiA9IHRoaXMuZGV0ZXJtaW5lU291cmNlTm90YXRpb24oKTtcbiAgICAgICAgdGhpcy5fdGFyZ2V0Tm90YXRpb24gPSB0YXJnZXQ7XG4gICAgfVxuICAgIGdldCBzb3VyY2VDb2x1bW4oKSB7IHJldHVybiB0aGlzLl9zb3VyY2VDb2x1bW47IH1cbiAgICBnZXQgY3VycmVudFVuaXRzKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFVuaXRzOyB9XG4gICAgZ2V0IHNvdXJjZU5vdGF0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTm90YXRpb247IH1cbiAgICBnZXQgdGFyZ2V0Tm90YXRpb24oKSB7IHJldHVybiB0aGlzLl90YXJnZXROb3RhdGlvbjsgfVxuICAgIGlzRmFzdGEoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09IHRoaXMuX2Zhc3RhOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLnNvdXJjZU5vdGF0aW9uID09IHRoaXMuX3NlcGFyYXRvcjsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5faGVsbTsgfVxuICAgIGRldGVybWluZVNvdXJjZU5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCdmYXN0YScpKVxuICAgICAgICAgICAgcmV0dXJuICdmYXN0YSc7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY3VycmVudFVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpXG4gICAgICAgICAgICByZXR1cm4gJ3NlcGFyYXRvcic7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIC8vIFRPRE86IGhhbmRsZSBwb3NzaWJsZSBleGNlcHRpb25zXG4gICAgICAgICAgICByZXR1cm4gJ0hFTE0nO1xuICAgIH1cbiAgICBjb252ZXJ0RmFzdGFUb1NlcGFyYXRvcigpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5zb3VyY2VDb2x1bW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gJ2NvbnZlcnRlZCc7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnZmFzdGEyc2VwJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEZhc3RhVG9IZWxtKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLnNvdXJjZUNvbHVtbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSAnY29udmVydGVkJztcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCBuZXdDb2xOYW1lLCBuZXcgQXJyYXkobGVuKS5maWxsKCdmYXN0YTJoZWxtJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydFNlcGFyYXRvclRvRmFzdGEoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuc291cmNlQ29sdW1uLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9ICdjb252ZXJ0ZWQnO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJ3NlcDJmYXN0YScpKTtcbiAgICAgICAgbmV3Q29sdW1uLnNlbVR5cGUgPSAnTWFjcm9tb2xlY3VsZSc7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0hlbG0oKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9uXG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMuc291cmNlQ29sdW1uLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmV3Q29sTmFtZSA9ICdjb252ZXJ0ZWQnO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSBERy5Db2x1bW4uZnJvbUxpc3QoJ3N0cmluZycsIG5ld0NvbE5hbWUsIG5ldyBBcnJheShsZW4pLmZpbGwoJ3NlcDJoZWxtJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub0Zhc3RhKCkge1xuICAgICAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvblxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLnNvdXJjZUNvbHVtbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld0NvbE5hbWUgPSAnY29udmVydGVkJztcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gREcuQ29sdW1uLmZyb21MaXN0KCdzdHJpbmcnLCBuZXdDb2xOYW1lLCBuZXcgQXJyYXkobGVuKS5maWxsKCdoZWxtMmZhc3RhJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub1NlcGFyYXRvcigpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb25cbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5zb3VyY2VDb2x1bW4ubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gJ2NvbnZlcnRlZCc7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnaGVsbTJzZXAnKSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZW1UeXBlID0gJ01hY3JvbW9sZWN1bGUnO1xuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cbiAgICAvLyBUT0RPOiB3cml0ZSB0aGUgYm9kaWVzIG9mIGNvbnZlcnRlciBtZXRob2RzXG4gICAgY29udmVydCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5fZmFzdGEgJiZcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Tm90YXRpb24gPT0gdGhpcy5fc2VwYXJhdG9yKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IoKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PSB0aGlzLl9mYXN0YSAmJlxuICAgICAgICAgICAgdGhpcy50YXJnZXROb3RhdGlvbiA9PSB0aGlzLl9oZWxtKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9IZWxtKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuc291cmNlTm90YXRpb24gPT0gdGhpcy5fc2VwYXJhdG9yICYmXG4gICAgICAgICAgICB0aGlzLnRhcmdldE5vdGF0aW9uID09IHRoaXMuX2Zhc3RhKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvRmFzdGEoKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PSB0aGlzLl9zZXBhcmF0b3IgJiZcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Tm90YXRpb24gPT0gdGhpcy5faGVsbSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5zb3VyY2VOb3RhdGlvbiA9PSB0aGlzLl9oZWxtICYmXG4gICAgICAgICAgICB0aGlzLnRhcmdldE5vdGF0aW9uID09IHRoaXMuX2Zhc3RhKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub0Zhc3RhKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTtcbiAgICB9XG59XG4iLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0IHsgZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3NpbWlsYXJpdHktbWV0cmljcyc7XG5pbXBvcnQgeyBBdmFpbGFibGVNZXRyaWNzIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcyc7XG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VHZXRTaW1pbGFyaXRpZXMoY29sLCBzZXEpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBzdHJpbmdBcnJheSA9IGNvbC50b0xpc3QoKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VzID0gbmV3IEFycmF5KHN0cmluZ0FycmF5Lmxlbmd0aCkuZmlsbCgwLjApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ0FycmF5Lmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgZGlzdGFuY2VzW2ldID0gZ2V0U2ltaWxhcml0eUZyb21EaXN0YW5jZShBdmFpbGFibGVNZXRyaWNzWydTdHJpbmcnXVsnTGV2ZW5zaHRlaW4nXShzdHJpbmdBcnJheVtpXSwgc2VxKSk7XG4gICAgICAgIHJldHVybiBERy5Db2x1bW4uZnJvbUxpc3QoREcuQ09MVU1OX1RZUEUuRkxPQVQsICdkaXN0YW5jZXMnLCBkaXN0YW5jZXMpO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdUb29sdGlwKHBhcmFtcykge1xuICAgIHBhcmFtcy50b29sdGlwc1twYXJhbXMubGluZS5pZF0gPSB1aS5kaXZIKFtdKTtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IHVpLmRpdlYoW1xuICAgICAgICB1aS5kaXZUZXh0KCdzZXF1ZW5zZScpLFxuICAgICAgICB1aS5kaXZUZXh0KHBhcmFtcy5hY3Rpdml0eS5uYW1lKSxcbiAgICBdKTtcbiAgICBjb2x1bW5OYW1lcy5zdHlsZS5mb250V2VpZ2h0ID0gJ2JvbGQnO1xuICAgIGNvbHVtbk5hbWVzLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgY29sdW1uTmFtZXMuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnc3BhY2UtYmV0d2Vlbic7XG4gICAgcGFyYW1zLnRvb2x0aXBzW3BhcmFtcy5saW5lLmlkXS5hcHBlbmQoY29sdW1uTmFtZXMpO1xuICAgIHBhcmFtcy5saW5lLm1vbHMuZm9yRWFjaCgobW9sKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlcSA9IHVpLmRpdlRleHQocGFyYW1zLmRmLmdldChwYXJhbXMuc2VxQ29sLm5hbWUsIG1vbCkpO1xuICAgICAgICBjb25zdCBhY3Rpdml0eSA9IHVpLmRpdlRleHQocGFyYW1zLmRmLmdldChwYXJhbXMuYWN0aXZpdHkubmFtZSwgbW9sKS50b0ZpeGVkKDIpKTtcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgYWN0aXZpdHkuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnbGVmdCc7XG4gICAgICAgIGFjdGl2aXR5LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzMwcHgnO1xuICAgICAgICBwYXJhbXMudG9vbHRpcHNbcGFyYW1zLmxpbmUuaWRdLmFwcGVuZCh1aS5kaXZWKFtcbiAgICAgICAgICAgIHNlcSxcbiAgICAgICAgICAgIGFjdGl2aXR5LFxuICAgICAgICBdLCB7IHN0eWxlOiB7IHBhZGRpbmdMZWZ0OiAnNXB4JyB9IH0pKTtcbiAgICB9KTtcbn1cbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IEF2YWlsYWJsZU1ldHJpY3MgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmltcG9ydCB7IHJlZHVjZURpbWVuc2luYWxpdHlXaXRoTm9ybWFsaXphdGlvbiB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3NlcXVlbmNlLXNwYWNlJztcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZVNwYWNlKHNwYWNlUGFyYW1zKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHByZXBhcmVkRGF0YTtcbiAgICAgICAgaWYgKCEoc3BhY2VQYXJhbXMuc2VxQ29sLnRhZ3NbREcuVEFHUy5VTklUU10gPT09ICdIRUxNJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlcCA9IHNwYWNlUGFyYW1zLnNlcUNvbC5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgICAgICAgICAgY29uc3Qgc2VwRmluYWwgPSBzZXAgPyBzZXAgPT09ICcuJyA/ICdcXFxcXFwuJyA6IHNlcCA6ICctJztcbiAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChzZXBGaW5hbCwgJ2cnKTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzWydTdHJpbmcnXSkuaW5jbHVkZXMoc3BhY2VQYXJhbXMuc2ltaWxhcml0eU1ldHJpYykpXG4gICAgICAgICAgICAgICAgcHJlcGFyZWREYXRhID0gc3BhY2VQYXJhbXMuc2VxQ29sLnRvTGlzdCgpLm1hcCgodikgPT4gdi5yZXBsYWNlKHJlZ2V4LCAnJykpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKS5tYXAoKHYpID0+IHYucmVwbGFjZShyZWdleCwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByZXBhcmVkRGF0YSA9IHNwYWNlUGFyYW1zLnNlcUNvbC50b0xpc3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXF1ZW5jZVNwYWNlUmVzdWx0ID0geWllbGQgcmVkdWNlRGltZW5zaW5hbGl0eVdpdGhOb3JtYWxpemF0aW9uKHByZXBhcmVkRGF0YSwgc3BhY2VQYXJhbXMubWV0aG9kTmFtZSwgc3BhY2VQYXJhbXMuc2ltaWxhcml0eU1ldHJpYywgc3BhY2VQYXJhbXMub3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbHMgPSBzcGFjZVBhcmFtcy5lbWJlZEF4ZXNOYW1lcy5tYXAoKG5hbWUsIGluZGV4KSA9PiBERy5Db2x1bW4uZnJvbUZsb2F0MzJBcnJheShuYW1lLCBzZXF1ZW5jZVNwYWNlUmVzdWx0LmVtYmVkZGluZ1tpbmRleF0pKTtcbiAgICAgICAgcmV0dXJuIHsgZGlzdGFuY2U6IHNlcXVlbmNlU3BhY2VSZXN1bHQuZGlzdGFuY2UsIGNvb3JkaW5hdGVzOiBuZXcgREcuQ29sdW1uTGlzdChjb2xzKSB9O1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtYmVkZGluZ0NvbHNOYW1lcyhkZikge1xuICAgIGNvbnN0IGF4ZXMgPSBbJ0VtYmVkX1gnLCAnRW1iZWRfWSddO1xuICAgIGNvbnN0IGNvbE5hbWVJbmQgPSBkZi5jb2x1bW5zLm5hbWVzKCkuZmlsdGVyKChpdCkgPT4gaXQuaW5jbHVkZXMoYXhlc1swXSkpLmxlbmd0aCArIDE7XG4gICAgcmV0dXJuIGF4ZXMubWFwKChpdCkgPT4gYCR7aXR9XyR7Y29sTmFtZUluZH1gKTtcbn1cbiIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9NT05PTUVSX0NPTCA9ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfTU9MRklMRV9DT0wgPSAnbW9sZmlsZSc7XG5leHBvcnQgY29uc3QgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSA9ICcvc2FtcGxlcy9IRUxNQ29yZUxpYnJhcnkuanNvbic7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9sZmlsZXNGcm9tU2VxKGNvbCwgbW9ub21lcnNMaWIpIHtcbiAgICBjb25zdCB1bml0cyA9IGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICAgIGNvbnN0IHNlcCA9IGNvbC5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICAgIGNvbnN0IHNwbGl0dGVyRnVuYyA9IFdlYkxvZ28uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gICAgY29uc3QgbW9ub21lcnNEaWN0ID0gY3JlYXRlTW9tb21lcnNNb2xEaWN0KG1vbm9tZXJzTGliKTtcbiAgICBjb25zdCBtb2xGaWxlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzID0gc3BsaXR0ZXJGdW5jKGNvbC5nZXQoaSkpO1xuICAgICAgICBjb25zdCBtb2xGaWxlc0ZvclNlcSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lcnNbal0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBNb25vbWVyICR7bW9ub21lcnNbal19IGlzIG1pc3NpbmcgaW4gSEVMTSBsaWJyYXJ5LiBTdHJ1Y3R1cmUgY2Fubm90IGJlIGNyZWF0ZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vbEZpbGVzRm9yU2VxLnB1c2gobW9ub21lcnNEaWN0W21vbm9tZXJzW2pdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbW9sRmlsZXMucHVzaChtb2xGaWxlc0ZvclNlcSk7XG4gICAgfVxuICAgIHJldHVybiBtb2xGaWxlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliKSB7XG4gICAgY29uc3QgZGljdCA9IHt9O1xuICAgIGNvbnN0IG1vbm1lcnNDb2wgPSBsaWIuY29sKEhFTE1fQ09SRV9MSUJfTU9OT01FUl9DT0wpO1xuICAgIGNvbnN0IG1vbENvbCA9IGxpYi5jb2woSEVMTV9DT1JFX0xJQl9NT0xGSUxFX0NPTCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaWIucm93Q291bnQ7ICsraSkge1xuICAgICAgICBkaWN0W21vbm1lcnNDb2wuZ2V0KGkpXSA9IG1vbENvbC5nZXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBkaWN0O1xufVxuIiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/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/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcblx0ICAgICAgICAgIGYoZW50cnkudiwgZW50cnkuaywgdGhpcyk7XG5cdCAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSxcblx0ICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuXHQgICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcblx0ICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcblx0ICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICAgIGlmKFNVUFBPUlRfREVTQykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgcmV0dXJuIEM7XG5cdCAgfSxcblx0ICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuXHQgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuXHQgICAgICAsIHByZXYsIGluZGV4O1xuXHQgICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG5cdCAgICBpZihlbnRyeSl7XG5cdCAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcblx0ICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcblx0ICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcblx0ICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG5cdCAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG5cdCAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG5cdCAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcblx0ICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuXHQgICAgICB9O1xuXHQgICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG5cdCAgICAgIGlmKHByZXYpcHJldi5uID0gZW50cnk7XG5cdCAgICAgIHRoYXRbU0laRV0rKztcblx0ICAgICAgLy8gYWRkIHRvIGluZGV4XG5cdCAgICAgIGlmKGluZGV4ICE9PSAnRicpdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcblx0ICAgIH0gcmV0dXJuIHRoYXQ7XG5cdCAgfSxcblx0ICBnZXRFbnRyeTogZ2V0RW50cnksXG5cdCAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuXHQgICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG5cdCAgICAvLyAyMy4xLjMuNCwgMjMuMS4zLjgsIDIzLjEuMy4xMSwgMjMuMS4zLjEyLCAyMy4yLjMuNSwgMjMuMi4zLjgsIDIzLjIuMy4xMCwgMjMuMi4zLjExXG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcblx0ICAgICAgdGhpcy5fdCA9IGl0ZXJhdGVkOyAgLy8gdGFyZ2V0XG5cdCAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcblx0ICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcblx0ICAgIH0sIGZ1bmN0aW9uKCl7XG5cdCAgICAgIHZhciB0aGF0ICA9IHRoaXNcblx0ICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuXHQgICAgICAgICwgZW50cnkgPSB0aGF0Ll9sO1xuXHQgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcblx0ICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG5cdCAgICAgIC8vIGdldCBuZXh0IGVudHJ5XG5cdCAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuXHQgICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG5cdCAgICAgICAgdGhhdC5fdCA9IHVuZGVmaW5lZDtcblx0ICAgICAgICByZXR1cm4gc3RlcCgxKTtcblx0ICAgICAgfVxuXHQgICAgICAvLyByZXR1cm4gc3RlcCBieSBraW5kXG5cdCAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG5cdCAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG5cdCAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG5cdCAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG5cdCAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuXHQgICAgc3BlY2llcyhDKTtcblx0ICAgIHNwZWNpZXMoX193ZWJwYWNrX3JlcXVpcmVfXygxMilbTkFNRV0pOyAvLyBmb3Igd3JhcHBlclxuXHQgIH1cblx0fTtcblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdHZhciAkICAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSlcblx0ICAsICRkZWYgICAgICAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKVxuXHQgICwgaGlkZSAgICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpXG5cdCAgLCBmb3JPZiAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MClcblx0ICAsIHN0cmljdE5ldyAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcblx0ICB2YXIgQmFzZSAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKVtOQU1FXVxuXHQgICAgLCBDICAgICA9IEJhc2Vcblx0ICAgICwgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnXG5cdCAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuXHQgICAgLCBPICAgICA9IHt9O1xuXHQgIGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KSB8fCB0eXBlb2YgQyAhPSAnZnVuY3Rpb24nXG5cdCAgICB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXygxOCkoZnVuY3Rpb24oKXsgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOyB9KSlcblx0ICApe1xuXHQgICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3Jcblx0ICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7XG5cdCAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KShDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuXHQgICAgICBzdHJpY3ROZXcodGFyZ2V0LCBDLCBOQU1FKTtcblx0ICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG5cdCAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0YXJnZXRbQURERVJdLCB0YXJnZXQpO1xuXHQgICAgfSk7XG5cdCAgICAkLmVhY2guY2FsbCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMnLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcblx0ICAgICAgdmFyIGNoYWluID0gS0VZID09ICdhZGQnIHx8IEtFWSA9PSAnc2V0Jztcblx0ICAgICAgaWYoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpaGlkZShDLnByb3RvdHlwZSwgS0VZLCBmdW5jdGlvbihhLCBiKXtcblx0ICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG5cdCAgICAgICAgcmV0dXJuIGNoYWluID8gdGhpcyA6IHJlc3VsdDtcblx0ICAgICAgfSk7XG5cdCAgICB9KTtcblx0ICAgIGlmKCdzaXplJyBpbiBwcm90bykkLnNldERlc2MoQy5wcm90b3R5cGUsICdzaXplJywge1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuX2Muc2l6ZTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyNSkoQywgTkFNRSk7XG5cblx0ICBPW05BTUVdID0gQztcblx0ICAkZGVmKCRkZWYuRyArICRkZWYuVyArICRkZWYuRiwgTyk7XG5cblx0ICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cblx0ICByZXR1cm4gQztcblx0fTtcblxuLyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG5cdHZhciAkZGVmICA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXG5cdCRkZWYoJGRlZi5QLCAnU2V0Jywge3RvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXyg5MCkoJ1NldCcpfSk7XG5cbi8qKiovIH0sXG4vKiA5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxuXHR2YXIgZm9yT2YgICA9IF9fd2VicGFja19yZXF1aXJlX18oNzApXG5cdCAgLCBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuXHQgICAgaWYoY2xhc3NvZih0aGlzKSAhPSBOQU1FKXRocm93IFR5cGVFcnJvcihOQU1FICsgXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7XG5cdCAgICB2YXIgYXJyID0gW107XG5cdCAgICBmb3JPZih0aGlzLCBmYWxzZSwgYXJyLnB1c2gsIGFycik7XG5cdCAgICByZXR1cm4gYXJyO1xuXHQgIH07XG5cdH07XG5cbi8qKiovIH1cbi8qKioqKiovIF0pXG59KTtcbjsiLCJtb2R1bGUuZXhwb3J0cyA9IERHOyIsIm1vZHVsZS5leHBvcnRzID0gT0NMOyIsIm1vZHVsZS5leHBvcnRzID0gZ3JvazsiLCJtb2R1bGUuZXhwb3J0cyA9IHJ4anM7IiwibW9kdWxlLmV4cG9ydHMgPSB1aTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjXG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcInBhY2thZ2VcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmV4cG9ydCBjb25zdCBfcGFja2FnZSA9IG5ldyBERy5QYWNrYWdlKCk7XG5pbXBvcnQgeyBXZWJMb2dvIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0IHsgVmRSZWdpb25zVmlld2VyIH0gZnJvbSAnLi92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7IHJ1bkthbGlnbiB9IGZyb20gJy4vdXRpbHMvbXVsdGlwbGUtc2VxdWVuY2UtYWxpZ25tZW50JztcbmltcG9ydCB7IFNlcXVlbmNlQWxpZ25tZW50IH0gZnJvbSAnLi9zZXFfYWxpZ24nO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHsgQW1pbm9hY2lkcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7IGNvbnZlcnQgfSBmcm9tICcuL3V0aWxzL2NvbnZlcnQnO1xuaW1wb3J0IHsgZ2V0RW1iZWRkaW5nQ29sc05hbWVzLCBzZXF1ZW5jZVNwYWNlIH0gZnJvbSAnLi91dGlscy9zZXF1ZW5jZS1zcGFjZSc7XG5pbXBvcnQgeyBnZXRBY3Rpdml0eUNsaWZmcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3ZpZXdlcnMvYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IHNlcXVlbmNlR2V0U2ltaWxhcml0aWVzLCBkcmF3VG9vbHRpcCB9IGZyb20gJy4vdXRpbHMvc2VxdWVuY2UtYWN0aXZpdHktY2xpZmZzJztcbmltcG9ydCB7IGdldE1vbGZpbGVzRnJvbVNlcSwgSEVMTV9DT1JFX0xJQl9GSUxFTkFNRSB9IGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWFjcm9Nb2wgfSBmcm9tICcuL3V0aWxzL2F0b21pYy13b3Jrcyc7XG4vL25hbWU6IHNlcXVlbmNlQWxpZ25tZW50XG4vL2lucHV0OiBzdHJpbmcgYWxpZ25UeXBlIHtjaG9pY2VzOiBbJ0xvY2FsIGFsaWdubWVudCcsICdHbG9iYWwgYWxpZ25tZW50J119XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy9pbnB1dDogc3RyaW5nIGFsaWduVGFibGUge2Nob2ljZXM6IFsnQVVUTycsICdOVUNMRU9USURFUycsICdCTE9TVU00NScsICdCTE9TVU01MCcsJ0JMT1NVTTYyJywnQkxPU1VNODAnLCdCTE9TVU05MCcsJ1BBTTMwJywnUEFNNzAnLCdQQU0yNTAnLCdTQ0hORUlERVInLCdUUkFOUyddfVxuLy9pbnB1dDogZG91YmxlIGdhcFxuLy9pbnB1dDogc3RyaW5nIHNlcTFcbi8vaW5wdXQ6IHN0cmluZyBzZXEyXG4vL291dHB1dDogb2JqZWN0IHJlc1xuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbmNlQWxpZ25tZW50KGFsaWduVHlwZSwgYWxpZ25UYWJsZSwgZ2FwLCBzZXExLCBzZXEyKSB7XG4gICAgY29uc3QgdG9BbGlnbiA9IG5ldyBTZXF1ZW5jZUFsaWdubWVudChzZXExLCBzZXEyLCBnYXAsIGFsaWduVGFibGUpO1xuICAgIGNvbnN0IHJlcyA9IGFsaWduVHlwZSA9PSAnTG9jYWwgYWxpZ25tZW50JyA/IHRvQWxpZ24uc21pdGhXYXRlcm1hbigpIDogdG9BbGlnbi5uZWVkbGVtYW5XdW5jaCgpO1xuICAgIHJldHVybiByZXM7XG59XG4vL25hbWU6IFdlYkxvZ29cbi8vZGVzY3JpcHRpb246IFdlYkxvZ28gdmlld2VyXG4vL3RhZ3M6IHZpZXdlciwgcGFuZWxcbi8vb3V0cHV0OiB2aWV3ZXIgcmVzdWx0XG5leHBvcnQgZnVuY3Rpb24gd2ViTG9nb1ZpZXdlcigpIHtcbiAgICByZXR1cm4gbmV3IFdlYkxvZ28oKTtcbn1cbi8vbmFtZTogVmRSZWdpb25zXG4vL2Rlc2NyaXB0aW9uOiBWLURvbWFpbiByZWdpb25zIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHZkUmVnaW9uVmlld2VyKCkge1xuICAgIHJldHVybiBuZXcgVmRSZWdpb25zVmlld2VyKCk7XG59XG4vL3RvcC1tZW51OiBCaW8gfCBTZXF1ZW5jZSBBY3Rpdml0eSBDbGlmZnMuLi5cbi8vbmFtZTogU2VxdWVuY2UgQWN0aXZpdHkgQ2xpZmZzXG4vL2Rlc2NyaXB0aW9uOiBkZXRlY3QgYWN0aXZpdHkgY2xpZmZzXG4vL2lucHV0OiBkYXRhZnJhbWUgdGFibGUgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2Uge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG4vL2lucHV0OiBjb2x1bW4gYWN0aXZpdGllc1xuLy9pbnB1dDogZG91YmxlIHNpbWlsYXJpdHkgPSA4MCBbU2ltaWxhcml0eSBjdXRvZmZdXG4vL2lucHV0OiBzdHJpbmcgbWV0aG9kTmFtZSB7IGNob2ljZXM6W1wiVU1BUFwiLCBcInQtU05FXCIsIFwiU1BFXCJdIH1cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpdml0eUNsaWZmcyhkZiwgc2VxdWVuY2UsIGFjdGl2aXRpZXMsIHNpbWlsYXJpdHksIG1ldGhvZE5hbWUpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBheGVzTmFtZXMgPSBnZXRFbWJlZGRpbmdDb2xzTmFtZXMoZGYpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgJ1NQRSc6IHsgY3ljbGVzOiAyMDAwLCBsYW1iZGE6IDEuMCwgZGxhbWJkYTogMC4wMDA1IH0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVuaXRzID0gc2VxdWVuY2UudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgICAgICAgeWllbGQgZ2V0QWN0aXZpdHlDbGlmZnMoZGYsIHNlcXVlbmNlLCBheGVzTmFtZXMsICdBY3Rpdml0eSBjbGlmZnMnLCBhY3Rpdml0aWVzLCBzaW1pbGFyaXR5LCAnTGV2ZW5zaHRlaW4nLCBtZXRob2ROYW1lLCBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUsIHVuaXRzLCBzZXF1ZW5jZVNwYWNlLCBzZXF1ZW5jZUdldFNpbWlsYXJpdGllcywgZHJhd1Rvb2x0aXAsIG9wdGlvbnNbbWV0aG9kTmFtZV0pO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgU2VxdWVuY2UgU3BhY2UuLi5cbi8vbmFtZTogU2VxdWVuY2UgU3BhY2Vcbi8vaW5wdXQ6IGRhdGFmcmFtZSB0YWJsZVxuLy9pbnB1dDogY29sdW1uIG1hY3JvTW9sZWN1bGUgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbi8vaW5wdXQ6IHN0cmluZyBtZXRob2ROYW1lIHsgY2hvaWNlczpbXCJVTUFQXCIsIFwidC1TTkVcIiwgXCJTUEVcIl0gfVxuLy9pbnB1dDogc3RyaW5nIHNpbWlsYXJpdHlNZXRyaWMgeyBjaG9pY2VzOltcIkxldmVuc2h0ZWluXCIsIFwiVGFuaW1vdG9cIl0gfVxuLy9pbnB1dDogYm9vbCBwbG90RW1iZWRkaW5ncyA9IHRydWVcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZVNwYWNlVG9wTWVudSh0YWJsZSwgbWFjcm9Nb2xlY3VsZSwgbWV0aG9kTmFtZSwgc2ltaWxhcml0eU1ldHJpYyA9ICdMZXZlbnNodGVpbicsIHBsb3RFbWJlZGRpbmdzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgZW1iZWRDb2xzTmFtZXMgPSBnZXRFbWJlZGRpbmdDb2xzTmFtZXModGFibGUpO1xuICAgICAgICBjb25zdCBjaGVtU3BhY2VQYXJhbXMgPSB7XG4gICAgICAgICAgICBzZXFDb2w6IG1hY3JvTW9sZWN1bGUsXG4gICAgICAgICAgICBtZXRob2ROYW1lOiBtZXRob2ROYW1lLFxuICAgICAgICAgICAgc2ltaWxhcml0eU1ldHJpYzogc2ltaWxhcml0eU1ldHJpYyxcbiAgICAgICAgICAgIGVtYmVkQXhlc05hbWVzOiBlbWJlZENvbHNOYW1lc1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZXF1ZW5jZVNwYWNlUmVzID0geWllbGQgc2VxdWVuY2VTcGFjZShjaGVtU3BhY2VQYXJhbXMpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmdzID0gc2VxdWVuY2VTcGFjZVJlcy5jb29yZGluYXRlcztcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgZW1iZWRkaW5ncylcbiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnMuYWRkKGNvbCk7XG4gICAgICAgIGlmIChwbG90RW1iZWRkaW5ncykge1xuICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIGdyb2suc2hlbGwudmlld3MpIHtcbiAgICAgICAgICAgICAgICBpZiAodi5uYW1lID09PSB0YWJsZS5uYW1lKVxuICAgICAgICAgICAgICAgICAgICB2LnNjYXR0ZXJQbG90KHsgeDogZW1iZWRDb2xzTmFtZXNbMF0sIHk6IGVtYmVkQ29sc05hbWVzWzFdLCB0aXRsZTogJ1NlcXVlbmNlIHNwYWNlJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufVxuO1xuLy90b3AtbWVudTogQmlvIHwgTW9sZmlsZXMgRnJvbSBIRUxNLi4uXG4vL25hbWU6IE1vbGZpbGVzIEZyb20gSEVMTVxuLy9kZXNjcmlwdGlvbjogcmV0dXJucyBtb2xmaWxlcyBmb3IgZWFjaCBtb25vbWVyIGZyb20gSEVMTSBsaWJyYXJ5XG4vL2lucHV0OiBkYXRhZnJhbWUgZGYgW0lucHV0IGRhdGEgdGFibGVdXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2Uge3NlbVR5cGU6IE1hY3JvbW9sZWN1bGV9XG5leHBvcnQgZnVuY3Rpb24gbW9sZmlsZXNGcm9tSEVMTShkZiwgc2VxdWVuY2UpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBtb25vbWVyc0xpYkZpbGUgPSB5aWVsZCBfcGFja2FnZS5maWxlcy5yZWFkQXNUZXh0KEhFTE1fQ09SRV9MSUJfRklMRU5BTUUpO1xuICAgICAgICBjb25zdCBtb25vbWVyc0xpYkRmID0gREcuRGF0YUZyYW1lLmZyb21Kc29uKG1vbm9tZXJzTGliRmlsZSk7XG4gICAgICAgIGNvbnN0IGF0b21pY0NvZGVzID0gZ2V0TW9sZmlsZXNGcm9tU2VxKHNlcXVlbmNlLCBtb25vbWVyc0xpYkRmKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0b21pY0NvZGVzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goZ2V0TWFjcm9Nb2woYXRvbWljQ29kZXNbaV0pKTtcbiAgICAgICAgZGYuY29sdW1ucy5hZGQoREcuQ29sdW1uLmZyb21TdHJpbmdzKCdyZWdlbmVyYXRlZCcsIHJlc3VsdCkpO1xuICAgIH0pO1xufVxuLy90b3AtbWVudTogQmlvIHwgTVNBLi4uXG4vL25hbWU6IE1TQVxuLy9pbnB1dDogZGF0YWZyYW1lIHRhYmxlXG4vL2lucHV0OiBjb2x1bW4gc2VxdWVuY2UgeyBzZW1UeXBlOiBNYWNyb21vbGVjdWxlIH1cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aXBsZVNlcXVlbmNlQWxpZ25tZW50QW55KHRhYmxlLCBjb2wpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBtc2FDb2wgPSB5aWVsZCBydW5LYWxpZ24oY29sLCBmYWxzZSk7XG4gICAgICAgIHRhYmxlLmNvbHVtbnMuYWRkKG1zYUNvbCk7XG4gICAgfSk7XG59XG4vL25hbWU6IENvbXBvc2l0aW9uIEFuYWx5c2lzXG4vL3RvcC1tZW51OiBCaW8gfCBDb21wb3NpdGlvbiBBbmFseXNpc1xuLy9vdXRwdXQ6IHZpZXdlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NpdGlvbkFuYWx5c2lzKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIEhpZ2hlciBwcmlvcml0eSBmb3IgY29sdW1ucyB3aXRoIE1TQSBkYXRhIHRvIHNob3cgd2l0aCBXZWJMb2dvLlxuICAgICAgICBjb25zdCB0diA9IGdyb2suc2hlbGwudHY7XG4gICAgICAgIGNvbnN0IGRmID0gdHYuZGF0YUZyYW1lO1xuICAgICAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgICAgIGxldCBjb2wgPSBzZW1UeXBlQ29sTGlzdC5maW5kKChjb2wpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICAgICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFjb2wpXG4gICAgICAgICAgICBjb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgICAgICAgaWYgKCFjb2wpIHtcbiAgICAgICAgICAgIGdyb2suc2hlbGwuZXJyb3IoJ0N1cnJlbnQgdGFibGUgZG9lcyBub3QgY29udGFpbiBzZXF1ZW5jZXMnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0di5hZGRWaWV3ZXIoJ1dlYkxvZ28nLCB7IHNlcXVlbmNlQ29sdW1uTmFtZTogY29sLm5hbWUgfSk7XG4gICAgfSk7XG59XG4vLyBoZWxwZXIgZnVuY3Rpb24gZm9yIGltcG9ydEZhc3RhXG5mdW5jdGlvbiBwYXJzZU1hY3JvbW9sZWN1bGUoZmlsZUNvbnRlbnQsIHN0YXJ0T2ZTZXF1ZW5jZSwgZW5kT2ZTZXF1ZW5jZSkge1xuICAgIGNvbnN0IHNlcSA9IGZpbGVDb250ZW50LnNsaWNlKHN0YXJ0T2ZTZXF1ZW5jZSwgZW5kT2ZTZXF1ZW5jZSk7XG4gICAgY29uc3Qgc2VxQXJyYXkgPSBzZXEuc3BsaXQoL1xccy8pO1xuICAgIHJldHVybiBzZXFBcnJheS5qb2luKCcnKTtcbn1cbi8vbmFtZTogaW1wb3J0RmFzdGFcbi8vZGVzY3JpcHRpb246IE9wZW5zIEZBU1RBIGZpbGVcbi8vdGFnczogZmlsZS1oYW5kbGVyXG4vL21ldGEuZXh0OiBmYXN0YSwgZm5hLCBmZm4sIGZhYSwgZnJuLCBmYVxuLy9pbnB1dDogc3RyaW5nIGZpbGVDb250ZW50XG4vL291dHB1dDogbGlzdCB0YWJsZXNcbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRGYXN0YShmaWxlQ29udGVudCkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL14+KC4qKSQvZ207IC8vIG1hdGNoIGxpbmVzIHN0YXJ0aW5nIHdpdGggPlxuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5ID0gW107XG4gICAgY29uc3Qgc2VxdWVuY2VzQXJyYXkgPSBbXTtcbiAgICBsZXQgc3RhcnRPZlNlcXVlbmNlID0gMDtcbiAgICBsZXQgbWF0Y2g7IC8vIG1hdGNoLmluZGV4IGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1hdGNoZWQgbGluZVxuICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4LmV4ZWMoZmlsZUNvbnRlbnQpKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZmlsZUNvbnRlbnQuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgMSwgcmVnZXgubGFzdEluZGV4KTtcbiAgICAgICAgZGVzY3JpcHRpb25zQXJyYXkucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICAgIGlmIChzdGFydE9mU2VxdWVuY2UgIT09IDApXG4gICAgICAgICAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCBtYXRjaC5pbmRleCkpO1xuICAgICAgICBzdGFydE9mU2VxdWVuY2UgPSByZWdleC5sYXN0SW5kZXggKyAxO1xuICAgIH1cbiAgICBzZXF1ZW5jZXNBcnJheS5wdXNoKHBhcnNlTWFjcm9tb2xlY3VsZShmaWxlQ29udGVudCwgc3RhcnRPZlNlcXVlbmNlLCAtMSkpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uc0FycmF5Q29sID0gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uc0FycmF5KTtcbiAgICBjb25zdCBzZXF1ZW5jZUNvbCA9IERHLkNvbHVtbi5mcm9tU3RyaW5ncygnc2VxdWVuY2UnLCBzZXF1ZW5jZXNBcnJheSk7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9ICdNYWNyb21vbGVjdWxlJztcbiAgICBjb25zdCBzdGF0cyA9IFdlYkxvZ28uZ2V0U3RhdHMoc2VxdWVuY2VDb2wsIDUsIFdlYkxvZ28uc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICBjb25zdCBzZXFUeXBlID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgWydOVCcsIG5ldyBTZXQoT2JqZWN0LmtleXMoTnVjbGVvdGlkZXMuTmFtZXMpKV0sXG4gICAgICAgIFsnUFQnLCBuZXcgU2V0KE9iamVjdC5rZXlzKEFtaW5vYWNpZHMuTmFtZXMpKV0sXG4gICAgXTtcbiAgICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW0gPSBhbHBoYWJldENhbmRpZGF0ZXMubWFwKChjKSA9PiBXZWJMb2dvLmdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzFdKSk7XG4gICAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgICBjb25zdCBhbHBoYWJldCA9IG1heENvcyA+IDAuNjUgPyBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMF0gOiAnVU4nO1xuICAgIHNlcXVlbmNlQ29sLnNlbVR5cGUgPSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEU7XG4gICAgY29uc3QgdW5pdHMgPSBgZmFzdGE6JHtzZXFUeXBlfToke2FscGhhYmV0fWA7XG4gICAgc2VxdWVuY2VDb2wuc2V0VGFnKERHLlRBR1MuVU5JVFMsIHVuaXRzKTtcbiAgICByZXR1cm4gW0RHLkRhdGFGcmFtZS5mcm9tQ29sdW1ucyhbXG4gICAgICAgICAgICBkZXNjcmlwdGlvbnNBcnJheUNvbCxcbiAgICAgICAgICAgIHNlcXVlbmNlQ29sLFxuICAgICAgICBdKV07XG59XG4vL25hbWU6IEJpbyB8IENvbnZlcnRcbi8vZnJpZW5kbHktbmFtZTogQmlvIHwgQ29udmVydFxuLy90YWdzOiBwYW5lbCwgYmlvXG4vL2lucHV0OiBjb2x1bW4gY29sIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQYW5lbChjb2wpIHtcbiAgICBjb252ZXJ0KGNvbCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=