ag-psd 14.3.13 → 14.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { AntiAlias, BevelDirection, BevelStyle, BevelTechnique, BlendMode, GlowSource, GlowTechnique, GradientStyle, LineAlignment, LineCapType, LineJoinType, Orientation, TextGridding, Units, UnitsValue, WarpStyle } from './psd';
1
+ import { AntiAlias, BevelDirection, BevelStyle, BevelTechnique, BlendMode, GlowSource, GlowTechnique, GradientStyle, InterpolationMethod, LineAlignment, LineCapType, LineJoinType, Orientation, TextGridding, Units, UnitsValue, WarpStyle } from './psd';
2
2
  import { PsdReader } from './psdReader';
3
3
  import { PsdWriter } from './psdWriter';
4
4
  export declare function setLogErrors(value: boolean): void;
@@ -205,6 +205,10 @@ export declare const GrdT: {
205
205
  decode: (val: string) => GradientStyle;
206
206
  encode: (val: GradientStyle | undefined) => string;
207
207
  };
208
+ export declare const gradientInterpolationMethodType: {
209
+ decode: (val: string) => InterpolationMethod;
210
+ encode: (val: InterpolationMethod | undefined) => string;
211
+ };
208
212
  export declare const ClrS: {
209
213
  decode: (val: string) => "rgb" | "hsb" | "lab";
210
214
  encode: (val: "rgb" | "hsb" | "lab" | undefined) => string;
@@ -214,8 +218,8 @@ export declare const FStl: {
214
218
  encode: (val: "center" | "inside" | "outside" | undefined) => string;
215
219
  };
216
220
  export declare const FrFl: {
217
- decode: (val: string) => "pattern" | "color" | "gradient";
218
- encode: (val: "pattern" | "color" | "gradient" | undefined) => string;
221
+ decode: (val: string) => "color" | "pattern" | "gradient";
222
+ encode: (val: "color" | "pattern" | "gradient" | undefined) => string;
219
223
  };
220
224
  export declare const strokeStyleLineCapType: {
221
225
  decode: (val: string) => LineCapType;
@@ -108,7 +108,7 @@ var typeToField = {
108
108
  'strokeStyleLineCapType', 'strokeStyleLineJoinType', 'strokeStyleLineAlignment',
109
109
  'strokeStyleBlendMode', 'PntT', 'Styl', 'lookupType', 'LUTFormat', 'dataOrder',
110
110
  'tableOrder', 'enableCompCore', 'enableCompCoreGPU', 'compCoreSupport', 'compCoreGPUSupport', 'Engn',
111
- 'enableCompCoreThreads',
111
+ 'enableCompCoreThreads', 'gs99',
112
112
  ],
113
113
  'bool': [
114
114
  'PstS', 'printSixteenBit', 'masterFXSwitch', 'enab', 'uglg', 'antialiasGloss',
@@ -279,7 +279,7 @@ export function writeDescriptorStructure(writer, name, classId, value, root) {
279
279
  writeSignature(writer, type || 'long');
280
280
  writeOSType(writer, type || 'long', value[key], key, extType, root);
281
281
  if (logErrors && !type)
282
- console.log("Missing descriptor field type for: '" + key + "' in", value);
282
+ console.log("Missing descriptor field type for: '".concat(key, "' in"), value);
283
283
  }
284
284
  }
285
285
  function readOSType(reader, type) {
@@ -305,14 +305,14 @@ function readOSType(reader, type) {
305
305
  var units = readSignature(reader);
306
306
  var value = readFloat64(reader);
307
307
  if (!unitsMap[units])
308
- throw new Error("Invalid units: " + units);
308
+ throw new Error("Invalid units: ".concat(units));
309
309
  return { units: unitsMap[units], value: value };
310
310
  }
311
311
  case 'UnFl': { // Unit float
312
312
  var units = readSignature(reader);
313
313
  var value = readFloat32(reader);
314
314
  if (!unitsMap[units])
315
- throw new Error("Invalid units: " + units);
315
+ throw new Error("Invalid units: ".concat(units));
316
316
  return { units: unitsMap[units], value: value };
317
317
  }
318
318
  case 'TEXT': // String
@@ -320,7 +320,7 @@ function readOSType(reader, type) {
320
320
  case 'enum': { // Enumerated
321
321
  var type_2 = readAsciiStringOrClassId(reader);
322
322
  var value = readAsciiStringOrClassId(reader);
323
- return type_2 + "." + value;
323
+ return "".concat(type_2, ".").concat(value);
324
324
  }
325
325
  case 'long': // Integer
326
326
  return readInt32(reader);
@@ -370,7 +370,7 @@ function readOSType(reader, type) {
370
370
  return { sig: sig, path: path };
371
371
  }
372
372
  default:
373
- throw new Error("Invalid TySh descriptor OSType: " + type + " at " + reader.offset.toString(16));
373
+ throw new Error("Invalid TySh descriptor OSType: ".concat(type, " at ").concat(reader.offset.toString(16)));
374
374
  }
375
375
  }
376
376
  var ObArTypes = {
@@ -386,7 +386,7 @@ function writeOSType(writer, type, value, key, extType, root) {
386
386
  case 'Objc': // Descriptor
387
387
  case 'GlbO': // GlobalObject same as Descriptor
388
388
  if (!extType)
389
- throw new Error("Missing ext type for: '" + key + "' (" + JSON.stringify(value) + ")");
389
+ throw new Error("Missing ext type for: '".concat(key, "' (").concat(JSON.stringify(value), ")"));
390
390
  writeDescriptorStructure(writer, extType.name, extType.classID, value, root);
391
391
  break;
392
392
  case 'VlLs': // List
@@ -396,7 +396,7 @@ function writeOSType(writer, type, value, key, extType, root) {
396
396
  writeSignature(writer, type_3 || 'long');
397
397
  writeOSType(writer, type_3 || 'long', value[i], '', fieldToArrayExtType[key], root);
398
398
  if (logErrors && !type_3)
399
- console.log("Missing descriptor array type for: '" + key + "' in", value);
399
+ console.log("Missing descriptor array type for: '".concat(key, "' in"), value);
400
400
  }
401
401
  break;
402
402
  case 'doub': // Double
@@ -404,13 +404,13 @@ function writeOSType(writer, type, value, key, extType, root) {
404
404
  break;
405
405
  case 'UntF': // Unit double
406
406
  if (!unitsMapRev[value.units])
407
- throw new Error("Invalid units: " + value.units + " in " + key);
407
+ throw new Error("Invalid units: ".concat(value.units, " in ").concat(key));
408
408
  writeSignature(writer, unitsMapRev[value.units]);
409
409
  writeFloat64(writer, value.value);
410
410
  break;
411
411
  case 'UnFl': // Unit float
412
412
  if (!unitsMapRev[value.units])
413
- throw new Error("Invalid units: " + value.units + " in " + key);
413
+ throw new Error("Invalid units: ".concat(value.units, " in ").concat(key));
414
414
  writeSignature(writer, unitsMapRev[value.units]);
415
415
  writeFloat32(writer, value.value);
416
416
  break;
@@ -445,7 +445,7 @@ function writeOSType(writer, type, value, key, extType, root) {
445
445
  writeUnicodeStringWithPadding(writer, ''); // name
446
446
  var type_4 = ObArTypes[key];
447
447
  if (!type_4)
448
- throw new Error("Not implemented ObArType for: " + key);
448
+ throw new Error("Not implemented ObArType for: ".concat(key));
449
449
  writeAsciiStringOrClassId(writer, type_4);
450
450
  writeInt32(writer, value.length);
451
451
  for (var i = 0; i < value.length; i++) {
@@ -462,7 +462,7 @@ function writeOSType(writer, type, value, key, extType, root) {
462
462
  // case 'Pth ': // File path
463
463
  // writeFilePath(reader);
464
464
  default:
465
- throw new Error("Not implemented descriptor OSType: " + type);
465
+ throw new Error("Not implemented descriptor OSType: ".concat(type));
466
466
  }
467
467
  }
468
468
  function readReferenceStructure(reader) {
@@ -484,7 +484,7 @@ function readReferenceStructure(reader) {
484
484
  readClassStructure(reader);
485
485
  var typeID = readAsciiStringOrClassId(reader);
486
486
  var value = readAsciiStringOrClassId(reader);
487
- items.push(typeID + "." + value);
487
+ items.push("".concat(typeID, ".").concat(value));
488
488
  break;
489
489
  }
490
490
  case 'rele': { // Offset
@@ -505,7 +505,7 @@ function readReferenceStructure(reader) {
505
505
  break;
506
506
  }
507
507
  default:
508
- throw new Error("Invalid descriptor reference type: " + type);
508
+ throw new Error("Invalid descriptor reference type: ".concat(type));
509
509
  }
510
510
  }
511
511
  return items;
@@ -543,7 +543,7 @@ function writeReferenceStructure(writer, _key, items) {
543
543
  break;
544
544
  }
545
545
  default:
546
- throw new Error("Invalid descriptor reference type: " + type);
546
+ throw new Error("Invalid descriptor reference type: ".concat(type));
547
547
  }
548
548
  }
549
549
  return items;
@@ -561,7 +561,7 @@ function writeClassStructure(writer, name, classID) {
561
561
  export function readVersionAndDescriptor(reader) {
562
562
  var version = readUint32(reader);
563
563
  if (version !== 16)
564
- throw new Error("Invalid descriptor version: " + version);
564
+ throw new Error("Invalid descriptor version: ".concat(version));
565
565
  var desc = readDescriptorStructure(reader);
566
566
  // console.log(require('util').inspect(desc, false, 99, true));
567
567
  return desc;
@@ -575,14 +575,14 @@ export function parseAngle(x) {
575
575
  if (x === undefined)
576
576
  return 0;
577
577
  if (x.units !== 'Angle')
578
- throw new Error("Invalid units: " + x.units);
578
+ throw new Error("Invalid units: ".concat(x.units));
579
579
  return x.value;
580
580
  }
581
581
  export function parsePercent(x) {
582
582
  if (x === undefined)
583
583
  return 1;
584
584
  if (x.units !== 'Percent')
585
- throw new Error("Invalid units: " + x.units);
585
+ throw new Error("Invalid units: ".concat(x.units));
586
586
  return x.value / 100;
587
587
  }
588
588
  export function parsePercentOrAngle(x) {
@@ -592,13 +592,13 @@ export function parsePercentOrAngle(x) {
592
592
  return x.value / 100;
593
593
  if (x.units === 'Angle')
594
594
  return x.value / 360;
595
- throw new Error("Invalid units: " + x.units);
595
+ throw new Error("Invalid units: ".concat(x.units));
596
596
  }
597
597
  export function parseUnits(_a) {
598
598
  var units = _a.units, value = _a.value;
599
599
  if (units !== 'Pixels' && units !== 'Millimeters' && units !== 'Points' && units !== 'None' &&
600
600
  units !== 'Picas' && units !== 'Inches' && units !== 'Centimeters' && units !== 'Density') {
601
- throw new Error("Invalid units: " + JSON.stringify({ units: units, value: value }));
601
+ throw new Error("Invalid units: ".concat(JSON.stringify({ units: units, value: value })));
602
602
  }
603
603
  return { value: value, units: units };
604
604
  }
@@ -611,7 +611,7 @@ export function parseUnitsOrNumber(value, units) {
611
611
  export function parseUnitsToNumber(_a, expectedUnits) {
612
612
  var units = _a.units, value = _a.value;
613
613
  if (units !== expectedUnits)
614
- throw new Error("Invalid units: " + JSON.stringify({ units: units, value: value }));
614
+ throw new Error("Invalid units: ".concat(JSON.stringify({ units: units, value: value })));
615
615
  return value;
616
616
  }
617
617
  export function unitsAngle(value) {
@@ -624,13 +624,13 @@ export function unitsValue(x, key) {
624
624
  if (x == null)
625
625
  return { units: 'Pixels', value: 0 };
626
626
  if (typeof x !== 'object')
627
- throw new Error("Invalid value: " + JSON.stringify(x) + " (key: " + key + ") (should have value and units)");
627
+ throw new Error("Invalid value: ".concat(JSON.stringify(x), " (key: ").concat(key, ") (should have value and units)"));
628
628
  var units = x.units, value = x.value;
629
629
  if (typeof value !== 'number')
630
- throw new Error("Invalid value in " + JSON.stringify(x) + " (key: " + key + ")");
630
+ throw new Error("Invalid value in ".concat(JSON.stringify(x), " (key: ").concat(key, ")"));
631
631
  if (units !== 'Pixels' && units !== 'Millimeters' && units !== 'Points' && units !== 'None' &&
632
632
  units !== 'Picas' && units !== 'Inches' && units !== 'Centimeters' && units !== 'Density') {
633
- throw new Error("Invalid units in " + JSON.stringify(x) + " (key: " + key + ")");
633
+ throw new Error("Invalid units in ".concat(JSON.stringify(x), " (key: ").concat(key, ")"));
634
634
  }
635
635
  return { units: units, value: value };
636
636
  }
@@ -734,6 +734,11 @@ export var GrdT = createEnum('GrdT', 'linear', {
734
734
  reflected: 'Rflc',
735
735
  diamond: 'Dmnd',
736
736
  });
737
+ export var gradientInterpolationMethodType = createEnum('gradientInterpolationMethodType', 'perceptual', {
738
+ perceptual: 'Perc',
739
+ linear: 'Lnr',
740
+ classic: 'Gcls',
741
+ });
737
742
  export var ClrS = createEnum('ClrS', 'rgb', {
738
743
  rgb: 'RGBC',
739
744
  hsb: 'HSBl',
@@ -765,4 +770,4 @@ export var strokeStyleLineAlignment = createEnum('strokeStyleLineAlignment', 'in
765
770
  outside: 'strokeStyleAlignOutside',
766
771
  });
767
772
 
768
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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RSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDM0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQy9CLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUM5QixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDNUIsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztJQUN0RCxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzVCLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUM1QixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUN0QyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQy9CLG9DQUFvQyxFQUFFLFFBQVEsQ0FBQyxFQUFF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QUFLLE1BQU0sRUFBRTtRQUNuQixPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDM0U7U0FBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7UUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQ25EO1NBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNuRDtTQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7UUFDcEgsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQ25EO1NBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNuRDtTQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7UUFDOUQsT0FBTyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUN6QztTQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sRUFBRTtRQUMxQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0tBQzlDO1NBQU07UUFDTixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN4QjtBQUNGLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBaUI7SUFDekQsSUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMseUJBQXlCLENBQUMsTUFBaUIsRUFBRSxLQUFhO0lBQ2xFLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtRQUMzQyxnQkFBZ0I7UUFDaEIsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QixjQUFjLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCO1NBQU07UUFDTixxQkFBcUI7UUFDckIsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7S0FDRDtBQUNGLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBaUI7SUFDeEQsSUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLG9CQUFvQjtJQUNwQixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNwQyxJQUFNLEdBQUcsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFNLElBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsdUNBQXVDO1FBQ3ZDLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsMkVBQTJFO1FBQzNFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDbkI7SUFDRCw2QkFBNkI7SUFDN0IsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE1BQWlCLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxLQUFVLEVBQUUsSUFBWTtJQUNsSCxJQUFJLFNBQVMsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFdEYsd0JBQXdCO0lBQ3hCLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1Qyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0MsSUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxLQUFrQixVQUFJLEVBQUosYUFBSSxFQUFKLGtCQUFJLEVBQUosSUFBSSxFQUFFO1FBQW5CLElBQU0sR0FBRyxhQUFBO1FBQ2IsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxPQUFPLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO1lBQzFELElBQUksR0FBRyxNQUFNLENBQUM7U0FDZDthQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDakU7YUFBTSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDN0IsSUFBSSxHQUFHLE9BQU8sS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ25EO2FBQU0sSUFBSSxHQUFHLEtBQUssb0JBQW9CLEVBQUU7WUFDeEMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLE9BQU8sR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7YUFDMUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUMzQixPQUFPLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQzthQUN4QztpQkFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUU7Z0JBQzNCLE9BQU8sR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNOLFNBQVMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pFO1NBQ0Q7YUFBTSxJQUFJLEdBQUcsS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUNwRCxPQUFPLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDMUMsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsRSwyQkFBMkI7U0FDM0I7UUFFRCx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLENBQUM7UUFDdkMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUNBQXVDLEdBQUcsU0FBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdGO0FBQ0YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE1BQWlCLEVBQUUsSUFBWTtJQUNsRCxRQUFRLElBQUksRUFBRTtRQUNiLEtBQUssTUFBTSxFQUFFLFlBQVk7WUFDeEIsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLGFBQWE7UUFDMUIsS0FBSyxNQUFNLEVBQUUsa0NBQWtDO1lBQzlDLE9BQU8sdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLE9BQU87WUFDckIsSUFBTSxRQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQztZQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxJQUFNLE1BQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLDRCQUE0QjtnQkFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQUksQ0FBQyxDQUFDLENBQUM7YUFDckM7WUFFRCxPQUFPLEtBQUssQ0FBQztTQUNiO1FBQ0QsS0FBSyxNQUFNLEVBQUUsU0FBUztZQUNyQixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsY0FBYztZQUM1QixJQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQWtCLEtBQU8sQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUM7U0FDekM7UUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYTtZQUMzQixJQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQWtCLEtBQU8sQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUM7U0FDekM7UUFDRCxLQUFLLE1BQU0sRUFBRSxTQUFTO1lBQ3JCLE9BQU8saUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWE7WUFDM0IsSUFBTSxNQUFJLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsSUFBTSxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0MsT0FBVSxNQUFJLFNBQUksS0FBTyxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxNQUFNLEVBQUUsVUFBVTtZQUN0QixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCO1lBQzlCLElBQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixJQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLEdBQUcsS0FBQSxFQUFFLElBQUksTUFBQSxFQUFFLENBQUM7U0FDckI7UUFDRCxLQUFLLE1BQU0sRUFBRSxVQUFVO1lBQ3RCLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixLQUFLLE1BQU0sQ0FBQyxDQUFDLFFBQVE7UUFDckIsS0FBSyxNQUFNLEVBQUUsUUFBUTtZQUNwQixPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRO1lBQ3RCLElBQU0sUUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBTSxDQUFDLENBQUM7U0FDdkM7UUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsV0FBVztZQUN6QixJQUFNLFFBQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQU0sQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLGVBQWU7WUFDN0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYztZQUNqQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDdEMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7WUFDcEQsSUFBTSxRQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLElBQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQztZQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxJQUFNLEtBQUssR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtnQkFDbkUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFFOUIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCO2dCQUN4QyxJQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLElBQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDakM7Z0JBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFBLEVBQUUsQ0FBQyxDQUFDO2FBQ3BDO1lBRUQsT0FBTyxLQUFLLENBQUM7U0FDYjtRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZO1lBQzFCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLElBQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDN0QsT0FBTyxFQUFFLEdBQUcsS0FBQSxFQUFFLElBQUksTUFBQSxFQUFFLENBQUM7U0FDckI7UUFDRDtZQUNDLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQW1DLElBQUksWUFBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUcsQ0FBQyxDQUFDO0tBQzdGO0FBQ0YsQ0FBQztBQUVELElBQU0sU0FBUyxHQUEyQztJQUN6RCxVQUFVLEVBQUUsZUFBZTtJQUMzQixXQUFXLEVBQUUsTUFBTTtJQUNuQixXQUFXLEVBQUUsTUFBTTtDQUNuQixDQUFDO0FBRUYsU0FBUyxXQUFXLENBQUMsTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBVSxFQUFFLEdBQVcsRUFBRSxPQUFnQyxFQUFFLElBQVk7SUFDNUgsUUFBUSxJQUFJLEVBQUU7UUFDYixLQUFLLE1BQU0sRUFBRSxZQUFZO1lBQ3hCLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUMsTUFBTTtRQUNQLEtBQUssTUFBTSxDQUFDLENBQUMsYUFBYTtRQUMxQixLQUFLLE1BQU0sRUFBRSxrQ0FBa0M7WUFDOUMsSUFBSSxDQUFDLE9BQU87Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBMEIsR0FBRyxXQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQUcsQ0FBQyxDQUFDO1lBQzNGLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdFLE1BQU07UUFDUCxLQUFLLE1BQU0sRUFBRSxPQUFPO1lBQ25CLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFNLE1BQUksR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFJLElBQUksTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBSSxJQUFJLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsRixJQUFJLFNBQVMsSUFBSSxDQUFDLE1BQUk7b0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBdUMsR0FBRyxTQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0Y7WUFDRCxNQUFNO1FBQ1AsS0FBSyxNQUFNLEVBQUUsU0FBUztZQUNyQixZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE1BQU07UUFDUCxLQUFLLE1BQU0sRUFBRSxjQUFjO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFrQixLQUFLLENBQUMsS0FBSyxZQUFPLEdBQUssQ0FBQyxDQUFDO1lBQzFGLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE1BQU07UUFDUCxLQUFLLE1BQU0sRUFBRSxhQUFhO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFrQixLQUFLLENBQUMsS0FBSyxZQUFPLEdBQUssQ0FBQyxDQUFDO1lBQzFGLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE1BQU07UUFDUCxLQUFLLE1BQU0sRUFBRSxTQUFTO1lBQ3JCLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3QyxNQUFNO1FBQ1AsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLGFBQWE7WUFDckIsSUFBQSxLQUFlLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQTlCLEtBQUssUUFBQSxFQUFFLEdBQUcsUUFBb0IsQ0FBQztZQUN0Qyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMseUJBQXlCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU07U0FDTjtRQUNELEtBQUssTUFBTSxFQUFFLFVBQVU7WUFDdEIsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQixNQUFNO1FBQ1AsZ0NBQWdDO1FBQ2hDLDhCQUE4QjtRQUM5QixLQUFLLE1BQU0sRUFBRSxVQUFVO1lBQ3RCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU07UUFDUCx3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLGdDQUFnQztRQUNoQyx3QkFBd0I7UUFDeEIsZ0NBQWdDO1FBQ2hDLEtBQUssTUFBTSxFQUFFLFdBQVc7WUFDdkIsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQixNQUFNO1FBQ1AsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLGVBQWU7WUFDN0IsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDbEMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUNsRCxJQUFNLE1BQUksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQUk7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBaUMsR0FBSyxDQUFDLENBQUM7WUFDbkUseUJBQXlCLENBQUMsTUFBTSxFQUFFLE1BQUksQ0FBQyxDQUFDO1lBQ3hDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0Qyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYztnQkFDaEUsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0IsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0IsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2hELFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN6QzthQUNEO1lBQ0QsTUFBTTtTQUNOO1FBQ0QsNEJBQTRCO1FBQzVCLDBCQUEwQjtRQUMxQjtZQUNDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXNDLElBQU0sQ0FBQyxDQUFDO0tBQy9EO0FBQ0YsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsTUFBaUI7SUFDaEQsSUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQztJQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3BDLElBQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuQyxRQUFRLElBQUksRUFBRTtZQUNiLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXO2dCQUN6QixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsSUFBTSxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xCLE1BQU07YUFDTjtZQUNELEtBQUssTUFBTSxFQUFFLFFBQVE7Z0JBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsTUFBTTtZQUNQLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSx1QkFBdUI7Z0JBQ3JDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQixJQUFNLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEQsSUFBTSxLQUFLLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUksTUFBTSxTQUFJLEtBQU8sQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO2FBQ047WUFDRCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUztnQkFDdkIsNEJBQTRCO2dCQUM1QixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDL0IsTUFBTTthQUNOO1lBQ0QsS0FBSyxNQUFNLEVBQUUsYUFBYTtnQkFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTTtZQUNQLEtBQUssTUFBTSxFQUFFLFFBQVE7Z0JBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUCxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTztnQkFDckIsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsTUFBTTthQUNOO1lBQ0Q7Z0JBQ0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBc0MsSUFBTSxDQUFDLENBQUM7U0FDL0Q7S0FDRDtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2QsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsTUFBaUIsRUFBRSxJQUFZLEVBQUUsS0FBWTtJQUM3RSxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBRXJCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzlCLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ04sSUFBSSxHQUFHLE1BQU0sQ0FBQzthQUNkO1NBQ0Q7UUFFRCxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTdCLFFBQVEsSUFBSSxFQUFFO1lBQ2IsMkJBQTJCO1lBQzNCLHdCQUF3QjtZQUN4QixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsdUJBQXVCO2dCQUMvQixJQUFBLEtBQXNCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQXJDLE1BQU0sUUFBQSxFQUFFLFNBQVMsUUFBb0IsQ0FBQztnQkFDN0MsbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDMUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLE1BQU07YUFDTjtZQUNELHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0Isd0JBQXdCO1lBQ3hCLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPO2dCQUNyQixtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxNQUFNO2FBQ047WUFDRDtnQkFDQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUFzQyxJQUFNLENBQUMsQ0FBQztTQUMvRDtLQUNEO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxNQUFpQjtJQUM1QyxJQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxJQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxrQ0FBa0M7SUFDbEMsT0FBTyxFQUFFLElBQUksTUFBQSxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsTUFBaUIsRUFBRSxJQUFZLEVBQUUsT0FBZTtJQUM1RSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMseUJBQXlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBaUI7SUFDekQsSUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLElBQUksT0FBTyxLQUFLLEVBQUU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUErQixPQUFTLENBQUMsQ0FBQztJQUM5RSxJQUFNLElBQUksR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QywrREFBK0Q7SUFDL0QsT0FBTyxJQUFJLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BQWlCLEVBQUUsSUFBWSxFQUFFLE9BQWUsRUFBRSxVQUFlLEVBQUUsSUFBUztJQUFULHFCQUFBLEVBQUEsU0FBUztJQUNySCxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUNuQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQTJKRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQXVCO0lBQ2pELElBQUksQ0FBQyxLQUFLLFNBQVM7UUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssT0FBTztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQWtCLENBQUMsQ0FBQyxLQUFPLENBQUMsQ0FBQztJQUN0RSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBbUM7SUFDL0QsSUFBSSxDQUFDLEtBQUssU0FBUztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBa0IsQ0FBQyxDQUFDLEtBQU8sQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxDQUFtQztJQUN0RSxJQUFJLENBQUMsS0FBSyxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hELElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPO1FBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFrQixDQUFDLENBQUMsS0FBTyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsRUFBc0M7UUFBcEMsS0FBSyxXQUFBLEVBQUUsS0FBSyxXQUFBO0lBQ3hDLElBQ0MsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLE1BQU07UUFDdkYsS0FBSyxLQUFLLE9BQU8sSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxhQUFhLElBQUksS0FBSyxLQUFLLFNBQVMsRUFDeEY7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBRyxDQUFDLENBQUM7S0FDdEU7SUFDRCxPQUFPLEVBQUUsS0FBSyxPQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQW9DLEVBQUUsS0FBdUI7SUFBdkIsc0JBQUEsRUFBQSxnQkFBdUI7SUFDL0YsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLEtBQUssT0FBQSxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUM7SUFDdkQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFzQyxFQUFFLGFBQXFCO1FBQTNELEtBQUssV0FBQSxFQUFFLEtBQUssV0FBQTtJQUNoRCxJQUFJLEtBQUssS0FBSyxhQUFhO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssT0FBQSxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUcsQ0FBQyxDQUFDO0lBQ25HLE9BQU8sS0FBSyxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBeUI7SUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM5QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUF5QjtJQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLENBQXlCLEVBQUUsR0FBVztJQUNoRSxJQUFJLENBQUMsSUFBSSxJQUFJO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXBELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxlQUFVLEdBQUcsb0NBQWlDLENBQUMsQ0FBQztJQUU1RixJQUFBLEtBQUssR0FBWSxDQUFDLE1BQWIsRUFBRSxLQUFLLEdBQUssQ0FBQyxNQUFOLENBQU87SUFFM0IsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQVUsR0FBRyxNQUFHLENBQUMsQ0FBQztJQUV4RSxJQUNDLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLGFBQWEsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxNQUFNO1FBQ3ZGLEtBQUssS0FBSyxPQUFPLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQ3hGO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBVSxHQUFHLE1BQUcsQ0FBQyxDQUFDO0tBQ3ZFO0lBRUQsT0FBTyxFQUFFLEtBQUssT0FBQSxFQUFFLEtBQUssT0FBQSxFQUFFLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sQ0FBQyxJQUFNLFlBQVksR0FBRyxVQUFVLENBQWUsY0FBYyxFQUFFLE1BQU0sRUFBRTtJQUM1RSxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxNQUFNO0NBQ2IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBYyxNQUFNLEVBQUUsWUFBWSxFQUFFO0lBQ2pFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLFFBQVEsRUFBRSxNQUFNO0NBQ2hCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQVksTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUMxRCxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsS0FBSyxFQUFFLE1BQU07SUFDYixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxNQUFNO0lBQ2QsUUFBUSxFQUFFLHVCQUF1QjtJQUNqQyxXQUFXLEVBQUUsc0JBQXNCO0NBQ25DLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQVksV0FBVyxFQUFFLE1BQU0sRUFBRTtJQUNuRSxJQUFJLEVBQUUsVUFBVTtJQUNoQixHQUFHLEVBQUUsU0FBUztJQUNkLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLEtBQUssRUFBRSxXQUFXO0lBQ2xCLFVBQVUsRUFBRSxnQkFBZ0I7SUFDNUIsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsYUFBYTtJQUN0QixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsWUFBWTtDQUNwQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFZLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDM0QsUUFBUSxFQUFFLE1BQU07SUFDaEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsUUFBUSxFQUFFLE1BQU07SUFDaEIsVUFBVSxFQUFFLE1BQU07SUFDbEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsY0FBYyxFQUFFLGFBQWE7SUFDN0IsU0FBUyxFQUFFLE1BQU07SUFDakIsUUFBUSxFQUFFLE1BQU07SUFDaEIsYUFBYSxFQUFFLE1BQU07SUFDckIsY0FBYyxFQUFFLGFBQWE7SUFDN0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsU0FBUyxFQUFFLE1BQU07SUFDakIsWUFBWSxFQUFFLE1BQU07SUFDcEIsWUFBWSxFQUFFLE1BQU07SUFDcEIsYUFBYSxFQUFFLFlBQVk7SUFDM0IsY0FBYyxFQUFFLGFBQWE7SUFDN0IsV0FBVyxFQUFFLFVBQVU7SUFDdkIsVUFBVSxFQUFFLFNBQVM7SUFDckIsWUFBWSxFQUFFLE1BQU07SUFDcEIsV0FBVyxFQUFFLE1BQU07SUFDbkIsVUFBVSxFQUFFLGtCQUFrQjtJQUM5QixRQUFRLEVBQUUsYUFBYTtJQUN2QixLQUFLLEVBQUUsTUFBTTtJQUNiLFlBQVksRUFBRSxNQUFNO0lBQ3BCLE9BQU8sRUFBRSxNQUFNO0lBQ2YsWUFBWSxFQUFFLE1BQU07SUFDcEIsY0FBYztJQUNkLGVBQWUsRUFBRSxjQUFjO0lBQy9CLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLGFBQWEsRUFBRSxNQUFNLEVBQUUsNEJBQTRCO0NBQ25ELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQWEsTUFBTSxFQUFFLGFBQWEsRUFBRTtJQUNqRSxhQUFhLEVBQUUsTUFBTTtJQUNyQixhQUFhLEVBQUUsTUFBTTtJQUNyQixRQUFRLEVBQUUsTUFBTTtJQUNoQixlQUFlLEVBQUUsTUFBTTtJQUN2QixlQUFlLEVBQUUsY0FBYztDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFpQixNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ2hFLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLGFBQWEsRUFBRSxNQUFNO0NBQ3JCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQWlCLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDNUQsRUFBRSxFQUFFLE1BQU07SUFDVixJQUFJLEVBQUUsTUFBTTtDQUNaLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQWdCLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDL0QsTUFBTSxFQUFFLE1BQU07SUFDZCxPQUFPLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRTtJQUMxRCxJQUFJLEVBQUUsTUFBTTtJQUNaLE1BQU0sRUFBRSxNQUFNO0NBQ2QsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBZ0IsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUMvRCxNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxNQUFNO0lBQ2QsS0FBSyxFQUFFLE1BQU07SUFDYixTQUFTLEVBQUUsTUFBTTtJQUNqQixPQUFPLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLElBQUksR0FBRyxVQUFVLENBQXdCLE1BQU0sRUFBRSxLQUFLLEVBQUU7SUFDcEUsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsTUFBTTtJQUNYLEdBQUcsRUFBRSxNQUFNO0NBQ1gsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQU0sSUFBSSxHQUFHLFVBQVUsQ0FBa0MsTUFBTSxFQUFFLFNBQVMsRUFBRTtJQUNsRixPQUFPLEVBQUUsTUFBTTtJQUNmLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE1BQU07Q0FDZCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsSUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFtQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ2pGLEtBQUssRUFBRSxNQUFNO0lBQ2IsUUFBUSxFQUFFLE1BQU07SUFDaEIsT0FBTyxFQUFFLE1BQU07Q0FDZixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsSUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQWMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFO0lBQy9GLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixNQUFNLEVBQUUsc0JBQXNCO0NBQzlCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxJQUFNLHVCQUF1QixHQUFHLFVBQVUsQ0FBZSx5QkFBeUIsRUFBRSxPQUFPLEVBQUU7SUFDbkcsS0FBSyxFQUFFLHNCQUFzQjtJQUM3QixLQUFLLEVBQUUsc0JBQXNCO0lBQzdCLEtBQUssRUFBRSxzQkFBc0I7Q0FDN0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQU0sd0JBQXdCLEdBQUcsVUFBVSxDQUFnQiwwQkFBMEIsRUFBRSxRQUFRLEVBQUU7SUFDdkcsTUFBTSxFQUFFLHdCQUF3QjtJQUNoQyxNQUFNLEVBQUUsd0JBQXdCO0lBQ2hDLE9BQU8sRUFBRSx5QkFBeUI7Q0FDbEMsQ0FBQyxDQUFDIiwiZmlsZSI6ImRlc2NyaXB0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbnVtIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHtcclxuXHRBbnRpQWxpYXMsIEJldmVsRGlyZWN0aW9uLCBCZXZlbFN0eWxlLCBCZXZlbFRlY2huaXF1ZSwgQmxlbmRNb2RlLCBHbG93U291cmNlLCBHbG93VGVjaG5pcXVlLCBHcmFkaWVudFN0eWxlLFxyXG5cdExpbmVBbGlnbm1lbnQsIExpbmVDYXBUeXBlLCBMaW5lSm9pblR5cGUsIE9yaWVudGF0aW9uLCBUZXh0R3JpZGRpbmcsIFVuaXRzLCBVbml0c1ZhbHVlLCBXYXJwU3R5bGVcclxufSBmcm9tICcuL3BzZCc7XHJcbmltcG9ydCB7XHJcblx0UHNkUmVhZGVyLCByZWFkU2lnbmF0dXJlLCByZWFkVW5pY29kZVN0cmluZywgcmVhZFVpbnQzMiwgcmVhZFVpbnQ4LCByZWFkRmxvYXQ2NCxcclxuXHRyZWFkQnl0ZXMsIHJlYWRBc2NpaVN0cmluZywgcmVhZEludDMyLCByZWFkRmxvYXQzMiwgcmVhZEludDMyTEUsIHJlYWRVbmljb2RlU3RyaW5nV2l0aExlbmd0aFxyXG59IGZyb20gJy4vcHNkUmVhZGVyJztcclxuaW1wb3J0IHtcclxuXHRQc2RXcml0ZXIsIHdyaXRlU2lnbmF0dXJlLCB3cml0ZUJ5dGVzLCB3cml0ZVVpbnQzMiwgd3JpdGVGbG9hdDY0LCB3cml0ZVVpbnQ4LFxyXG5cdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nLCB3cml0ZUludDMyLCB3cml0ZUZsb2F0MzIsIHdyaXRlVW5pY29kZVN0cmluZ1xyXG59IGZyb20gJy4vcHNkV3JpdGVyJztcclxuXHJcbmludGVyZmFjZSBEaWN0IHsgW2tleTogc3RyaW5nXTogc3RyaW5nOyB9XHJcbmludGVyZmFjZSBOYW1lQ2xhc3NJRCB7IG5hbWU6IHN0cmluZzsgY2xhc3NJRDogc3RyaW5nOyB9XHJcbmludGVyZmFjZSBFeHRUeXBlRGljdCB7IFtrZXk6IHN0cmluZ106IE5hbWVDbGFzc0lEOyB9XHJcblxyXG5mdW5jdGlvbiByZXZNYXAobWFwOiBEaWN0KSB7XHJcblx0Y29uc3QgcmVzdWx0OiBEaWN0ID0ge307XHJcblx0T2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGtleSA9PiByZXN1bHRbbWFwW2tleV1dID0ga2V5KTtcclxuXHRyZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5jb25zdCB1bml0c01hcDogRGljdCA9IHtcclxuXHQnI0FuZyc6ICdBbmdsZScsXHJcblx0JyNSc2wnOiAnRGVuc2l0eScsXHJcblx0JyNSbHQnOiAnRGlzdGFuY2UnLFxyXG5cdCcjTm5lJzogJ05vbmUnLFxyXG5cdCcjUHJjJzogJ1BlcmNlbnQnLFxyXG5cdCcjUHhsJzogJ1BpeGVscycsXHJcblx0JyNNbG0nOiAnTWlsbGltZXRlcnMnLFxyXG5cdCcjUG50JzogJ1BvaW50cycsXHJcblx0J1JyUGknOiAnUGljYXMnLFxyXG5cdCdSckluJzogJ0luY2hlcycsXHJcblx0J1JyQ20nOiAnQ2VudGltZXRlcnMnLFxyXG59O1xyXG5cclxuY29uc3QgdW5pdHNNYXBSZXYgPSByZXZNYXAodW5pdHNNYXApO1xyXG5sZXQgbG9nRXJyb3JzID0gZmFsc2U7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9nRXJyb3JzKHZhbHVlOiBib29sZWFuKSB7XHJcblx0bG9nRXJyb3JzID0gdmFsdWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1ha2VUeXBlKG5hbWU6IHN0cmluZywgY2xhc3NJRDogc3RyaW5nKSB7XHJcblx0cmV0dXJuIHsgbmFtZSwgY2xhc3NJRCB9O1xyXG59XHJcblxyXG5jb25zdCBmaWVsZFRvRXh0VHlwZTogRXh0VHlwZURpY3QgPSB7XHJcblx0c3Ryb2tlU3R5bGVDb250ZW50OiBtYWtlVHlwZSgnJywgJ3NvbGlkQ29sb3JMYXllcicpLFxyXG5cdC8vIHByaW50UHJvb2ZTZXR1cDogbWFrZVR5cGUoJ+agoeagt+iuvue9ricsICdwcm9vZlNldHVwJyksIC8vIFRFU1RJTkdcclxuXHRwcmludFByb29mU2V0dXA6IG1ha2VUeXBlKCdQcm9vZiBTZXR1cCcsICdwcm9vZlNldHVwJyksXHJcblx0cGF0dGVybkZpbGw6IG1ha2VUeXBlKCcnLCAncGF0dGVybkZpbGwnKSxcclxuXHRHcmFkOiBtYWtlVHlwZSgnR3JhZGllbnQnLCAnR3JkbicpLFxyXG5cdGViYmw6IG1ha2VUeXBlKCcnLCAnZWJibCcpLFxyXG5cdFNvRmk6IG1ha2VUeXBlKCcnLCAnU29GaScpLFxyXG5cdEdyRmw6IG1ha2VUeXBlKCcnLCAnR3JGbCcpLFxyXG5cdHNkd0M6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdGhnbEM6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdCdDbHIgJzogbWFrZVR5cGUoJycsICdSR0JDJyksXHJcblx0J3RpbnRDb2xvcic6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdE9mc3Q6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdENoRlg6IG1ha2VUeXBlKCcnLCAnQ2hGWCcpLFxyXG5cdE1wZ1M6IG1ha2VUeXBlKCcnLCAnU2hwQycpLFxyXG5cdERyU2g6IG1ha2VUeXBlKCcnLCAnRHJTaCcpLFxyXG5cdElyU2g6IG1ha2VUeXBlKCcnLCAnSXJTaCcpLFxyXG5cdE9yR2w6IG1ha2VUeXBlKCcnLCAnT3JHbCcpLFxyXG5cdElyR2w6IG1ha2VUeXBlKCcnLCAnSXJHbCcpLFxyXG5cdFRyblM6IG1ha2VUeXBlKCcnLCAnU2hwQycpLFxyXG5cdFB0cm46IG1ha2VUeXBlKCcnLCAnUHRybicpLFxyXG5cdEZyRlg6IG1ha2VUeXBlKCcnLCAnRnJGWCcpLFxyXG5cdHBoYXNlOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRmcmFtZVN0ZXA6IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdGR1cmF0aW9uOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRib3VuZHM6IG1ha2VUeXBlKCcnLCAnUmN0bicpLFxyXG5cdGN1c3RvbUVudmVsb3BlV2FycDogbWFrZVR5cGUoJycsICdjdXN0b21FbnZlbG9wZVdhcnAnKSxcclxuXHR3YXJwOiBtYWtlVHlwZSgnJywgJ3dhcnAnKSxcclxuXHQnU3ogICc6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdG9yaWdpbjogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0YXV0b0V4cGFuZE9mZnNldDogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0a2V5T3JpZ2luU2hhcGVCQm94OiBtYWtlVHlwZSgnJywgJ3VuaXRSZWN0JyksXHJcblx0VnJzbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0cHNWZXJzaW9uOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3I6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdGFydGJvYXJkUmVjdDogbWFrZVR5cGUoJycsICdjbGFzc0Zsb2F0UmVjdCcpLFxyXG5cdGtleU9yaWdpblJSZWN0UmFkaWk6IG1ha2VUeXBlKCcnLCAncmFkaWknKSxcclxuXHRrZXlPcmlnaW5Cb3hDb3JuZXJzOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJBOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJCOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJDOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJEOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRjb21wSW5mbzogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0VHJuZjogbWFrZVR5cGUoJ1RyYW5zZm9ybScsICdUcm5mJyksXHJcblx0cXVpbHRXYXJwOiBtYWtlVHlwZSgnJywgJ3F1aWx0V2FycCcpLFxyXG5cdGdlbmVyYXRvclNldHRpbmdzOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRjcmVtYTogbWFrZVR5cGUoJycsICdudWxsJyksXHJcbn07XHJcblxyXG5jb25zdCBmaWVsZFRvQXJyYXlFeHRUeXBlOiBFeHRUeXBlRGljdCA9IHtcclxuXHQnQ3J2ICc6IG1ha2VUeXBlKCcnLCAnQ3JQdCcpLFxyXG5cdENscnM6IG1ha2VUeXBlKCcnLCAnQ2xydCcpLFxyXG5cdFRybnM6IG1ha2VUeXBlKCcnLCAnVHJuUycpLFxyXG5cdGtleURlc2NyaXB0b3JMaXN0OiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRzb2xpZEZpbGxNdWx0aTogbWFrZVR5cGUoJycsICdTb0ZpJyksXHJcblx0Z3JhZGllbnRGaWxsTXVsdGk6IG1ha2VUeXBlKCcnLCAnR3JGbCcpLFxyXG5cdGRyb3BTaGFkb3dNdWx0aTogbWFrZVR5cGUoJycsICdEclNoJyksXHJcblx0aW5uZXJTaGFkb3dNdWx0aTogbWFrZVR5cGUoJycsICdJclNoJyksXHJcblx0ZnJhbWVGWE11bHRpOiBtYWtlVHlwZSgnJywgJ0ZyRlgnKSxcclxufTtcclxuXHJcbmNvbnN0IHR5cGVUb0ZpZWxkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdOyB9ID0ge1xyXG5cdCdURVhUJzogW1xyXG5cdFx0J1R4dCAnLCAncHJpbnRlck5hbWUnLCAnTm0gICcsICdJZG50JywgJ2JsYWNrQW5kV2hpdGVQcmVzZXRGaWxlTmFtZScsICdMVVQzREZpbGVOYW1lJyxcclxuXHRcdCdwcmVzZXRGaWxlTmFtZScsICdjdXJ2ZXNQcmVzZXRGaWxlTmFtZScsICdtaXhlclByZXNldEZpbGVOYW1lJywgJ3BsYWNlZCcsICdkZXNjcmlwdGlvbicsICdyZWFzb24nLFxyXG5cdFx0J2FydGJvYXJkUHJlc2V0TmFtZScsICdqc29uJyxcclxuXHRdLFxyXG5cdCd0ZHRhJzogWydFbmdpbmVEYXRhJywgJ0xVVDNERmlsZURhdGEnXSxcclxuXHQnbG9uZyc6IFtcclxuXHRcdCdUZXh0SW5kZXgnLCAnUm5kUycsICdNZHBuJywgJ1NtdGgnLCAnTGN0bicsICdzdHJva2VTdHlsZVZlcnNpb24nLCAnTGFJRCcsICdWcnNuJywgJ0NudCAnLFxyXG5cdFx0J0JyZ2gnLCAnQ250cicsICdtZWFucycsICd2aWJyYW5jZScsICdTdHJ0JywgJ2J3UHJlc2V0S2luZCcsICdwcmVzZXRLaW5kJywgJ2NvbXAnLCAnY29tcElEJywgJ29yaWdpbmFsQ29tcElEJyxcclxuXHRcdCdjdXJ2ZXNQcmVzZXRLaW5kJywgJ21peGVyUHJlc2V0S2luZCcsICd1T3JkZXInLCAndk9yZGVyJywgJ1BnTm0nLCAndG90YWxQYWdlcycsICdDcm9wJyxcclxuXHRcdCdudW1lcmF0b3InLCAnZGVub21pbmF0b3InLCAnZnJhbWVDb3VudCcsICdBbm50JywgJ2tleU9yaWdpblR5cGUnLCAndW5pdFZhbHVlUXVhZFZlcnNpb24nLFxyXG5cdFx0J2tleU9yaWdpbkluZGV4JywgJ21ham9yJywgJ21pbm9yJywgJ2ZpeCcsICdkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZScsICdhcnRib2FyZEJhY2tncm91bmRUeXBlJyxcclxuXHRcdCdudW1Nb2RpZnlpbmdGWCcsICdkZWZvcm1OdW1Sb3dzJywgJ2RlZm9ybU51bUNvbHMnLFxyXG5cdF0sXHJcblx0J2VudW0nOiBbXHJcblx0XHQndGV4dEdyaWRkaW5nJywgJ09ybnQnLCAnd2FycFN0eWxlJywgJ3dhcnBSb3RhdGUnLCAnSW50ZScsICdCbHRuJywgJ0NsclMnLFxyXG5cdFx0J3Nkd00nLCAnaGdsTScsICdidmxUJywgJ2J2bFMnLCAnYnZsRCcsICdNZCAgJywgJ2dsd1MnLCAnR3JkRicsICdHbHdUJyxcclxuXHRcdCdzdHJva2VTdHlsZUxpbmVDYXBUeXBlJywgJ3N0cm9rZVN0eWxlTGluZUpvaW5UeXBlJywgJ3N0cm9rZVN0eWxlTGluZUFsaWdubWVudCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVCbGVuZE1vZGUnLCAnUG50VCcsICdTdHlsJywgJ2xvb2t1cFR5cGUnLCAnTFVURm9ybWF0JywgJ2RhdGFPcmRlcicsXHJcblx0XHQndGFibGVPcmRlcicsICdlbmFibGVDb21wQ29yZScsICdlbmFibGVDb21wQ29yZUdQVScsICdjb21wQ29yZVN1cHBvcnQnLCAnY29tcENvcmVHUFVTdXBwb3J0JywgJ0VuZ24nLFxyXG5cdFx0J2VuYWJsZUNvbXBDb3JlVGhyZWFkcycsXHJcblx0XSxcclxuXHQnYm9vbCc6IFtcclxuXHRcdCdQc3RTJywgJ3ByaW50U2l4dGVlbkJpdCcsICdtYXN0ZXJGWFN3aXRjaCcsICdlbmFiJywgJ3VnbGcnLCAnYW50aWFsaWFzR2xvc3MnLFxyXG5cdFx0J3VzZVNoYXBlJywgJ3VzZVRleHR1cmUnLCAnbWFzdGVyRlhTd2l0Y2gnLCAndWdsZycsICdhbnRpYWxpYXNHbG9zcycsICd1c2VTaGFwZScsXHJcblx0XHQndXNlVGV4dHVyZScsICdBbGduJywgJ1J2cnMnLCAnRHRocicsICdJbnZyJywgJ1ZjdEMnLCAnU2hUcicsICdsYXllckNvbmNlYWxzJyxcclxuXHRcdCdzdHJva2VFbmFibGVkJywgJ2ZpbGxFbmFibGVkJywgJ3N0cm9rZVN0eWxlU2NhbGVMb2NrJywgJ3N0cm9rZVN0eWxlU3Ryb2tlQWRqdXN0JyxcclxuXHRcdCdoYXJkUHJvb2YnLCAnTXBCbCcsICdwYXBlcldoaXRlJywgJ3VzZUxlZ2FjeScsICdBdXRvJywgJ0xhYiAnLCAndXNlVGludCcsICdrZXlTaGFwZUludmFsaWRhdGVkJyxcclxuXHRcdCdhdXRvRXhwYW5kRW5hYmxlZCcsICdhdXRvTmVzdEVuYWJsZWQnLCAnYXV0b1Bvc2l0aW9uRW5hYmxlZCcsICdzaHJpbmt3cmFwT25TYXZlRW5hYmxlZCcsXHJcblx0XHQncHJlc2VudCcsICdzaG93SW5EaWFsb2cnLCAnb3ZlcnByaW50JyxcclxuXHRdLFxyXG5cdCdkb3ViJzogW1xyXG5cdFx0J3dhcnBWYWx1ZScsICd3YXJwUGVyc3BlY3RpdmUnLCAnd2FycFBlcnNwZWN0aXZlT3RoZXInLCAnSW50cicsICdXZHRoJywgJ0hnaHQnLFxyXG5cdFx0J3N0cm9rZVN0eWxlTWl0ZXJMaW1pdCcsICdzdHJva2VTdHlsZVJlc29sdXRpb24nLCAnbGF5ZXJUaW1lJywgJ2tleU9yaWdpblJlc29sdXRpb24nLFxyXG5cdFx0J3h4JywgJ3h5JywgJ3l4JywgJ3l5JywgJ3R4JywgJ3R5JyxcclxuXHRdLFxyXG5cdCdVbnRGJzogW1xyXG5cdFx0J1NjbCAnLCAnc2R3TycsICdoZ2xPJywgJ2xhZ2wnLCAnTGFsZCcsICdzcmdSJywgJ2JsdXInLCAnU2Z0bicsICdPcGN0JywgJ0RzdG4nLCAnQW5nbCcsXHJcblx0XHQnQ2ttdCcsICdOb3NlJywgJ0lucHInLCAnU2hkTicsICdzdHJva2VTdHlsZUxpbmVXaWR0aCcsICdzdHJva2VTdHlsZUxpbmVEYXNoT2Zmc2V0JyxcclxuXHRcdCdzdHJva2VTdHlsZU9wYWNpdHknLCAnSCAgICcsICdUb3AgJywgJ0xlZnQnLCAnQnRvbScsICdSZ2h0JywgJ1JzbHQnLFxyXG5cdFx0J3RvcFJpZ2h0JywgJ3RvcExlZnQnLCAnYm90dG9tTGVmdCcsICdib3R0b21SaWdodCcsXHJcblx0XSxcclxuXHQnVmxMcyc6IFtcclxuXHRcdCdDcnYgJywgJ0NscnMnLCAnTW5tICcsICdNeG0gJywgJ1RybnMnLCAncGF0aExpc3QnLCAnc3Ryb2tlU3R5bGVMaW5lRGFzaFNldCcsICdGckxzJyxcclxuXHRcdCdMYVN0JywgJ1RybmYnLCAnbm9uQWZmaW5lVHJhbnNmb3JtJywgJ2tleURlc2NyaXB0b3JMaXN0JywgJ2d1aWRlSW5kZWNlcycsICdncmFkaWVudEZpbGxNdWx0aScsXHJcblx0XHQnc29saWRGaWxsTXVsdGknLCAnZnJhbWVGWE11bHRpJywgJ2lubmVyU2hhZG93TXVsdGknLCAnZHJvcFNoYWRvd011bHRpJyxcclxuXHRdLFxyXG5cdCdPYkFyJzogWydtZXNoUG9pbnRzJywgJ3F1aWx0U2xpY2VYJywgJ3F1aWx0U2xpY2VZJ10sXHJcblx0J29iaiAnOiBbJ251bGwnXSxcclxufTtcclxuXHJcbmNvbnN0IGNoYW5uZWxzID0gW1xyXG5cdCdSZCAgJywgJ0dybiAnLCAnQmwgICcsICdZbGx3JywgJ1lsdyAnLCAnQ3luICcsICdNZ250JywgJ0JsY2snLCAnR3J5ICcsICdMbW5jJywgJ0EgICAnLCAnQiAgICcsXHJcbl07XHJcblxyXG5jb25zdCBmaWVsZFRvQXJyYXlUeXBlOiBEaWN0ID0ge1xyXG5cdCdNbm0gJzogJ2xvbmcnLFxyXG5cdCdNeG0gJzogJ2xvbmcnLFxyXG5cdCdGckxzJzogJ2xvbmcnLFxyXG5cdCdzdHJva2VTdHlsZUxpbmVEYXNoU2V0JzogJ1VudEYnLFxyXG5cdCdUcm5mJzogJ2RvdWInLFxyXG5cdCdub25BZmZpbmVUcmFuc2Zvcm0nOiAnZG91YicsXHJcblx0J2tleURlc2NyaXB0b3JMaXN0JzogJ09iamMnLFxyXG5cdCdncmFkaWVudEZpbGxNdWx0aSc6ICdPYmpjJyxcclxuXHQnc29saWRGaWxsTXVsdGknOiAnT2JqYycsXHJcblx0J2ZyYW1lRlhNdWx0aSc6ICdPYmpjJyxcclxuXHQnaW5uZXJTaGFkb3dNdWx0aSc6ICdPYmpjJyxcclxuXHQnZHJvcFNoYWRvd011bHRpJzogJ09iamMnLFxyXG59O1xyXG5cclxuY29uc3QgZmllbGRUb1R5cGU6IERpY3QgPSB7fTtcclxuXHJcbmZvciAoY29uc3QgdHlwZSBvZiBPYmplY3Qua2V5cyh0eXBlVG9GaWVsZCkpIHtcclxuXHRmb3IgKGNvbnN0IGZpZWxkIG9mIHR5cGVUb0ZpZWxkW3R5cGVdKSB7XHJcblx0XHRmaWVsZFRvVHlwZVtmaWVsZF0gPSB0eXBlO1xyXG5cdH1cclxufVxyXG5cclxuZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhmaWVsZFRvRXh0VHlwZSkpIHtcclxuXHRpZiAoIWZpZWxkVG9UeXBlW2ZpZWxkXSkgZmllbGRUb1R5cGVbZmllbGRdID0gJ09iamMnO1xyXG59XHJcblxyXG5mb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC5rZXlzKGZpZWxkVG9BcnJheUV4dFR5cGUpKSB7XHJcblx0ZmllbGRUb0FycmF5VHlwZVtmaWVsZF0gPSAnT2JqYyc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFR5cGVCeUtleShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcm9vdDogc3RyaW5nKSB7XHJcblx0aWYgKGtleSA9PT0gJ1N6ICAnKSB7XHJcblx0XHRyZXR1cm4gKCdXZHRoJyBpbiB2YWx1ZSkgPyAnT2JqYycgOiAoKCd1bml0cycgaW4gdmFsdWUpID8gJ1VudEYnIDogJ2RvdWInKTtcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1R5cGUnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/ICdlbnVtJyA6ICdsb25nJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ0FudEEnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/ICdlbnVtJyA6ICdib29sJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ0hyem4nIHx8IGtleSA9PT0gJ1ZydGMnIHx8IGtleSA9PT0gJ1RvcCAnIHx8IGtleSA9PT0gJ0xlZnQnIHx8IGtleSA9PT0gJ0J0b20nIHx8IGtleSA9PT0gJ1JnaHQnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/ICdkb3ViJyA6ICdVbnRGJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1Zyc24nKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/ICdsb25nJyA6ICdPYmpjJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1JkICAnIHx8IGtleSA9PT0gJ0dybiAnIHx8IGtleSA9PT0gJ0JsICAnKSB7XHJcblx0XHRyZXR1cm4gcm9vdCA9PT0gJ2FydGQnID8gJ2xvbmcnIDogJ2RvdWInO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnVHJuZicpIHtcclxuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdWbExzJyA6ICdPYmpjJztcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIGZpZWxkVG9UeXBlW2tleV07XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0cmV0dXJuIHJlYWRBc2NpaVN0cmluZyhyZWFkZXIsIGxlbmd0aCB8fCA0KTtcclxufVxyXG5cclxuZnVuY3Rpb24gd3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IHN0cmluZykge1xyXG5cdGlmICh2YWx1ZS5sZW5ndGggPT09IDQgJiYgdmFsdWUgIT09ICd3YXJwJykge1xyXG5cdFx0Ly8gd3JpdGUgY2xhc3NJZFxyXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDApO1xyXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB2YWx1ZSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdC8vIHdyaXRlIGFzY2lpIHN0cmluZ1xyXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmxlbmd0aCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdmFsdWUuY2hhckNvZGVBdChpKSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZERlc2NyaXB0b3JTdHJ1Y3R1cmUocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCBvYmplY3Q6IGFueSA9IHt9O1xyXG5cdC8vIG9iamVjdC5fX3N0cnVjdCA9XHJcblx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0Y29uc3QgaXRlbXNDb3VudCA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtc0NvdW50OyBpKyspIHtcclxuXHRcdGNvbnN0IGtleSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGA+ICcke2tleX0nICcke3R5cGV9J2ApO1xyXG5cdFx0Y29uc3QgZGF0YSA9IHJlYWRPU1R5cGUocmVhZGVyLCB0eXBlKTtcclxuXHRcdC8vIGlmICghZ2V0VHlwZUJ5S2V5KGtleSwgZGF0YSkpIGNvbnNvbGUubG9nKGA+ICcke2tleX0nICcke3R5cGV9J2AsIGRhdGEpO1xyXG5cdFx0b2JqZWN0W2tleV0gPSBkYXRhO1xyXG5cdH1cclxuXHQvLyBjb25zb2xlLmxvZygnLy8nLCBzdHJ1Y3QpO1xyXG5cdHJldHVybiBvYmplY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlc2NyaXB0b3JTdHJ1Y3R1cmUod3JpdGVyOiBQc2RXcml0ZXIsIG5hbWU6IHN0cmluZywgY2xhc3NJZDogc3RyaW5nLCB2YWx1ZTogYW55LCByb290OiBzdHJpbmcpIHtcclxuXHRpZiAobG9nRXJyb3JzICYmICFjbGFzc0lkKSBjb25zb2xlLmxvZygnTWlzc2luZyBjbGFzc0lkIGZvcjogJywgbmFtZSwgY2xhc3NJZCwgdmFsdWUpO1xyXG5cclxuXHQvLyB3cml0ZSBjbGFzcyBzdHJ1Y3R1cmVcclxuXHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIG5hbWUpO1xyXG5cdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBjbGFzc0lkKTtcclxuXHJcblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcclxuXHR3cml0ZVVpbnQzMih3cml0ZXIsIGtleXMubGVuZ3RoKTtcclxuXHJcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG5cdFx0bGV0IHR5cGUgPSBnZXRUeXBlQnlLZXkoa2V5LCB2YWx1ZVtrZXldLCByb290KTtcclxuXHRcdGxldCBleHRUeXBlID0gZmllbGRUb0V4dFR5cGVba2V5XTtcclxuXHJcblx0XHRpZiAoKGtleSA9PT0gJ1N0cnQnIHx8IGtleSA9PT0gJ0JyZ2gnKSAmJiAnSCAgICcgaW4gdmFsdWUpIHtcclxuXHRcdFx0dHlwZSA9ICdkb3ViJztcclxuXHRcdH0gZWxzZSBpZiAoY2hhbm5lbHMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xyXG5cdFx0XHR0eXBlID0gKGNsYXNzSWQgPT09ICdSR0JDJyAmJiByb290ICE9PSAnYXJ0ZCcpID8gJ2RvdWInIDogJ2xvbmcnO1xyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdwcm9maWxlJykge1xyXG5cdFx0XHR0eXBlID0gY2xhc3NJZCA9PT0gJ3ByaW50T3V0cHV0JyA/ICdURVhUJyA6ICd0ZHRhJztcclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnc3Ryb2tlU3R5bGVDb250ZW50Jykge1xyXG5cdFx0XHRpZiAodmFsdWVba2V5XVsnQ2xyICddKSB7XHJcblx0XHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAnc29saWRDb2xvckxheWVyJyk7XHJcblx0XHRcdH0gZWxzZSBpZiAodmFsdWVba2V5XS5HcmFkKSB7XHJcblx0XHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAnZ3JhZGllbnRMYXllcicpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlW2tleV0uUHRybikge1xyXG5cdFx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ3BhdHRlcm5MYXllcicpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxvZ0Vycm9ycyAmJiBjb25zb2xlLmxvZygnSW52YWxpZCBzdHJva2VTdHlsZUNvbnRlbnQgdmFsdWUnLCB2YWx1ZVtrZXldKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdib3VuZHMnICYmIHJvb3QgPT09ICdxdWlsdFdhcnAnKSB7XHJcblx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ2NsYXNzRmxvYXRSZWN0Jyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGV4dFR5cGUgJiYgZXh0VHlwZS5jbGFzc0lEID09PSAnUkdCQycpIHtcclxuXHRcdFx0aWYgKCdIICAgJyBpbiB2YWx1ZVtrZXldKSBleHRUeXBlID0geyBjbGFzc0lEOiAnSFNCQycsIG5hbWU6ICcnIH07XHJcblx0XHRcdC8vIFRPRE86IG90aGVyIGNvbG9yIHNwYWNlc1xyXG5cdFx0fVxyXG5cclxuXHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBrZXkpO1xyXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB0eXBlIHx8ICdsb25nJyk7XHJcblx0XHR3cml0ZU9TVHlwZSh3cml0ZXIsIHR5cGUgfHwgJ2xvbmcnLCB2YWx1ZVtrZXldLCBrZXksIGV4dFR5cGUsIHJvb3QpO1xyXG5cdFx0aWYgKGxvZ0Vycm9ycyAmJiAhdHlwZSkgY29uc29sZS5sb2coYE1pc3NpbmcgZGVzY3JpcHRvciBmaWVsZCB0eXBlIGZvcjogJyR7a2V5fScgaW5gLCB2YWx1ZSk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkT1NUeXBlKHJlYWRlcjogUHNkUmVhZGVyLCB0eXBlOiBzdHJpbmcpIHtcclxuXHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdGNhc2UgJ29iaiAnOiAvLyBSZWZlcmVuY2VcclxuXHRcdFx0cmV0dXJuIHJlYWRSZWZlcmVuY2VTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ09iamMnOiAvLyBEZXNjcmlwdG9yXHJcblx0XHRjYXNlICdHbGJPJzogLy8gR2xvYmFsT2JqZWN0IHNhbWUgYXMgRGVzY3JpcHRvclxyXG5cdFx0XHRyZXR1cm4gcmVhZERlc2NyaXB0b3JTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ1ZsTHMnOiB7IC8vIExpc3RcclxuXHRcdFx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJyAgPicsIHR5cGUpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZE9TVHlwZShyZWFkZXIsIHR5cGUpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGl0ZW1zO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnZG91Yic6IC8vIERvdWJsZVxyXG5cdFx0XHRyZXR1cm4gcmVhZEZsb2F0NjQocmVhZGVyKTtcclxuXHRcdGNhc2UgJ1VudEYnOiB7IC8vIFVuaXQgZG91YmxlXHJcblx0XHRcdGNvbnN0IHVuaXRzID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRGbG9hdDY0KHJlYWRlcik7XHJcblx0XHRcdGlmICghdW5pdHNNYXBbdW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dW5pdHN9YCk7XHJcblx0XHRcdHJldHVybiB7IHVuaXRzOiB1bml0c01hcFt1bml0c10sIHZhbHVlIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdVbkZsJzogeyAvLyBVbml0IGZsb2F0XHJcblx0XHRcdGNvbnN0IHVuaXRzID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRGbG9hdDMyKHJlYWRlcik7XHJcblx0XHRcdGlmICghdW5pdHNNYXBbdW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dW5pdHN9YCk7XHJcblx0XHRcdHJldHVybiB7IHVuaXRzOiB1bml0c01hcFt1bml0c10sIHZhbHVlIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdURVhUJzogLy8gU3RyaW5nXHJcblx0XHRcdHJldHVybiByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnZW51bSc6IHsgLy8gRW51bWVyYXRlZFxyXG5cdFx0XHRjb25zdCB0eXBlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdHJldHVybiBgJHt0eXBlfS4ke3ZhbHVlfWA7XHJcblx0XHR9XHJcblx0XHRjYXNlICdsb25nJzogLy8gSW50ZWdlclxyXG5cdFx0XHRyZXR1cm4gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRjYXNlICdjb21wJzogeyAvLyBMYXJnZSBJbnRlZ2VyXHJcblx0XHRcdGNvbnN0IGxvdyA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgaGlnaCA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0cmV0dXJuIHsgbG93LCBoaWdoIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdib29sJzogLy8gQm9vbGVhblxyXG5cdFx0XHRyZXR1cm4gISFyZWFkVWludDgocmVhZGVyKTtcclxuXHRcdGNhc2UgJ3R5cGUnOiAvLyBDbGFzc1xyXG5cdFx0Y2FzZSAnR2xiQyc6IC8vIENsYXNzXHJcblx0XHRcdHJldHVybiByZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ2FsaXMnOiB7IC8vIEFsaWFzXHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4gcmVhZEFzY2lpU3RyaW5nKHJlYWRlciwgbGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ3RkdGEnOiB7IC8vIFJhdyBEYXRhXHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4gcmVhZEJ5dGVzKHJlYWRlciwgbGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ09iQXInOiB7IC8vIE9iamVjdCBhcnJheVxyXG5cdFx0XHRyZWFkSW50MzIocmVhZGVyKTsgLy8gdmVyc2lvbjogMTZcclxuXHRcdFx0cmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTsgLy8gbmFtZTogJydcclxuXHRcdFx0cmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7IC8vICdyYXRpb25hbFBvaW50J1xyXG5cdFx0XHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgdHlwZTEgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTsgLy8gdHlwZSBIcnpuIHwgVnJ0Y1xyXG5cdFx0XHRcdHJlYWRTaWduYXR1cmUocmVhZGVyKTsgLy8gVW5GbFxyXG5cclxuXHRcdFx0XHRyZWFkU2lnbmF0dXJlKHJlYWRlcik7IC8vIHVuaXRzID8gJyNQeGwnXHJcblx0XHRcdFx0Y29uc3QgdmFsdWVzQ291bnQgPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XHJcblx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZXNDb3VudDsgaisrKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChyZWFkRmxvYXQ2NChyZWFkZXIpKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGl0ZW1zLnB1c2goeyB0eXBlOiB0eXBlMSwgdmFsdWVzIH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gaXRlbXM7XHJcblx0XHR9XHJcblx0XHRjYXNlICdQdGggJzogeyAvLyBGaWxlIHBhdGhcclxuXHRcdFx0Lypjb25zdCBsZW5ndGggPSovIHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBzaWcgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdC8qY29uc3QgcGF0aFNpemUgPSovIHJlYWRJbnQzMkxFKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGNoYXJzQ291bnQgPSByZWFkSW50MzJMRShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBwYXRoID0gcmVhZFVuaWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHJlYWRlciwgY2hhcnNDb3VudCk7XHJcblx0XHRcdHJldHVybiB7IHNpZywgcGF0aCB9O1xyXG5cdFx0fVxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFR5U2ggZGVzY3JpcHRvciBPU1R5cGU6ICR7dHlwZX0gYXQgJHtyZWFkZXIub2Zmc2V0LnRvU3RyaW5nKDE2KX1gKTtcclxuXHR9XHJcbn1cclxuXHJcbmNvbnN0IE9iQXJUeXBlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gPSB7XHJcblx0bWVzaFBvaW50czogJ3JhdGlvbmFsUG9pbnQnLFxyXG5cdHF1aWx0U2xpY2VYOiAnVW50RicsXHJcblx0cXVpbHRTbGljZVk6ICdVbnRGJyxcclxufTtcclxuXHJcbmZ1bmN0aW9uIHdyaXRlT1NUeXBlKHdyaXRlcjogUHNkV3JpdGVyLCB0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBleHRUeXBlOiBOYW1lQ2xhc3NJRCB8IHVuZGVmaW5lZCwgcm9vdDogc3RyaW5nKSB7XHJcblx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRjYXNlICdvYmogJzogLy8gUmVmZXJlbmNlXHJcblx0XHRcdHdyaXRlUmVmZXJlbmNlU3RydWN0dXJlKHdyaXRlciwga2V5LCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnT2JqYyc6IC8vIERlc2NyaXB0b3JcclxuXHRcdGNhc2UgJ0dsYk8nOiAvLyBHbG9iYWxPYmplY3Qgc2FtZSBhcyBEZXNjcmlwdG9yXHJcblx0XHRcdGlmICghZXh0VHlwZSkgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV4dCB0eXBlIGZvcjogJyR7a2V5fScgKCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSlgKTtcclxuXHRcdFx0d3JpdGVEZXNjcmlwdG9yU3RydWN0dXJlKHdyaXRlciwgZXh0VHlwZS5uYW1lLCBleHRUeXBlLmNsYXNzSUQsIHZhbHVlLCByb290KTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdWbExzJzogLy8gTGlzdFxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUubGVuZ3RoKTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCB0eXBlID0gZmllbGRUb0FycmF5VHlwZVtrZXldO1xyXG5cdFx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycpO1xyXG5cdFx0XHRcdHdyaXRlT1NUeXBlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycsIHZhbHVlW2ldLCAnJywgZmllbGRUb0FycmF5RXh0VHlwZVtrZXldLCByb290KTtcclxuXHRcdFx0XHRpZiAobG9nRXJyb3JzICYmICF0eXBlKSBjb25zb2xlLmxvZyhgTWlzc2luZyBkZXNjcmlwdG9yIGFycmF5IHR5cGUgZm9yOiAnJHtrZXl9JyBpbmAsIHZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ2RvdWInOiAvLyBEb3VibGVcclxuXHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1VudEYnOiAvLyBVbml0IGRvdWJsZVxyXG5cdFx0XHRpZiAoIXVuaXRzTWFwUmV2W3ZhbHVlLnVuaXRzXSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3ZhbHVlLnVuaXRzfSBpbiAke2tleX1gKTtcclxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB1bml0c01hcFJldlt2YWx1ZS51bml0c10pO1xyXG5cdFx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB2YWx1ZS52YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnVW5GbCc6IC8vIFVuaXQgZmxvYXRcclxuXHRcdFx0aWYgKCF1bml0c01hcFJldlt2YWx1ZS51bml0c10pIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt2YWx1ZS51bml0c30gaW4gJHtrZXl9YCk7XHJcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdW5pdHNNYXBSZXZbdmFsdWUudW5pdHNdKTtcclxuXHRcdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgdmFsdWUudmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1RFWFQnOiAvLyBTdHJpbmdcclxuXHRcdFx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnZW51bSc6IHsgLy8gRW51bWVyYXRlZFxyXG5cdFx0XHRjb25zdCBbX3R5cGUsIHZhbF0gPSB2YWx1ZS5zcGxpdCgnLicpO1xyXG5cdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgX3R5cGUpO1xyXG5cdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgdmFsKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHRjYXNlICdsb25nJzogLy8gSW50ZWdlclxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdC8vIGNhc2UgJ2NvbXAnOiAvLyBMYXJnZSBJbnRlZ2VyXHJcblx0XHQvLyBcdHdyaXRlTGFyZ2VJbnRlZ2VyKHJlYWRlcik7XHJcblx0XHRjYXNlICdib29sJzogLy8gQm9vbGVhblxyXG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdmFsdWUgPyAxIDogMCk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Ly8gY2FzZSAndHlwZSc6IC8vIENsYXNzXHJcblx0XHQvLyBjYXNlICdHbGJDJzogLy8gQ2xhc3NcclxuXHRcdC8vIFx0d3JpdGVDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Ly8gY2FzZSAnYWxpcyc6IC8vIEFsaWFzXHJcblx0XHQvLyBcdHdyaXRlQWxpYXNTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ3RkdGEnOiAvLyBSYXcgRGF0YVxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUuYnl0ZUxlbmd0aCk7XHJcblx0XHRcdHdyaXRlQnl0ZXMod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnT2JBcic6IHsgLy8gT2JqZWN0IGFycmF5XHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCAxNik7IC8vIHZlcnNpb25cclxuXHRcdFx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCAnJyk7IC8vIG5hbWVcclxuXHRcdFx0Y29uc3QgdHlwZSA9IE9iQXJUeXBlc1trZXldO1xyXG5cdFx0XHRpZiAoIXR5cGUpIHRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkIE9iQXJUeXBlIGZvcjogJHtrZXl9YCk7XHJcblx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCB0eXBlKTtcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmxlbmd0aCk7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHZhbHVlW2ldLnR5cGUpOyAvLyBIcnpuIHwgVnJ0Y1xyXG5cdFx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ1VuRmwnKTtcclxuXHRcdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICcjUHhsJyk7XHJcblx0XHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlW2ldLnZhbHVlcy5sZW5ndGgpO1xyXG5cclxuXHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IHZhbHVlW2ldLnZhbHVlcy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdmFsdWVbaV0udmFsdWVzW2pdKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHQvLyBjYXNlICdQdGggJzogLy8gRmlsZSBwYXRoXHJcblx0XHQvLyBcdHdyaXRlRmlsZVBhdGgocmVhZGVyKTtcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkIGRlc2NyaXB0b3IgT1NUeXBlOiAke3R5cGV9YCk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkUmVmZXJlbmNlU3RydWN0dXJlKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgaXRlbXNDb3VudCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zQ291bnQ7IGkrKykge1xyXG5cdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHJcblx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0Y2FzZSAncHJvcCc6IHsgLy8gUHJvcGVydHlcclxuXHRcdFx0XHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCBrZXlJRCA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2goa2V5SUQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhc2UgJ0Nsc3MnOiAvLyBDbGFzc1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdFbm1yJzogeyAvLyBFbnVtZXJhdGVkIFJlZmVyZW5jZVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHR5cGVJRCA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdFx0aXRlbXMucHVzaChgJHt0eXBlSUR9LiR7dmFsdWV9YCk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y2FzZSAncmVsZSc6IHsgLy8gT2Zmc2V0XHJcblx0XHRcdFx0Ly8gY29uc3QgeyBuYW1lLCBjbGFzc0lEIH0gPVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZFVpbnQzMihyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXNlICdJZG50JzogLy8gSWRlbnRpZmllclxyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZEludDMyKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdpbmR4JzogLy8gSW5kZXhcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRJbnQzMihyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnbmFtZSc6IHsgLy8gTmFtZVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciByZWZlcmVuY2UgdHlwZTogJHt0eXBlfWApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZVJlZmVyZW5jZVN0cnVjdHVyZSh3cml0ZXI6IFBzZFdyaXRlciwgX2tleTogc3RyaW5nLCBpdGVtczogYW55W10pIHtcclxuXHR3cml0ZUludDMyKHdyaXRlciwgaXRlbXMubGVuZ3RoKTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcclxuXHRcdGxldCB0eXBlID0gJ3Vua25vd24nO1xyXG5cclxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGlmICgvXlthLXpdK1xcLlthLXpdKyQvaS50ZXN0KHZhbHVlKSkge1xyXG5cdFx0XHRcdHR5cGUgPSAnRW5tcic7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dHlwZSA9ICduYW1lJztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdHlwZSk7XHJcblxyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdC8vIGNhc2UgJ3Byb3AnOiAvLyBQcm9wZXJ0eVxyXG5cdFx0XHQvLyBjYXNlICdDbHNzJzogLy8gQ2xhc3NcclxuXHRcdFx0Y2FzZSAnRW5tcic6IHsgLy8gRW51bWVyYXRlZCBSZWZlcmVuY2VcclxuXHRcdFx0XHRjb25zdCBbdHlwZUlELCBlbnVtVmFsdWVdID0gdmFsdWUuc3BsaXQoJy4nKTtcclxuXHRcdFx0XHR3cml0ZUNsYXNzU3RydWN0dXJlKHdyaXRlciwgJ1xcMCcsIHR5cGVJRCk7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHR5cGVJRCk7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIGVudW1WYWx1ZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY2FzZSAncmVsZSc6IC8vIE9mZnNldFxyXG5cdFx0XHQvLyBjYXNlICdJZG50JzogLy8gSWRlbnRpZmllclxyXG5cdFx0XHQvLyBjYXNlICdpbmR4JzogLy8gSW5kZXhcclxuXHRcdFx0Y2FzZSAnbmFtZSc6IHsgLy8gTmFtZVxyXG5cdFx0XHRcdHdyaXRlQ2xhc3NTdHJ1Y3R1cmUod3JpdGVyLCAnXFwwJywgJ0x5ciAnKTtcclxuXHRcdFx0XHR3cml0ZVVuaWNvZGVTdHJpbmcod3JpdGVyLCB2YWx1ZSArICdcXDAnKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXNjcmlwdG9yIHJlZmVyZW5jZSB0eXBlOiAke3R5cGV9YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gaXRlbXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IG5hbWUgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xyXG5cdGNvbnN0IGNsYXNzSUQgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHQvLyBjb25zb2xlLmxvZyh7IG5hbWUsIGNsYXNzSUQgfSk7XHJcblx0cmV0dXJuIHsgbmFtZSwgY2xhc3NJRCB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZUNsYXNzU3RydWN0dXJlKHdyaXRlcjogUHNkV3JpdGVyLCBuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZykge1xyXG5cdHdyaXRlVW5pY29kZVN0cmluZyh3cml0ZXIsIG5hbWUpO1xyXG5cdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBjbGFzc0lEKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IHZlcnNpb24gPSByZWFkVWludDMyKHJlYWRlcik7XHJcblx0aWYgKHZlcnNpb24gIT09IDE2KSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciB2ZXJzaW9uOiAke3ZlcnNpb259YCk7XHJcblx0Y29uc3QgZGVzYyA9IHJlYWREZXNjcmlwdG9yU3RydWN0dXJlKHJlYWRlcik7XHJcblx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0cmV0dXJuIGRlc2M7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlcjogUHNkV3JpdGVyLCBuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZywgZGVzY3JpcHRvcjogYW55LCByb290ID0gJycpIHtcclxuXHR3cml0ZVVpbnQzMih3cml0ZXIsIDE2KTsgLy8gdmVyc2lvblxyXG5cdHdyaXRlRGVzY3JpcHRvclN0cnVjdHVyZSh3cml0ZXIsIG5hbWUsIGNsYXNzSUQsIGRlc2NyaXB0b3IsIHJvb3QpO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVW5pdHMgPSAnQW5nbGUnIHwgJ0RlbnNpdHknIHwgJ0Rpc3RhbmNlJyB8ICdOb25lJyB8ICdQZXJjZW50JyB8ICdQaXhlbHMnIHxcclxuXHQnTWlsbGltZXRlcnMnIHwgJ1BvaW50cycgfCAnUGljYXMnIHwgJ0luY2hlcycgfCAnQ2VudGltZXRlcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0dW5pdHM6IERlc2NyaXB0b3JVbml0cztcclxuXHR2YWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yQ29sb3IgPSB7XHJcblx0J1JkICAnOiBudW1iZXI7XHJcblx0J0dybiAnOiBudW1iZXI7XHJcblx0J0JsICAnOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0J0ggICAnOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRTdHJ0OiBudW1iZXI7XHJcblx0QnJnaDogbnVtYmVyO1xyXG59IHwge1xyXG5cdCdDeW4gJzogbnVtYmVyO1xyXG5cdE1nbnQ6IG51bWJlcjtcclxuXHQnWWx3ICc6IG51bWJlcjtcclxuXHRCbGNrOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0J0dyeSAnOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0TG1uYzogbnVtYmVyO1xyXG5cdCdBICAgJzogbnVtYmVyO1xyXG5cdCdCICAgJzogbnVtYmVyO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjaXB0b3JQYXR0ZXJuIHtcclxuXHQnTm0gICc6IHN0cmluZztcclxuXHRJZG50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlc2NpcHRvckdyYWRpZW50ID0ge1xyXG5cdCdObSAgJzogc3RyaW5nO1xyXG5cdEdyZEY6ICdHcmRGLkNzdFMnO1xyXG5cdEludHI6IG51bWJlcjtcclxuXHRDbHJzOiB7XHJcblx0XHQnQ2xyICc6IERlc2NyaXB0b3JDb2xvcjtcclxuXHRcdFR5cGU6ICdDbHJ5LlVzclMnO1xyXG5cdFx0TGN0bjogbnVtYmVyO1xyXG5cdFx0TWRwbjogbnVtYmVyO1xyXG5cdH1bXTtcclxuXHRUcm5zOiB7XHJcblx0XHRPcGN0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdExjdG46IG51bWJlcjtcclxuXHRcdE1kcG46IG51bWJlcjtcclxuXHR9W107XHJcbn0gfCB7XHJcblx0R3JkRjogJ0dyZEYuQ2xOcyc7XHJcblx0U210aDogbnVtYmVyO1xyXG5cdCdObSAgJzogc3RyaW5nO1xyXG5cdENsclM6IHN0cmluZztcclxuXHRSbmRTOiBudW1iZXI7XHJcblx0VmN0Qz86IGJvb2xlYW47XHJcblx0U2hUcj86IGJvb2xlYW47XHJcblx0J01ubSAnOiBudW1iZXJbXTtcclxuXHQnTXhtICc6IG51bWJlcltdO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yQ29sb3JDb250ZW50IHtcclxuXHQnQ2xyICc6IERlc2NyaXB0b3JDb2xvcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50IHtcclxuXHRHcmFkOiBEZXNjaXB0b3JHcmFkaWVudDtcclxuXHRUeXBlOiBzdHJpbmc7XHJcblx0RHRocj86IGJvb2xlYW47XHJcblx0UnZycz86IGJvb2xlYW47XHJcblx0QW5nbD86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdCdTY2wgJz86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdEFsZ24/OiBib29sZWFuO1xyXG5cdE9mc3Q/OiB7IEhyem46IERlc2NyaXB0b3JVbml0c1ZhbHVlOyBWcnRjOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTsgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yUGF0dGVybkNvbnRlbnQge1xyXG5cdFB0cm46IERlc2NpcHRvclBhdHRlcm47XHJcblx0TG5rZD86IGJvb2xlYW47XHJcblx0cGhhc2U/OiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVmVjdG9yQ29udGVudCA9IERlc2NyaXB0b3JDb2xvckNvbnRlbnQgfCBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50IHwgRGVzY3JpcHRvclBhdHRlcm5Db250ZW50O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdHJva2VEZXNjcmlwdG9yIHtcclxuXHRzdHJva2VTdHlsZVZlcnNpb246IG51bWJlcjtcclxuXHRzdHJva2VFbmFibGVkOiBib29sZWFuO1xyXG5cdGZpbGxFbmFibGVkOiBib29sZWFuO1xyXG5cdHN0cm9rZVN0eWxlTGluZVdpZHRoOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZUxpbmVEYXNoT2Zmc2V0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZU1pdGVyTGltaXQ6IG51bWJlcjtcclxuXHRzdHJva2VTdHlsZUxpbmVDYXBUeXBlOiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVMaW5lSm9pblR5cGU6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQ6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZVNjYWxlTG9jazogYm9vbGVhbjtcclxuXHRzdHJva2VTdHlsZVN0cm9rZUFkanVzdDogYm9vbGVhbjtcclxuXHRzdHJva2VTdHlsZUxpbmVEYXNoU2V0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZVtdO1xyXG5cdHN0cm9rZVN0eWxlQmxlbmRNb2RlOiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVPcGFjaXR5OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZUNvbnRlbnQ6IERlc2NyaXB0b3JWZWN0b3JDb250ZW50O1xyXG5cdHN0cm9rZVN0eWxlUmVzb2x1dGlvbjogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRleHREZXNjcmlwdG9yIHtcclxuXHQnVHh0ICc6IHN0cmluZztcclxuXHR0ZXh0R3JpZGRpbmc6IHN0cmluZztcclxuXHRPcm50OiBzdHJpbmc7XHJcblx0QW50QTogc3RyaW5nO1xyXG5cdFRleHRJbmRleDogbnVtYmVyO1xyXG5cdEVuZ2luZURhdGE/OiBVaW50OEFycmF5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdhcnBEZXNjcmlwdG9yIHtcclxuXHR3YXJwU3R5bGU6IHN0cmluZztcclxuXHR3YXJwVmFsdWU6IG51bWJlcjtcclxuXHR3YXJwUGVyc3BlY3RpdmU6IG51bWJlcjtcclxuXHR3YXJwUGVyc3BlY3RpdmVPdGhlcjogbnVtYmVyO1xyXG5cdHdhcnBSb3RhdGU6IHN0cmluZztcclxuXHRib3VuZHM/OiB7XHJcblx0XHQnVG9wICc6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0TGVmdDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRCdG9tOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdFJnaHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdH07XHJcblx0dU9yZGVyOiBudW1iZXI7XHJcblx0dk9yZGVyOiBudW1iZXI7XHJcblx0Y3VzdG9tRW52ZWxvcGVXYXJwPzoge1xyXG5cdFx0bWVzaFBvaW50czoge1xyXG5cdFx0XHR0eXBlOiAnSHJ6bicgfCAnVnJ0Yyc7XHJcblx0XHRcdHZhbHVlczogbnVtYmVyW107XHJcblx0XHR9W107XHJcblx0fTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWlsdFdhcnBEZXNjcmlwdG9yIGV4dGVuZHMgV2FycERlc2NyaXB0b3Ige1xyXG5cdGRlZm9ybU51bVJvd3M6IG51bWJlcjtcclxuXHRkZWZvcm1OdW1Db2xzOiBudW1iZXI7XHJcblx0Y3VzdG9tRW52ZWxvcGVXYXJwOiB7XHJcblx0XHRxdWlsdFNsaWNlWDoge1xyXG5cdFx0XHR0eXBlOiAncXVpbHRTbGljZVgnO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdFx0cXVpbHRTbGljZVk6IHtcclxuXHRcdFx0dHlwZTogJ3F1aWx0U2xpY2VZJztcclxuXHRcdFx0dmFsdWVzOiBudW1iZXJbXTtcclxuXHRcdH1bXTtcclxuXHRcdG1lc2hQb2ludHM6IHtcclxuXHRcdFx0dHlwZTogJ0hyem4nIHwgJ1ZydGMnO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFuZ2xlKHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XHJcblx0aWYgKHgudW5pdHMgIT09ICdBbmdsZScpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt4LnVuaXRzfWApO1xyXG5cdHJldHVybiB4LnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQZXJjZW50KHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgdW5kZWZpbmVkKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XHJcblx0aWYgKHgudW5pdHMgIT09ICdQZXJjZW50JykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3gudW5pdHN9YCk7XHJcblx0cmV0dXJuIHgudmFsdWUgLyAxMDA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBlcmNlbnRPckFuZ2xlKHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgdW5kZWZpbmVkKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XHJcblx0aWYgKHgudW5pdHMgPT09ICdQZXJjZW50JykgcmV0dXJuIHgudmFsdWUgLyAxMDA7XHJcblx0aWYgKHgudW5pdHMgPT09ICdBbmdsZScpIHJldHVybiB4LnZhbHVlIC8gMzYwO1xyXG5cdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt4LnVuaXRzfWApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbml0cyh7IHVuaXRzLCB2YWx1ZSB9OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSk6IFVuaXRzVmFsdWUge1xyXG5cdGlmIChcclxuXHRcdHVuaXRzICE9PSAnUGl4ZWxzJyAmJiB1bml0cyAhPT0gJ01pbGxpbWV0ZXJzJyAmJiB1bml0cyAhPT0gJ1BvaW50cycgJiYgdW5pdHMgIT09ICdOb25lJyAmJlxyXG5cdFx0dW5pdHMgIT09ICdQaWNhcycgJiYgdW5pdHMgIT09ICdJbmNoZXMnICYmIHVuaXRzICE9PSAnQ2VudGltZXRlcnMnICYmIHVuaXRzICE9PSAnRGVuc2l0eSdcclxuXHQpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHtKU09OLnN0cmluZ2lmeSh7IHVuaXRzLCB2YWx1ZSB9KX1gKTtcclxuXHR9XHJcblx0cmV0dXJuIHsgdmFsdWUsIHVuaXRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaXRzT3JOdW1iZXIodmFsdWU6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgbnVtYmVyLCB1bml0czogVW5pdHMgPSAnUGl4ZWxzJyk6IFVuaXRzVmFsdWUge1xyXG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4geyB2YWx1ZSwgdW5pdHMgfTtcclxuXHRyZXR1cm4gcGFyc2VVbml0cyh2YWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaXRzVG9OdW1iZXIoeyB1bml0cywgdmFsdWUgfTogRGVzY3JpcHRvclVuaXRzVmFsdWUsIGV4cGVjdGVkVW5pdHM6IHN0cmluZyk6IG51bWJlciB7XHJcblx0aWYgKHVuaXRzICE9PSBleHBlY3RlZFVuaXRzKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7SlNPTi5zdHJpbmdpZnkoeyB1bml0cywgdmFsdWUgfSl9YCk7XHJcblx0cmV0dXJuIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNBbmdsZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogRGVzY3JpcHRvclVuaXRzVmFsdWUge1xyXG5cdHJldHVybiB7IHVuaXRzOiAnQW5nbGUnLCB2YWx1ZTogdmFsdWUgfHwgMCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNQZXJjZW50KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0cmV0dXJuIHsgdW5pdHM6ICdQZXJjZW50JywgdmFsdWU6IE1hdGgucm91bmQoKHZhbHVlIHx8IDApICogMTAwKSB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNWYWx1ZSh4OiBVbml0c1ZhbHVlIHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZyk6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHtcclxuXHRpZiAoeCA9PSBudWxsKSByZXR1cm4geyB1bml0czogJ1BpeGVscycsIHZhbHVlOiAwIH07XHJcblxyXG5cdGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpXHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSkgKHNob3VsZCBoYXZlIHZhbHVlIGFuZCB1bml0cylgKTtcclxuXHJcblx0Y29uc3QgeyB1bml0cywgdmFsdWUgfSA9IHg7XHJcblxyXG5cdGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKVxyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlIGluICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSlgKTtcclxuXHJcblx0aWYgKFxyXG5cdFx0dW5pdHMgIT09ICdQaXhlbHMnICYmIHVuaXRzICE9PSAnTWlsbGltZXRlcnMnICYmIHVuaXRzICE9PSAnUG9pbnRzJyAmJiB1bml0cyAhPT0gJ05vbmUnICYmXHJcblx0XHR1bml0cyAhPT0gJ1BpY2FzJyAmJiB1bml0cyAhPT0gJ0luY2hlcycgJiYgdW5pdHMgIT09ICdDZW50aW1ldGVycycgJiYgdW5pdHMgIT09ICdEZW5zaXR5J1xyXG5cdCkge1xyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzIGluICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSlgKTtcclxuXHR9XHJcblxyXG5cdHJldHVybiB7IHVuaXRzLCB2YWx1ZSB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdGV4dEdyaWRkaW5nID0gY3JlYXRlRW51bTxUZXh0R3JpZGRpbmc+KCd0ZXh0R3JpZGRpbmcnLCAnbm9uZScsIHtcclxuXHRub25lOiAnTm9uZScsXHJcblx0cm91bmQ6ICdSbmQgJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgT3JudCA9IGNyZWF0ZUVudW08T3JpZW50YXRpb24+KCdPcm50JywgJ2hvcml6b250YWwnLCB7XHJcblx0aG9yaXpvbnRhbDogJ0hyem4nLFxyXG5cdHZlcnRpY2FsOiAnVnJ0YycsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFubnQgPSBjcmVhdGVFbnVtPEFudGlBbGlhcz4oJ0FubnQnLCAnc2hhcnAnLCB7XHJcblx0bm9uZTogJ0Fubm8nLFxyXG5cdHNoYXJwOiAnYW50aUFsaWFzU2hhcnAnLFxyXG5cdGNyaXNwOiAnQW5DcicsXHJcblx0c3Ryb25nOiAnQW5TdCcsXHJcblx0c21vb3RoOiAnQW5TbScsXHJcblx0cGxhdGZvcm06ICdhbnRpQWxpYXNQbGF0Zm9ybUdyYXknLFxyXG5cdHBsYXRmb3JtTENEOiAnYW50aUFsaWFzUGxhdGZvcm1MQ0QnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCB3YXJwU3R5bGUgPSBjcmVhdGVFbnVtPFdhcnBTdHlsZT4oJ3dhcnBTdHlsZScsICdub25lJywge1xyXG5cdG5vbmU6ICd3YXJwTm9uZScsXHJcblx0YXJjOiAnd2FycEFyYycsXHJcblx0YXJjTG93ZXI6ICd3YXJwQXJjTG93ZXInLFxyXG5cdGFyY1VwcGVyOiAnd2FycEFyY1VwcGVyJyxcclxuXHRhcmNoOiAnd2FycEFyY2gnLFxyXG5cdGJ1bGdlOiAnd2FycEJ1bGdlJyxcclxuXHRzaGVsbExvd2VyOiAnd2FycFNoZWxsTG93ZXInLFxyXG5cdHNoZWxsVXBwZXI6ICd3YXJwU2hlbGxVcHBlcicsXHJcblx0ZmxhZzogJ3dhcnBGbGFnJyxcclxuXHR3YXZlOiAnd2FycFdhdmUnLFxyXG5cdGZpc2g6ICd3YXJwRmlzaCcsXHJcblx0cmlzZTogJ3dhcnBSaXNlJyxcclxuXHRmaXNoZXllOiAnd2FycEZpc2hleWUnLFxyXG5cdGluZmxhdGU6ICd3YXJwSW5mbGF0ZScsXHJcblx0c3F1ZWV6ZTogJ3dhcnBTcXVlZXplJyxcclxuXHR0d2lzdDogJ3dhcnBUd2lzdCcsXHJcblx0Y3VzdG9tOiAnd2FycEN1c3RvbScsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJsbk0gPSBjcmVhdGVFbnVtPEJsZW5kTW9kZT4oJ0Jsbk0nLCAnbm9ybWFsJywge1xyXG5cdCdub3JtYWwnOiAnTnJtbCcsXHJcblx0J2Rpc3NvbHZlJzogJ0RzbHYnLFxyXG5cdCdkYXJrZW4nOiAnRHJrbicsXHJcblx0J211bHRpcGx5JzogJ01sdHAnLFxyXG5cdCdjb2xvciBidXJuJzogJ0NCcm4nLFxyXG5cdCdsaW5lYXIgYnVybic6ICdsaW5lYXJCdXJuJyxcclxuXHQnZGFya2VyIGNvbG9yJzogJ2RhcmtlckNvbG9yJyxcclxuXHQnbGlnaHRlbic6ICdMZ2huJyxcclxuXHQnc2NyZWVuJzogJ1Njcm4nLFxyXG5cdCdjb2xvciBkb2RnZSc6ICdDRGRnJyxcclxuXHQnbGluZWFyIGRvZGdlJzogJ2xpbmVhckRvZGdlJyxcclxuXHQnbGlnaHRlciBjb2xvcic6ICdsaWdodGVyQ29sb3InLFxyXG5cdCdvdmVybGF5JzogJ092cmwnLFxyXG5cdCdzb2Z0IGxpZ2h0JzogJ1NmdEwnLFxyXG5cdCdoYXJkIGxpZ2h0JzogJ0hyZEwnLFxyXG5cdCd2aXZpZCBsaWdodCc6ICd2aXZpZExpZ2h0JyxcclxuXHQnbGluZWFyIGxpZ2h0JzogJ2xpbmVhckxpZ2h0JyxcclxuXHQncGluIGxpZ2h0JzogJ3BpbkxpZ2h0JyxcclxuXHQnaGFyZCBtaXgnOiAnaGFyZE1peCcsXHJcblx0J2RpZmZlcmVuY2UnOiAnRGZybicsXHJcblx0J2V4Y2x1c2lvbic6ICdYY2x1JyxcclxuXHQnc3VidHJhY3QnOiAnYmxlbmRTdWJ0cmFjdGlvbicsXHJcblx0J2RpdmlkZSc6ICdibGVuZERpdmlkZScsXHJcblx0J2h1ZSc6ICdIICAgJyxcclxuXHQnc2F0dXJhdGlvbic6ICdTdHJ0JyxcclxuXHQnY29sb3InOiAnQ2xyICcsXHJcblx0J2x1bWlub3NpdHknOiAnTG1ucycsXHJcblx0Ly8gdXNlZCBpbiBBQlJcclxuXHQnbGluZWFyIGhlaWdodCc6ICdsaW5lYXJIZWlnaHQnLFxyXG5cdCdoZWlnaHQnOiAnSGdodCcsXHJcblx0J3N1YnRyYWN0aW9uJzogJ1NidHInLCAvLyAybmQgdmVyc2lvbiBvZiBzdWJ0cmFjdCA/XHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFU2wgPSBjcmVhdGVFbnVtPEJldmVsU3R5bGU+KCdCRVNsJywgJ2lubmVyIGJldmVsJywge1xyXG5cdCdpbm5lciBiZXZlbCc6ICdJbnJCJyxcclxuXHQnb3V0ZXIgYmV2ZWwnOiAnT3RyQicsXHJcblx0J2VtYm9zcyc6ICdFbWJzJyxcclxuXHQncGlsbG93IGVtYm9zcyc6ICdQbEViJyxcclxuXHQnc3Ryb2tlIGVtYm9zcyc6ICdzdHJva2VFbWJvc3MnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBidmxUID0gY3JlYXRlRW51bTxCZXZlbFRlY2huaXF1ZT4oJ2J2bFQnLCAnc21vb3RoJywge1xyXG5cdCdzbW9vdGgnOiAnU2ZCTCcsXHJcblx0J2NoaXNlbCBoYXJkJzogJ1ByQkwnLFxyXG5cdCdjaGlzZWwgc29mdCc6ICdTbG10JyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQkVTcyA9IGNyZWF0ZUVudW08QmV2ZWxEaXJlY3Rpb24+KCdCRVNzJywgJ3VwJywge1xyXG5cdHVwOiAnSW4gICcsXHJcblx0ZG93bjogJ091dCAnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBCRVRFID0gY3JlYXRlRW51bTxHbG93VGVjaG5pcXVlPignQkVURScsICdzb2Z0ZXInLCB7XHJcblx0c29mdGVyOiAnU2ZCTCcsXHJcblx0cHJlY2lzZTogJ1ByQkwnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBJR1NyID0gY3JlYXRlRW51bTxHbG93U291cmNlPignSUdTcicsICdlZGdlJywge1xyXG5cdGVkZ2U6ICdTcmNFJyxcclxuXHRjZW50ZXI6ICdTcmNDJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgR3JkVCA9IGNyZWF0ZUVudW08R3JhZGllbnRTdHlsZT4oJ0dyZFQnLCAnbGluZWFyJywge1xyXG5cdGxpbmVhcjogJ0xuciAnLFxyXG5cdHJhZGlhbDogJ1JkbCAnLFxyXG5cdGFuZ2xlOiAnQW5nbCcsXHJcblx0cmVmbGVjdGVkOiAnUmZsYycsXHJcblx0ZGlhbW9uZDogJ0RtbmQnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbHJTID0gY3JlYXRlRW51bTwncmdiJyB8ICdoc2InIHwgJ2xhYic+KCdDbHJTJywgJ3JnYicsIHtcclxuXHRyZ2I6ICdSR0JDJyxcclxuXHRoc2I6ICdIU0JsJyxcclxuXHRsYWI6ICdMYkNsJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRlN0bCA9IGNyZWF0ZUVudW08J2luc2lkZScgfCAnY2VudGVyJyB8ICdvdXRzaWRlJz4oJ0ZTdGwnLCAnb3V0c2lkZScsIHtcclxuXHRvdXRzaWRlOiAnT3V0RicsXHJcblx0Y2VudGVyOiAnQ3RyRicsXHJcblx0aW5zaWRlOiAnSW5zRidcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRnJGbCA9IGNyZWF0ZUVudW08J2NvbG9yJyB8ICdncmFkaWVudCcgfCAncGF0dGVybic+KCdGckZsJywgJ2NvbG9yJywge1xyXG5cdGNvbG9yOiAnU0NscicsXHJcblx0Z3JhZGllbnQ6ICdHckZsJyxcclxuXHRwYXR0ZXJuOiAnUHRybicsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlTGluZUNhcFR5cGUgPSBjcmVhdGVFbnVtPExpbmVDYXBUeXBlPignc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZScsICdidXR0Jywge1xyXG5cdGJ1dHQ6ICdzdHJva2VTdHlsZUJ1dHRDYXAnLFxyXG5cdHJvdW5kOiAnc3Ryb2tlU3R5bGVSb3VuZENhcCcsXHJcblx0c3F1YXJlOiAnc3Ryb2tlU3R5bGVTcXVhcmVDYXAnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVKb2luVHlwZSA9IGNyZWF0ZUVudW08TGluZUpvaW5UeXBlPignc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUnLCAnbWl0ZXInLCB7XHJcblx0bWl0ZXI6ICdzdHJva2VTdHlsZU1pdGVySm9pbicsXHJcblx0cm91bmQ6ICdzdHJva2VTdHlsZVJvdW5kSm9pbicsXHJcblx0YmV2ZWw6ICdzdHJva2VTdHlsZUJldmVsSm9pbicsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlTGluZUFsaWdubWVudCA9IGNyZWF0ZUVudW08TGluZUFsaWdubWVudD4oJ3N0cm9rZVN0eWxlTGluZUFsaWdubWVudCcsICdpbnNpZGUnLCB7XHJcblx0aW5zaWRlOiAnc3Ryb2tlU3R5bGVBbGlnbkluc2lkZScsXHJcblx0Y2VudGVyOiAnc3Ryb2tlU3R5bGVBbGlnbkNlbnRlcicsXHJcblx0b3V0c2lkZTogJ3N0cm9rZVN0eWxlQWxpZ25PdXRzaWRlJyxcclxufSk7XHJcbiJdLCJzb3VyY2VSb290IjoiQzpcXFByb2plY3RzXFxnaXRodWJcXGFnLXBzZFxcc3JjIn0=
773
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU12QyxPQUFPLEVBQ0ssYUFBYSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUMvRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUM1RixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0ssY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFDNUUsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFDM0UsTUFBTSxhQUFhLENBQUM7QUFNckIsU0FBUyxNQUFNLENBQUMsR0FBUztJQUN4QixJQUFNLE1BQU0sR0FBUyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUF0QixDQUFzQixDQUFDLENBQUM7SUFDeEQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBTSxRQUFRLEdBQVM7SUFDdEIsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLGFBQWE7Q0FDckIsQ0FBQztBQUVGLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFFdEIsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFjO0lBQzFDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQVksRUFBRSxPQUFlO0lBQzlDLE9BQU8sRUFBRSxJQUFJLE1BQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFFRCxJQUFNLGNBQWMsR0FBZ0I7SUFDbkMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQztJQUNuRCw4REFBOEQ7SUFDOUQsZUFBZSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO0lBQ3RELFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDNUIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ2pDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDM0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQy9CLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUM5QixNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDNUIsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQztJQUN0RCxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzVCLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUM1QixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUN0QyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQy9CLG9DQUFvQyxFQUFFLFFBQVEsQ0FBQyxFQUFF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QUFJLEdBQUcsS0FBSyxNQUFNLEVBQUU7UUFDbkIsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzNFO1NBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQzFCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNuRDtTQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sRUFBRTtRQUMxQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDbkQ7U0FBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQ3BILE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztLQUNuRDtTQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sRUFBRTtRQUMxQixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDbkQ7U0FBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQzlELE9BQU8sSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7S0FDekM7U0FBTSxJQUFJLEdBQUcsS0FBSyxNQUFN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LHNCQUFzQixHQUFHLFVBQVUsQ0FBYyx3QkFBd0IsRUFBRSxNQUFNLEVBQUU7SUFDL0YsSUFBSSxFQUFFLG9CQUFvQjtJQUMxQixLQUFLLEVBQUUscUJBQXFCO0lBQzVCLE1BQU0sRUFBRSxzQkFBc0I7Q0FDOUIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLElBQU0sdUJBQXVCLEdBQUcsVUFBVSxDQUFlLHlCQUF5QixFQUFFLE9BQU8sRUFBRTtJQUNuRyxLQUFLLEVBQUUsc0JBQXNCO0lBQzdCLEtBQUssRUFBRSxzQkFBc0I7SUFDN0IsS0FBSyxFQUFFLHNCQUFzQjtDQUM3QixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsSUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQWdCLDBCQUEwQixFQUFFLFFBQVEsRUFBRTtJQUN2RyxNQUFNLEVBQUUsd0JBQXdCO0lBQ2hDLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsT0FBTyxFQUFFLHlCQUF5QjtDQUNsQyxDQUFDLENBQUMiLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVudW0gfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQge1xyXG5cdEFudGlBbGlhcywgQmV2ZWxEaXJlY3Rpb24sIEJldmVsU3R5bGUsIEJldmVsVGVjaG5pcXVlLCBCbGVuZE1vZGUsIEdsb3dTb3VyY2UsIEdsb3dUZWNobmlxdWUsIEdyYWRpZW50U3R5bGUsXHJcblx0SW50ZXJwb2xhdGlvbk1ldGhvZCwgTGluZUFsaWdubWVudCwgTGluZUNhcFR5cGUsIExpbmVKb2luVHlwZSwgT3JpZW50YXRpb24sIFRleHRHcmlkZGluZywgVW5pdHMsIFVuaXRzVmFsdWUsXHJcblx0V2FycFN0eWxlXHJcbn0gZnJvbSAnLi9wc2QnO1xyXG5pbXBvcnQge1xyXG5cdFBzZFJlYWRlciwgcmVhZFNpZ25hdHVyZSwgcmVhZFVuaWNvZGVTdHJpbmcsIHJlYWRVaW50MzIsIHJlYWRVaW50OCwgcmVhZEZsb2F0NjQsXHJcblx0cmVhZEJ5dGVzLCByZWFkQXNjaWlTdHJpbmcsIHJlYWRJbnQzMiwgcmVhZEZsb2F0MzIsIHJlYWRJbnQzMkxFLCByZWFkVW5pY29kZVN0cmluZ1dpdGhMZW5ndGhcclxufSBmcm9tICcuL3BzZFJlYWRlcic7XHJcbmltcG9ydCB7XHJcblx0UHNkV3JpdGVyLCB3cml0ZVNpZ25hdHVyZSwgd3JpdGVCeXRlcywgd3JpdGVVaW50MzIsIHdyaXRlRmxvYXQ2NCwgd3JpdGVVaW50OCxcclxuXHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZywgd3JpdGVJbnQzMiwgd3JpdGVGbG9hdDMyLCB3cml0ZVVuaWNvZGVTdHJpbmdcclxufSBmcm9tICcuL3BzZFdyaXRlcic7XHJcblxyXG5pbnRlcmZhY2UgRGljdCB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfVxyXG5pbnRlcmZhY2UgTmFtZUNsYXNzSUQgeyBuYW1lOiBzdHJpbmc7IGNsYXNzSUQ6IHN0cmluZzsgfVxyXG5pbnRlcmZhY2UgRXh0VHlwZURpY3QgeyBba2V5OiBzdHJpbmddOiBOYW1lQ2xhc3NJRDsgfVxyXG5cclxuZnVuY3Rpb24gcmV2TWFwKG1hcDogRGljdCkge1xyXG5cdGNvbnN0IHJlc3VsdDogRGljdCA9IHt9O1xyXG5cdE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChrZXkgPT4gcmVzdWx0W21hcFtrZXldXSA9IGtleSk7XHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuY29uc3QgdW5pdHNNYXA6IERpY3QgPSB7XHJcblx0JyNBbmcnOiAnQW5nbGUnLFxyXG5cdCcjUnNsJzogJ0RlbnNpdHknLFxyXG5cdCcjUmx0JzogJ0Rpc3RhbmNlJyxcclxuXHQnI05uZSc6ICdOb25lJyxcclxuXHQnI1ByYyc6ICdQZXJjZW50JyxcclxuXHQnI1B4bCc6ICdQaXhlbHMnLFxyXG5cdCcjTWxtJzogJ01pbGxpbWV0ZXJzJyxcclxuXHQnI1BudCc6ICdQb2ludHMnLFxyXG5cdCdSclBpJzogJ1BpY2FzJyxcclxuXHQnUnJJbic6ICdJbmNoZXMnLFxyXG5cdCdSckNtJzogJ0NlbnRpbWV0ZXJzJyxcclxufTtcclxuXHJcbmNvbnN0IHVuaXRzTWFwUmV2ID0gcmV2TWFwKHVuaXRzTWFwKTtcclxubGV0IGxvZ0Vycm9ycyA9IGZhbHNlO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldExvZ0Vycm9ycyh2YWx1ZTogYm9vbGVhbikge1xyXG5cdGxvZ0Vycm9ycyA9IHZhbHVlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlVHlwZShuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZykge1xyXG5cdHJldHVybiB7IG5hbWUsIGNsYXNzSUQgfTtcclxufVxyXG5cclxuY29uc3QgZmllbGRUb0V4dFR5cGU6IEV4dFR5cGVEaWN0ID0ge1xyXG5cdHN0cm9rZVN0eWxlQ29udGVudDogbWFrZVR5cGUoJycsICdzb2xpZENvbG9yTGF5ZXInKSxcclxuXHQvLyBwcmludFByb29mU2V0dXA6IG1ha2VUeXBlKCfmoKHmoLforr7nva4nLCAncHJvb2ZTZXR1cCcpLCAvLyBURVNUSU5HXHJcblx0cHJpbnRQcm9vZlNldHVwOiBtYWtlVHlwZSgnUHJvb2YgU2V0dXAnLCAncHJvb2ZTZXR1cCcpLFxyXG5cdHBhdHRlcm5GaWxsOiBtYWtlVHlwZSgnJywgJ3BhdHRlcm5GaWxsJyksXHJcblx0R3JhZDogbWFrZVR5cGUoJ0dyYWRpZW50JywgJ0dyZG4nKSxcclxuXHRlYmJsOiBtYWtlVHlwZSgnJywgJ2ViYmwnKSxcclxuXHRTb0ZpOiBtYWtlVHlwZSgnJywgJ1NvRmknKSxcclxuXHRHckZsOiBtYWtlVHlwZSgnJywgJ0dyRmwnKSxcclxuXHRzZHdDOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRoZ2xDOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHQnQ2xyICc6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdCd0aW50Q29sb3InOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRPZnN0OiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRDaEZYOiBtYWtlVHlwZSgnJywgJ0NoRlgnKSxcclxuXHRNcGdTOiBtYWtlVHlwZSgnJywgJ1NocEMnKSxcclxuXHREclNoOiBtYWtlVHlwZSgnJywgJ0RyU2gnKSxcclxuXHRJclNoOiBtYWtlVHlwZSgnJywgJ0lyU2gnKSxcclxuXHRPckdsOiBtYWtlVHlwZSgnJywgJ09yR2wnKSxcclxuXHRJckdsOiBtYWtlVHlwZSgnJywgJ0lyR2wnKSxcclxuXHRUcm5TOiBtYWtlVHlwZSgnJywgJ1NocEMnKSxcclxuXHRQdHJuOiBtYWtlVHlwZSgnJywgJ1B0cm4nKSxcclxuXHRGckZYOiBtYWtlVHlwZSgnJywgJ0ZyRlgnKSxcclxuXHRwaGFzZTogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0ZnJhbWVTdGVwOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRkdXJhdGlvbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0Ym91bmRzOiBtYWtlVHlwZSgnJywgJ1JjdG4nKSxcclxuXHRjdXN0b21FbnZlbG9wZVdhcnA6IG1ha2VUeXBlKCcnLCAnY3VzdG9tRW52ZWxvcGVXYXJwJyksXHJcblx0d2FycDogbWFrZVR5cGUoJycsICd3YXJwJyksXHJcblx0J1N6ICAnOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRvcmlnaW46IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdGF1dG9FeHBhbmRPZmZzZXQ6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdGtleU9yaWdpblNoYXBlQkJveDogbWFrZVR5cGUoJycsICd1bml0UmVjdCcpLFxyXG5cdFZyc246IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdHBzVmVyc2lvbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZENvbG9yOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRhcnRib2FyZFJlY3Q6IG1ha2VUeXBlKCcnLCAnY2xhc3NGbG9hdFJlY3QnKSxcclxuXHRrZXlPcmlnaW5SUmVjdFJhZGlpOiBtYWtlVHlwZSgnJywgJ3JhZGlpJyksXHJcblx0a2V5T3JpZ2luQm94Q29ybmVyczogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQTogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQjogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQzogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyRDogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0Y29tcEluZm86IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdFRybmY6IG1ha2VUeXBlKCdUcmFuc2Zvcm0nLCAnVHJuZicpLFxyXG5cdHF1aWx0V2FycDogbWFrZVR5cGUoJycsICdxdWlsdFdhcnAnKSxcclxuXHRnZW5lcmF0b3JTZXR0aW5nczogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0Y3JlbWE6IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG59O1xyXG5cclxuY29uc3QgZmllbGRUb0FycmF5RXh0VHlwZTogRXh0VHlwZURpY3QgPSB7XHJcblx0J0NydiAnOiBtYWtlVHlwZSgnJywgJ0NyUHQnKSxcclxuXHRDbHJzOiBtYWtlVHlwZSgnJywgJ0NscnQnKSxcclxuXHRUcm5zOiBtYWtlVHlwZSgnJywgJ1RyblMnKSxcclxuXHRrZXlEZXNjcmlwdG9yTGlzdDogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0c29saWRGaWxsTXVsdGk6IG1ha2VUeXBlKCcnLCAnU29GaScpLFxyXG5cdGdyYWRpZW50RmlsbE11bHRpOiBtYWtlVHlwZSgnJywgJ0dyRmwnKSxcclxuXHRkcm9wU2hhZG93TXVsdGk6IG1ha2VUeXBlKCcnLCAnRHJTaCcpLFxyXG5cdGlubmVyU2hhZG93TXVsdGk6IG1ha2VUeXBlKCcnLCAnSXJTaCcpLFxyXG5cdGZyYW1lRlhNdWx0aTogbWFrZVR5cGUoJycsICdGckZYJyksXHJcbn07XHJcblxyXG5jb25zdCB0eXBlVG9GaWVsZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTsgfSA9IHtcclxuXHQnVEVYVCc6IFtcclxuXHRcdCdUeHQgJywgJ3ByaW50ZXJOYW1lJywgJ05tICAnLCAnSWRudCcsICdibGFja0FuZFdoaXRlUHJlc2V0RmlsZU5hbWUnLCAnTFVUM0RGaWxlTmFtZScsXHJcblx0XHQncHJlc2V0RmlsZU5hbWUnLCAnY3VydmVzUHJlc2V0RmlsZU5hbWUnLCAnbWl4ZXJQcmVzZXRGaWxlTmFtZScsICdwbGFjZWQnLCAnZGVzY3JpcHRpb24nLCAncmVhc29uJyxcclxuXHRcdCdhcnRib2FyZFByZXNldE5hbWUnLCAnanNvbicsXHJcblx0XSxcclxuXHQndGR0YSc6IFsnRW5naW5lRGF0YScsICdMVVQzREZpbGVEYXRhJ10sXHJcblx0J2xvbmcnOiBbXHJcblx0XHQnVGV4dEluZGV4JywgJ1JuZFMnLCAnTWRwbicsICdTbXRoJywgJ0xjdG4nLCAnc3Ryb2tlU3R5bGVWZXJzaW9uJywgJ0xhSUQnLCAnVnJzbicsICdDbnQgJyxcclxuXHRcdCdCcmdoJywgJ0NudHInLCAnbWVhbnMnLCAndmlicmFuY2UnLCAnU3RydCcsICdid1ByZXNldEtpbmQnLCAncHJlc2V0S2luZCcsICdjb21wJywgJ2NvbXBJRCcsICdvcmlnaW5hbENvbXBJRCcsXHJcblx0XHQnY3VydmVzUHJlc2V0S2luZCcsICdtaXhlclByZXNldEtpbmQnLCAndU9yZGVyJywgJ3ZPcmRlcicsICdQZ05tJywgJ3RvdGFsUGFnZXMnLCAnQ3JvcCcsXHJcblx0XHQnbnVtZXJhdG9yJywgJ2Rlbm9taW5hdG9yJywgJ2ZyYW1lQ291bnQnLCAnQW5udCcsICdrZXlPcmlnaW5UeXBlJywgJ3VuaXRWYWx1ZVF1YWRWZXJzaW9uJyxcclxuXHRcdCdrZXlPcmlnaW5JbmRleCcsICdtYWpvcicsICdtaW5vcicsICdmaXgnLCAnZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGUnLCAnYXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZScsXHJcblx0XHQnbnVtTW9kaWZ5aW5nRlgnLCAnZGVmb3JtTnVtUm93cycsICdkZWZvcm1OdW1Db2xzJyxcclxuXHRdLFxyXG5cdCdlbnVtJzogW1xyXG5cdFx0J3RleHRHcmlkZGluZycsICdPcm50JywgJ3dhcnBTdHlsZScsICd3YXJwUm90YXRlJywgJ0ludGUnLCAnQmx0bicsICdDbHJTJyxcclxuXHRcdCdzZHdNJywgJ2hnbE0nLCAnYnZsVCcsICdidmxTJywgJ2J2bEQnLCAnTWQgICcsICdnbHdTJywgJ0dyZEYnLCAnR2x3VCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZScsICdzdHJva2VTdHlsZUxpbmVKb2luVHlwZScsICdzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQnLFxyXG5cdFx0J3N0cm9rZVN0eWxlQmxlbmRNb2RlJywgJ1BudFQnLCAnU3R5bCcsICdsb29rdXBUeXBlJywgJ0xVVEZvcm1hdCcsICdkYXRhT3JkZXInLFxyXG5cdFx0J3RhYmxlT3JkZXInLCAnZW5hYmxlQ29tcENvcmUnLCAnZW5hYmxlQ29tcENvcmVHUFUnLCAnY29tcENvcmVTdXBwb3J0JywgJ2NvbXBDb3JlR1BVU3VwcG9ydCcsICdFbmduJyxcclxuXHRcdCdlbmFibGVDb21wQ29yZVRocmVhZHMnLCAnZ3M5OScsXHJcblx0XSxcclxuXHQnYm9vbCc6IFtcclxuXHRcdCdQc3RTJywgJ3ByaW50U2l4dGVlbkJpdCcsICdtYXN0ZXJGWFN3aXRjaCcsICdlbmFiJywgJ3VnbGcnLCAnYW50aWFsaWFzR2xvc3MnLFxyXG5cdFx0J3VzZVNoYXBlJywgJ3VzZVRleHR1cmUnLCAnbWFzdGVyRlhTd2l0Y2gnLCAndWdsZycsICdhbnRpYWxpYXNHbG9zcycsICd1c2VTaGFwZScsXHJcblx0XHQndXNlVGV4dHVyZScsICdBbGduJywgJ1J2cnMnLCAnRHRocicsICdJbnZyJywgJ1ZjdEMnLCAnU2hUcicsICdsYXllckNvbmNlYWxzJyxcclxuXHRcdCdzdHJva2VFbmFibGVkJywgJ2ZpbGxFbmFibGVkJywgJ3N0cm9rZVN0eWxlU2NhbGVMb2NrJywgJ3N0cm9rZVN0eWxlU3Ryb2tlQWRqdXN0JyxcclxuXHRcdCdoYXJkUHJvb2YnLCAnTXBCbCcsICdwYXBlcldoaXRlJywgJ3VzZUxlZ2FjeScsICdBdXRvJywgJ0xhYiAnLCAndXNlVGludCcsICdrZXlTaGFwZUludmFsaWRhdGVkJyxcclxuXHRcdCdhdXRvRXhwYW5kRW5hYmxlZCcsICdhdXRvTmVzdEVuYWJsZWQnLCAnYXV0b1Bvc2l0aW9uRW5hYmxlZCcsICdzaHJpbmt3cmFwT25TYXZlRW5hYmxlZCcsXHJcblx0XHQncHJlc2VudCcsICdzaG93SW5EaWFsb2cnLCAnb3ZlcnByaW50JyxcclxuXHRdLFxyXG5cdCdkb3ViJzogW1xyXG5cdFx0J3dhcnBWYWx1ZScsICd3YXJwUGVyc3BlY3RpdmUnLCAnd2FycFBlcnNwZWN0aXZlT3RoZXInLCAnSW50cicsICdXZHRoJywgJ0hnaHQnLFxyXG5cdFx0J3N0cm9rZVN0eWxlTWl0ZXJMaW1pdCcsICdzdHJva2VTdHlsZVJlc29sdXRpb24nLCAnbGF5ZXJUaW1lJywgJ2tleU9yaWdpblJlc29sdXRpb24nLFxyXG5cdFx0J3h4JywgJ3h5JywgJ3l4JywgJ3l5JywgJ3R4JywgJ3R5JyxcclxuXHRdLFxyXG5cdCdVbnRGJzogW1xyXG5cdFx0J1NjbCAnLCAnc2R3TycsICdoZ2xPJywgJ2xhZ2wnLCAnTGFsZCcsICdzcmdSJywgJ2JsdXInLCAnU2Z0bicsICdPcGN0JywgJ0RzdG4nLCAnQW5nbCcsXHJcblx0XHQnQ2ttdCcsICdOb3NlJywgJ0lucHInLCAnU2hkTicsICdzdHJva2VTdHlsZUxpbmVXaWR0aCcsICdzdHJva2VTdHlsZUxpbmVEYXNoT2Zmc2V0JyxcclxuXHRcdCdzdHJva2VTdHlsZU9wYWNpdHknLCAnSCAgICcsICdUb3AgJywgJ0xlZnQnLCAnQnRvbScsICdSZ2h0JywgJ1JzbHQnLFxyXG5cdFx0J3RvcFJpZ2h0JywgJ3RvcExlZnQnLCAnYm90dG9tTGVmdCcsICdib3R0b21SaWdodCcsXHJcblx0XSxcclxuXHQnVmxMcyc6IFtcclxuXHRcdCdDcnYgJywgJ0NscnMnLCAnTW5tICcsICdNeG0gJywgJ1RybnMnLCAncGF0aExpc3QnLCAnc3Ryb2tlU3R5bGVMaW5lRGFzaFNldCcsICdGckxzJyxcclxuXHRcdCdMYVN0JywgJ1RybmYnLCAnbm9uQWZmaW5lVHJhbnNmb3JtJywgJ2tleURlc2NyaXB0b3JMaXN0JywgJ2d1aWRlSW5kZWNlcycsICdncmFkaWVudEZpbGxNdWx0aScsXHJcblx0XHQnc29saWRGaWxsTXVsdGknLCAnZnJhbWVGWE11bHRpJywgJ2lubmVyU2hhZG93TXVsdGknLCAnZHJvcFNoYWRvd011bHRpJyxcclxuXHRdLFxyXG5cdCdPYkFyJzogWydtZXNoUG9pbnRzJywgJ3F1aWx0U2xpY2VYJywgJ3F1aWx0U2xpY2VZJ10sXHJcblx0J29iaiAnOiBbJ251bGwnXSxcclxufTtcclxuXHJcbmNvbnN0IGNoYW5uZWxzID0gW1xyXG5cdCdSZCAgJywgJ0dybiAnLCAnQmwgICcsICdZbGx3JywgJ1lsdyAnLCAnQ3luICcsICdNZ250JywgJ0JsY2snLCAnR3J5ICcsICdMbW5jJywgJ0EgICAnLCAnQiAgICcsXHJcbl07XHJcblxyXG5jb25zdCBmaWVsZFRvQXJyYXlUeXBlOiBEaWN0ID0ge1xyXG5cdCdNbm0gJzogJ2xvbmcnLFxyXG5cdCdNeG0gJzogJ2xvbmcnLFxyXG5cdCdGckxzJzogJ2xvbmcnLFxyXG5cdCdzdHJva2VTdHlsZUxpbmVEYXNoU2V0JzogJ1VudEYnLFxyXG5cdCdUcm5mJzogJ2RvdWInLFxyXG5cdCdub25BZmZpbmVUcmFuc2Zvcm0nOiAnZG91YicsXHJcblx0J2tleURlc2NyaXB0b3JMaXN0JzogJ09iamMnLFxyXG5cdCdncmFkaWVudEZpbGxNdWx0aSc6ICdPYmpjJyxcclxuXHQnc29saWRGaWxsTXVsdGknOiAnT2JqYycsXHJcblx0J2ZyYW1lRlhNdWx0aSc6ICdPYmpjJyxcclxuXHQnaW5uZXJTaGFkb3dNdWx0aSc6ICdPYmpjJyxcclxuXHQnZHJvcFNoYWRvd011bHRpJzogJ09iamMnLFxyXG59O1xyXG5cclxuY29uc3QgZmllbGRUb1R5cGU6IERpY3QgPSB7fTtcclxuXHJcbmZvciAoY29uc3QgdHlwZSBvZiBPYmplY3Qua2V5cyh0eXBlVG9GaWVsZCkpIHtcclxuXHRmb3IgKGNvbnN0IGZpZWxkIG9mIHR5cGVUb0ZpZWxkW3R5cGVdKSB7XHJcblx0XHRmaWVsZFRvVHlwZVtmaWVsZF0gPSB0eXBlO1xyXG5cdH1cclxufVxyXG5cclxuZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhmaWVsZFRvRXh0VHlwZSkpIHtcclxuXHRpZiAoIWZpZWxkVG9UeXBlW2ZpZWxkXSkgZmllbGRUb1R5cGVbZmllbGRdID0gJ09iamMnO1xyXG59XHJcblxyXG5mb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC5rZXlzKGZpZWxkVG9BcnJheUV4dFR5cGUpKSB7XHJcblx0ZmllbGRUb0FycmF5VHlwZVtmaWVsZF0gPSAnT2JqYyc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFR5cGVCeUtleShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcm9vdDogc3RyaW5nKSB7XHJcblx0aWYgKGtleSA9PT0gJ1N6ICAnKSB7XHJcblx0XHRyZXR1cm4gKCdXZHRoJyBpbiB2YWx1ZSkgPyAnT2JqYycgOiAoKCd1bml0cycgaW4gdmFsdWUpID8gJ1VudEYnIDogJ2RvdWInKTtcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1R5cGUnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/ICdlbnVtJyA6ICdsb25nJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ0FudEEnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/ICdlbnVtJyA6ICdib29sJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ0hyem4nIHx8IGtleSA9PT0gJ1ZydGMnIHx8IGtleSA9PT0gJ1RvcCAnIHx8IGtleSA9PT0gJ0xlZnQnIHx8IGtleSA9PT0gJ0J0b20nIHx8IGtleSA9PT0gJ1JnaHQnKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/ICdkb3ViJyA6ICdVbnRGJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1Zyc24nKSB7XHJcblx0XHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/ICdsb25nJyA6ICdPYmpjJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1JkICAnIHx8IGtleSA9PT0gJ0dybiAnIHx8IGtleSA9PT0gJ0JsICAnKSB7XHJcblx0XHRyZXR1cm4gcm9vdCA9PT0gJ2FydGQnID8gJ2xvbmcnIDogJ2RvdWInO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnVHJuZicpIHtcclxuXHRcdHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdWbExzJyA6ICdPYmpjJztcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIGZpZWxkVG9UeXBlW2tleV07XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0cmV0dXJuIHJlYWRBc2NpaVN0cmluZyhyZWFkZXIsIGxlbmd0aCB8fCA0KTtcclxufVxyXG5cclxuZnVuY3Rpb24gd3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IHN0cmluZykge1xyXG5cdGlmICh2YWx1ZS5sZW5ndGggPT09IDQgJiYgdmFsdWUgIT09ICd3YXJwJykge1xyXG5cdFx0Ly8gd3JpdGUgY2xhc3NJZFxyXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIDApO1xyXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB2YWx1ZSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdC8vIHdyaXRlIGFzY2lpIHN0cmluZ1xyXG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmxlbmd0aCk7XHJcblxyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdmFsdWUuY2hhckNvZGVBdChpKSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZERlc2NyaXB0b3JTdHJ1Y3R1cmUocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCBvYmplY3Q6IGFueSA9IHt9O1xyXG5cdC8vIG9iamVjdC5fX3N0cnVjdCA9XHJcblx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0Y29uc3QgaXRlbXNDb3VudCA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtc0NvdW50OyBpKyspIHtcclxuXHRcdGNvbnN0IGtleSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGA+ICcke2tleX0nICcke3R5cGV9J2ApO1xyXG5cdFx0Y29uc3QgZGF0YSA9IHJlYWRPU1R5cGUocmVhZGVyLCB0eXBlKTtcclxuXHRcdC8vIGlmICghZ2V0VHlwZUJ5S2V5KGtleSwgZGF0YSkpIGNvbnNvbGUubG9nKGA+ICcke2tleX0nICcke3R5cGV9J2AsIGRhdGEpO1xyXG5cdFx0b2JqZWN0W2tleV0gPSBkYXRhO1xyXG5cdH1cclxuXHQvLyBjb25zb2xlLmxvZygnLy8nLCBzdHJ1Y3QpO1xyXG5cdHJldHVybiBvYmplY3Q7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZURlc2NyaXB0b3JTdHJ1Y3R1cmUod3JpdGVyOiBQc2RXcml0ZXIsIG5hbWU6IHN0cmluZywgY2xhc3NJZDogc3RyaW5nLCB2YWx1ZTogYW55LCByb290OiBzdHJpbmcpIHtcclxuXHRpZiAobG9nRXJyb3JzICYmICFjbGFzc0lkKSBjb25zb2xlLmxvZygnTWlzc2luZyBjbGFzc0lkIGZvcjogJywgbmFtZSwgY2xhc3NJZCwgdmFsdWUpO1xyXG5cclxuXHQvLyB3cml0ZSBjbGFzcyBzdHJ1Y3R1cmVcclxuXHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIG5hbWUpO1xyXG5cdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBjbGFzc0lkKTtcclxuXHJcblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcclxuXHR3cml0ZVVpbnQzMih3cml0ZXIsIGtleXMubGVuZ3RoKTtcclxuXHJcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG5cdFx0bGV0IHR5cGUgPSBnZXRUeXBlQnlLZXkoa2V5LCB2YWx1ZVtrZXldLCByb290KTtcclxuXHRcdGxldCBleHRUeXBlID0gZmllbGRUb0V4dFR5cGVba2V5XTtcclxuXHJcblx0XHRpZiAoKGtleSA9PT0gJ1N0cnQnIHx8IGtleSA9PT0gJ0JyZ2gnKSAmJiAnSCAgICcgaW4gdmFsdWUpIHtcclxuXHRcdFx0dHlwZSA9ICdkb3ViJztcclxuXHRcdH0gZWxzZSBpZiAoY2hhbm5lbHMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xyXG5cdFx0XHR0eXBlID0gKGNsYXNzSWQgPT09ICdSR0JDJyAmJiByb290ICE9PSAnYXJ0ZCcpID8gJ2RvdWInIDogJ2xvbmcnO1xyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdwcm9maWxlJykge1xyXG5cdFx0XHR0eXBlID0gY2xhc3NJZCA9PT0gJ3ByaW50T3V0cHV0JyA/ICdURVhUJyA6ICd0ZHRhJztcclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnc3Ryb2tlU3R5bGVDb250ZW50Jykge1xyXG5cdFx0XHRpZiAodmFsdWVba2V5XVsnQ2xyICddKSB7XHJcblx0XHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAnc29saWRDb2xvckxheWVyJyk7XHJcblx0XHRcdH0gZWxzZSBpZiAodmFsdWVba2V5XS5HcmFkKSB7XHJcblx0XHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAnZ3JhZGllbnRMYXllcicpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlW2tleV0uUHRybikge1xyXG5cdFx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ3BhdHRlcm5MYXllcicpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGxvZ0Vycm9ycyAmJiBjb25zb2xlLmxvZygnSW52YWxpZCBzdHJva2VTdHlsZUNvbnRlbnQgdmFsdWUnLCB2YWx1ZVtrZXldKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdib3VuZHMnICYmIHJvb3QgPT09ICdxdWlsdFdhcnAnKSB7XHJcblx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ2NsYXNzRmxvYXRSZWN0Jyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGV4dFR5cGUgJiYgZXh0VHlwZS5jbGFzc0lEID09PSAnUkdCQycpIHtcclxuXHRcdFx0aWYgKCdIICAgJyBpbiB2YWx1ZVtrZXldKSBleHRUeXBlID0geyBjbGFzc0lEOiAnSFNCQycsIG5hbWU6ICcnIH07XHJcblx0XHRcdC8vIFRPRE86IG90aGVyIGNvbG9yIHNwYWNlc1xyXG5cdFx0fVxyXG5cclxuXHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBrZXkpO1xyXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB0eXBlIHx8ICdsb25nJyk7XHJcblx0XHR3cml0ZU9TVHlwZSh3cml0ZXIsIHR5cGUgfHwgJ2xvbmcnLCB2YWx1ZVtrZXldLCBrZXksIGV4dFR5cGUsIHJvb3QpO1xyXG5cdFx0aWYgKGxvZ0Vycm9ycyAmJiAhdHlwZSkgY29uc29sZS5sb2coYE1pc3NpbmcgZGVzY3JpcHRvciBmaWVsZCB0eXBlIGZvcjogJyR7a2V5fScgaW5gLCB2YWx1ZSk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkT1NUeXBlKHJlYWRlcjogUHNkUmVhZGVyLCB0eXBlOiBzdHJpbmcpIHtcclxuXHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdGNhc2UgJ29iaiAnOiAvLyBSZWZlcmVuY2VcclxuXHRcdFx0cmV0dXJuIHJlYWRSZWZlcmVuY2VTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ09iamMnOiAvLyBEZXNjcmlwdG9yXHJcblx0XHRjYXNlICdHbGJPJzogLy8gR2xvYmFsT2JqZWN0IHNhbWUgYXMgRGVzY3JpcHRvclxyXG5cdFx0XHRyZXR1cm4gcmVhZERlc2NyaXB0b3JTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ1ZsTHMnOiB7IC8vIExpc3RcclxuXHRcdFx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJyAgPicsIHR5cGUpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZE9TVHlwZShyZWFkZXIsIHR5cGUpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGl0ZW1zO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnZG91Yic6IC8vIERvdWJsZVxyXG5cdFx0XHRyZXR1cm4gcmVhZEZsb2F0NjQocmVhZGVyKTtcclxuXHRcdGNhc2UgJ1VudEYnOiB7IC8vIFVuaXQgZG91YmxlXHJcblx0XHRcdGNvbnN0IHVuaXRzID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRGbG9hdDY0KHJlYWRlcik7XHJcblx0XHRcdGlmICghdW5pdHNNYXBbdW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dW5pdHN9YCk7XHJcblx0XHRcdHJldHVybiB7IHVuaXRzOiB1bml0c01hcFt1bml0c10sIHZhbHVlIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdVbkZsJzogeyAvLyBVbml0IGZsb2F0XHJcblx0XHRcdGNvbnN0IHVuaXRzID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRGbG9hdDMyKHJlYWRlcik7XHJcblx0XHRcdGlmICghdW5pdHNNYXBbdW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dW5pdHN9YCk7XHJcblx0XHRcdHJldHVybiB7IHVuaXRzOiB1bml0c01hcFt1bml0c10sIHZhbHVlIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdURVhUJzogLy8gU3RyaW5nXHJcblx0XHRcdHJldHVybiByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnZW51bSc6IHsgLy8gRW51bWVyYXRlZFxyXG5cdFx0XHRjb25zdCB0eXBlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdHJldHVybiBgJHt0eXBlfS4ke3ZhbHVlfWA7XHJcblx0XHR9XHJcblx0XHRjYXNlICdsb25nJzogLy8gSW50ZWdlclxyXG5cdFx0XHRyZXR1cm4gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRjYXNlICdjb21wJzogeyAvLyBMYXJnZSBJbnRlZ2VyXHJcblx0XHRcdGNvbnN0IGxvdyA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgaGlnaCA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0cmV0dXJuIHsgbG93LCBoaWdoIH07XHJcblx0XHR9XHJcblx0XHRjYXNlICdib29sJzogLy8gQm9vbGVhblxyXG5cdFx0XHRyZXR1cm4gISFyZWFkVWludDgocmVhZGVyKTtcclxuXHRcdGNhc2UgJ3R5cGUnOiAvLyBDbGFzc1xyXG5cdFx0Y2FzZSAnR2xiQyc6IC8vIENsYXNzXHJcblx0XHRcdHJldHVybiByZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ2FsaXMnOiB7IC8vIEFsaWFzXHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4gcmVhZEFzY2lpU3RyaW5nKHJlYWRlciwgbGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ3RkdGEnOiB7IC8vIFJhdyBEYXRhXHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4gcmVhZEJ5dGVzKHJlYWRlciwgbGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ09iQXInOiB7IC8vIE9iamVjdCBhcnJheVxyXG5cdFx0XHRyZWFkSW50MzIocmVhZGVyKTsgLy8gdmVyc2lvbjogMTZcclxuXHRcdFx0cmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTsgLy8gbmFtZTogJydcclxuXHRcdFx0cmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7IC8vICdyYXRpb25hbFBvaW50J1xyXG5cdFx0XHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgdHlwZTEgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTsgLy8gdHlwZSBIcnpuIHwgVnJ0Y1xyXG5cdFx0XHRcdHJlYWRTaWduYXR1cmUocmVhZGVyKTsgLy8gVW5GbFxyXG5cclxuXHRcdFx0XHRyZWFkU2lnbmF0dXJlKHJlYWRlcik7IC8vIHVuaXRzID8gJyNQeGwnXHJcblx0XHRcdFx0Y29uc3QgdmFsdWVzQ291bnQgPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZXM6IG51bWJlcltdID0gW107XHJcblx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZXNDb3VudDsgaisrKSB7XHJcblx0XHRcdFx0XHR2YWx1ZXMucHVzaChyZWFkRmxvYXQ2NChyZWFkZXIpKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGl0ZW1zLnB1c2goeyB0eXBlOiB0eXBlMSwgdmFsdWVzIH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gaXRlbXM7XHJcblx0XHR9XHJcblx0XHRjYXNlICdQdGggJzogeyAvLyBGaWxlIHBhdGhcclxuXHRcdFx0Lypjb25zdCBsZW5ndGggPSovIHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBzaWcgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdC8qY29uc3QgcGF0aFNpemUgPSovIHJlYWRJbnQzMkxFKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGNoYXJzQ291bnQgPSByZWFkSW50MzJMRShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBwYXRoID0gcmVhZFVuaWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHJlYWRlciwgY2hhcnNDb3VudCk7XHJcblx0XHRcdHJldHVybiB7IHNpZywgcGF0aCB9O1xyXG5cdFx0fVxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFR5U2ggZGVzY3JpcHRvciBPU1R5cGU6ICR7dHlwZX0gYXQgJHtyZWFkZXIub2Zmc2V0LnRvU3RyaW5nKDE2KX1gKTtcclxuXHR9XHJcbn1cclxuXHJcbmNvbnN0IE9iQXJUeXBlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQ7IH0gPSB7XHJcblx0bWVzaFBvaW50czogJ3JhdGlvbmFsUG9pbnQnLFxyXG5cdHF1aWx0U2xpY2VYOiAnVW50RicsXHJcblx0cXVpbHRTbGljZVk6ICdVbnRGJyxcclxufTtcclxuXHJcbmZ1bmN0aW9uIHdyaXRlT1NUeXBlKHdyaXRlcjogUHNkV3JpdGVyLCB0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBleHRUeXBlOiBOYW1lQ2xhc3NJRCB8IHVuZGVmaW5lZCwgcm9vdDogc3RyaW5nKSB7XHJcblx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRjYXNlICdvYmogJzogLy8gUmVmZXJlbmNlXHJcblx0XHRcdHdyaXRlUmVmZXJlbmNlU3RydWN0dXJlKHdyaXRlciwga2V5LCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnT2JqYyc6IC8vIERlc2NyaXB0b3JcclxuXHRcdGNhc2UgJ0dsYk8nOiAvLyBHbG9iYWxPYmplY3Qgc2FtZSBhcyBEZXNjcmlwdG9yXHJcblx0XHRcdGlmICghZXh0VHlwZSkgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV4dCB0eXBlIGZvcjogJyR7a2V5fScgKCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSlgKTtcclxuXHRcdFx0d3JpdGVEZXNjcmlwdG9yU3RydWN0dXJlKHdyaXRlciwgZXh0VHlwZS5uYW1lLCBleHRUeXBlLmNsYXNzSUQsIHZhbHVlLCByb290KTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdWbExzJzogLy8gTGlzdFxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUubGVuZ3RoKTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCB0eXBlID0gZmllbGRUb0FycmF5VHlwZVtrZXldO1xyXG5cdFx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycpO1xyXG5cdFx0XHRcdHdyaXRlT1NUeXBlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycsIHZhbHVlW2ldLCAnJywgZmllbGRUb0FycmF5RXh0VHlwZVtrZXldLCByb290KTtcclxuXHRcdFx0XHRpZiAobG9nRXJyb3JzICYmICF0eXBlKSBjb25zb2xlLmxvZyhgTWlzc2luZyBkZXNjcmlwdG9yIGFycmF5IHR5cGUgZm9yOiAnJHtrZXl9JyBpbmAsIHZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ2RvdWInOiAvLyBEb3VibGVcclxuXHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1VudEYnOiAvLyBVbml0IGRvdWJsZVxyXG5cdFx0XHRpZiAoIXVuaXRzTWFwUmV2W3ZhbHVlLnVuaXRzXSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3ZhbHVlLnVuaXRzfSBpbiAke2tleX1gKTtcclxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB1bml0c01hcFJldlt2YWx1ZS51bml0c10pO1xyXG5cdFx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB2YWx1ZS52YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnVW5GbCc6IC8vIFVuaXQgZmxvYXRcclxuXHRcdFx0aWYgKCF1bml0c01hcFJldlt2YWx1ZS51bml0c10pIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt2YWx1ZS51bml0c30gaW4gJHtrZXl9YCk7XHJcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdW5pdHNNYXBSZXZbdmFsdWUudW5pdHNdKTtcclxuXHRcdFx0d3JpdGVGbG9hdDMyKHdyaXRlciwgdmFsdWUudmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1RFWFQnOiAvLyBTdHJpbmdcclxuXHRcdFx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnZW51bSc6IHsgLy8gRW51bWVyYXRlZFxyXG5cdFx0XHRjb25zdCBbX3R5cGUsIHZhbF0gPSB2YWx1ZS5zcGxpdCgnLicpO1xyXG5cdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgX3R5cGUpO1xyXG5cdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgdmFsKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHRjYXNlICdsb25nJzogLy8gSW50ZWdlclxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdC8vIGNhc2UgJ2NvbXAnOiAvLyBMYXJnZSBJbnRlZ2VyXHJcblx0XHQvLyBcdHdyaXRlTGFyZ2VJbnRlZ2VyKHJlYWRlcik7XHJcblx0XHRjYXNlICdib29sJzogLy8gQm9vbGVhblxyXG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgdmFsdWUgPyAxIDogMCk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Ly8gY2FzZSAndHlwZSc6IC8vIENsYXNzXHJcblx0XHQvLyBjYXNlICdHbGJDJzogLy8gQ2xhc3NcclxuXHRcdC8vIFx0d3JpdGVDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Ly8gY2FzZSAnYWxpcyc6IC8vIEFsaWFzXHJcblx0XHQvLyBcdHdyaXRlQWxpYXNTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdGNhc2UgJ3RkdGEnOiAvLyBSYXcgRGF0YVxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUuYnl0ZUxlbmd0aCk7XHJcblx0XHRcdHdyaXRlQnl0ZXMod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnT2JBcic6IHsgLy8gT2JqZWN0IGFycmF5XHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCAxNik7IC8vIHZlcnNpb25cclxuXHRcdFx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCAnJyk7IC8vIG5hbWVcclxuXHRcdFx0Y29uc3QgdHlwZSA9IE9iQXJUeXBlc1trZXldO1xyXG5cdFx0XHRpZiAoIXR5cGUpIHRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkIE9iQXJUeXBlIGZvcjogJHtrZXl9YCk7XHJcblx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCB0eXBlKTtcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmxlbmd0aCk7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHZhbHVlW2ldLnR5cGUpOyAvLyBIcnpuIHwgVnJ0Y1xyXG5cdFx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJ1VuRmwnKTtcclxuXHRcdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICcjUHhsJyk7XHJcblx0XHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlW2ldLnZhbHVlcy5sZW5ndGgpO1xyXG5cclxuXHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IHZhbHVlW2ldLnZhbHVlcy5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdmFsdWVbaV0udmFsdWVzW2pdKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0XHQvLyBjYXNlICdQdGggJzogLy8gRmlsZSBwYXRoXHJcblx0XHQvLyBcdHdyaXRlRmlsZVBhdGgocmVhZGVyKTtcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkIGRlc2NyaXB0b3IgT1NUeXBlOiAke3R5cGV9YCk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkUmVmZXJlbmNlU3RydWN0dXJlKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgaXRlbXNDb3VudCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zQ291bnQ7IGkrKykge1xyXG5cdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHJcblx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0Y2FzZSAncHJvcCc6IHsgLy8gUHJvcGVydHlcclxuXHRcdFx0XHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCBrZXlJRCA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2goa2V5SUQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhc2UgJ0Nsc3MnOiAvLyBDbGFzc1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdFbm1yJzogeyAvLyBFbnVtZXJhdGVkIFJlZmVyZW5jZVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHR5cGVJRCA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdFx0aXRlbXMucHVzaChgJHt0eXBlSUR9LiR7dmFsdWV9YCk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y2FzZSAncmVsZSc6IHsgLy8gT2Zmc2V0XHJcblx0XHRcdFx0Ly8gY29uc3QgeyBuYW1lLCBjbGFzc0lEIH0gPVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZFVpbnQzMihyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXNlICdJZG50JzogLy8gSWRlbnRpZmllclxyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZEludDMyKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdpbmR4JzogLy8gSW5kZXhcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRJbnQzMihyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnbmFtZSc6IHsgLy8gTmFtZVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciByZWZlcmVuY2UgdHlwZTogJHt0eXBlfWApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZVJlZmVyZW5jZVN0cnVjdHVyZSh3cml0ZXI6IFBzZFdyaXRlciwgX2tleTogc3RyaW5nLCBpdGVtczogYW55W10pIHtcclxuXHR3cml0ZUludDMyKHdyaXRlciwgaXRlbXMubGVuZ3RoKTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgdmFsdWUgPSBpdGVtc1tpXTtcclxuXHRcdGxldCB0eXBlID0gJ3Vua25vd24nO1xyXG5cclxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdGlmICgvXlthLXpdK1xcLlthLXpdKyQvaS50ZXN0KHZhbHVlKSkge1xyXG5cdFx0XHRcdHR5cGUgPSAnRW5tcic7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dHlwZSA9ICduYW1lJztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdHlwZSk7XHJcblxyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdC8vIGNhc2UgJ3Byb3AnOiAvLyBQcm9wZXJ0eVxyXG5cdFx0XHQvLyBjYXNlICdDbHNzJzogLy8gQ2xhc3NcclxuXHRcdFx0Y2FzZSAnRW5tcic6IHsgLy8gRW51bWVyYXRlZCBSZWZlcmVuY2VcclxuXHRcdFx0XHRjb25zdCBbdHlwZUlELCBlbnVtVmFsdWVdID0gdmFsdWUuc3BsaXQoJy4nKTtcclxuXHRcdFx0XHR3cml0ZUNsYXNzU3RydWN0dXJlKHdyaXRlciwgJ1xcMCcsIHR5cGVJRCk7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHR5cGVJRCk7XHJcblx0XHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIGVudW1WYWx1ZSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gY2FzZSAncmVsZSc6IC8vIE9mZnNldFxyXG5cdFx0XHQvLyBjYXNlICdJZG50JzogLy8gSWRlbnRpZmllclxyXG5cdFx0XHQvLyBjYXNlICdpbmR4JzogLy8gSW5kZXhcclxuXHRcdFx0Y2FzZSAnbmFtZSc6IHsgLy8gTmFtZVxyXG5cdFx0XHRcdHdyaXRlQ2xhc3NTdHJ1Y3R1cmUod3JpdGVyLCAnXFwwJywgJ0x5ciAnKTtcclxuXHRcdFx0XHR3cml0ZVVuaWNvZGVTdHJpbmcod3JpdGVyLCB2YWx1ZSArICdcXDAnKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXNjcmlwdG9yIHJlZmVyZW5jZSB0eXBlOiAke3R5cGV9YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gaXRlbXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IG5hbWUgPSByZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpO1xyXG5cdGNvbnN0IGNsYXNzSUQgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHQvLyBjb25zb2xlLmxvZyh7IG5hbWUsIGNsYXNzSUQgfSk7XHJcblx0cmV0dXJuIHsgbmFtZSwgY2xhc3NJRCB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZUNsYXNzU3RydWN0dXJlKHdyaXRlcjogUHNkV3JpdGVyLCBuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZykge1xyXG5cdHdyaXRlVW5pY29kZVN0cmluZyh3cml0ZXIsIG5hbWUpO1xyXG5cdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBjbGFzc0lEKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IHZlcnNpb24gPSByZWFkVWludDMyKHJlYWRlcik7XHJcblx0aWYgKHZlcnNpb24gIT09IDE2KSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciB2ZXJzaW9uOiAke3ZlcnNpb259YCk7XHJcblx0Y29uc3QgZGVzYyA9IHJlYWREZXNjcmlwdG9yU3RydWN0dXJlKHJlYWRlcik7XHJcblx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0cmV0dXJuIGRlc2M7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVZlcnNpb25BbmREZXNjcmlwdG9yKHdyaXRlcjogUHNkV3JpdGVyLCBuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZywgZGVzY3JpcHRvcjogYW55LCByb290ID0gJycpIHtcclxuXHR3cml0ZVVpbnQzMih3cml0ZXIsIDE2KTsgLy8gdmVyc2lvblxyXG5cdHdyaXRlRGVzY3JpcHRvclN0cnVjdHVyZSh3cml0ZXIsIG5hbWUsIGNsYXNzSUQsIGRlc2NyaXB0b3IsIHJvb3QpO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVW5pdHMgPSAnQW5nbGUnIHwgJ0RlbnNpdHknIHwgJ0Rpc3RhbmNlJyB8ICdOb25lJyB8ICdQZXJjZW50JyB8ICdQaXhlbHMnIHxcclxuXHQnTWlsbGltZXRlcnMnIHwgJ1BvaW50cycgfCAnUGljYXMnIHwgJ0luY2hlcycgfCAnQ2VudGltZXRlcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0dW5pdHM6IERlc2NyaXB0b3JVbml0cztcclxuXHR2YWx1ZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yQ29sb3IgPSB7XHJcblx0J1JkICAnOiBudW1iZXI7XHJcblx0J0dybiAnOiBudW1iZXI7XHJcblx0J0JsICAnOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0J0ggICAnOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRTdHJ0OiBudW1iZXI7XHJcblx0QnJnaDogbnVtYmVyO1xyXG59IHwge1xyXG5cdCdDeW4gJzogbnVtYmVyO1xyXG5cdE1nbnQ6IG51bWJlcjtcclxuXHQnWWx3ICc6IG51bWJlcjtcclxuXHRCbGNrOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0J0dyeSAnOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0TG1uYzogbnVtYmVyO1xyXG5cdCdBICAgJzogbnVtYmVyO1xyXG5cdCdCICAgJzogbnVtYmVyO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjaXB0b3JQYXR0ZXJuIHtcclxuXHQnTm0gICc6IHN0cmluZztcclxuXHRJZG50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlc2NpcHRvckdyYWRpZW50ID0ge1xyXG5cdCdObSAgJzogc3RyaW5nO1xyXG5cdEdyZEY6ICdHcmRGLkNzdFMnO1xyXG5cdEludHI6IG51bWJlcjtcclxuXHRDbHJzOiB7XHJcblx0XHQnQ2xyICc6IERlc2NyaXB0b3JDb2xvcjtcclxuXHRcdFR5cGU6ICdDbHJ5LlVzclMnO1xyXG5cdFx0TGN0bjogbnVtYmVyO1xyXG5cdFx0TWRwbjogbnVtYmVyO1xyXG5cdH1bXTtcclxuXHRUcm5zOiB7XHJcblx0XHRPcGN0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdExjdG46IG51bWJlcjtcclxuXHRcdE1kcG46IG51bWJlcjtcclxuXHR9W107XHJcbn0gfCB7XHJcblx0R3JkRjogJ0dyZEYuQ2xOcyc7XHJcblx0U210aDogbnVtYmVyO1xyXG5cdCdObSAgJzogc3RyaW5nO1xyXG5cdENsclM6IHN0cmluZztcclxuXHRSbmRTOiBudW1iZXI7XHJcblx0VmN0Qz86IGJvb2xlYW47XHJcblx0U2hUcj86IGJvb2xlYW47XHJcblx0J01ubSAnOiBudW1iZXJbXTtcclxuXHQnTXhtICc6IG51bWJlcltdO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yQ29sb3JDb250ZW50IHtcclxuXHQnQ2xyICc6IERlc2NyaXB0b3JDb2xvcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50IHtcclxuXHRHcmFkOiBEZXNjaXB0b3JHcmFkaWVudDtcclxuXHRUeXBlOiBzdHJpbmc7XHJcblx0RHRocj86IGJvb2xlYW47XHJcblx0UnZycz86IGJvb2xlYW47XHJcblx0QW5nbD86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdCdTY2wgJz86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdEFsZ24/OiBib29sZWFuO1xyXG5cdE9mc3Q/OiB7IEhyem46IERlc2NyaXB0b3JVbml0c1ZhbHVlOyBWcnRjOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTsgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9yUGF0dGVybkNvbnRlbnQge1xyXG5cdFB0cm46IERlc2NpcHRvclBhdHRlcm47XHJcblx0TG5rZD86IGJvb2xlYW47XHJcblx0cGhhc2U/OiB7IEhyem46IG51bWJlcjsgVnJ0YzogbnVtYmVyOyB9O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjcmlwdG9yVmVjdG9yQ29udGVudCA9IERlc2NyaXB0b3JDb2xvckNvbnRlbnQgfCBEZXNjcmlwdG9yR3JhZGllbnRDb250ZW50IHwgRGVzY3JpcHRvclBhdHRlcm5Db250ZW50O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdHJva2VEZXNjcmlwdG9yIHtcclxuXHRzdHJva2VTdHlsZVZlcnNpb246IG51bWJlcjtcclxuXHRzdHJva2VFbmFibGVkOiBib29sZWFuO1xyXG5cdGZpbGxFbmFibGVkOiBib29sZWFuO1xyXG5cdHN0cm9rZVN0eWxlTGluZVdpZHRoOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZUxpbmVEYXNoT2Zmc2V0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZU1pdGVyTGltaXQ6IG51bWJlcjtcclxuXHRzdHJva2VTdHlsZUxpbmVDYXBUeXBlOiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVMaW5lSm9pblR5cGU6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQ6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZVNjYWxlTG9jazogYm9vbGVhbjtcclxuXHRzdHJva2VTdHlsZVN0cm9rZUFkanVzdDogYm9vbGVhbjtcclxuXHRzdHJva2VTdHlsZUxpbmVEYXNoU2V0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZVtdO1xyXG5cdHN0cm9rZVN0eWxlQmxlbmRNb2RlOiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVPcGFjaXR5OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRzdHJva2VTdHlsZUNvbnRlbnQ6IERlc2NyaXB0b3JWZWN0b3JDb250ZW50O1xyXG5cdHN0cm9rZVN0eWxlUmVzb2x1dGlvbjogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRleHREZXNjcmlwdG9yIHtcclxuXHQnVHh0ICc6IHN0cmluZztcclxuXHR0ZXh0R3JpZGRpbmc6IHN0cmluZztcclxuXHRPcm50OiBzdHJpbmc7XHJcblx0QW50QTogc3RyaW5nO1xyXG5cdFRleHRJbmRleDogbnVtYmVyO1xyXG5cdEVuZ2luZURhdGE/OiBVaW50OEFycmF5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdhcnBEZXNjcmlwdG9yIHtcclxuXHR3YXJwU3R5bGU6IHN0cmluZztcclxuXHR3YXJwVmFsdWU6IG51bWJlcjtcclxuXHR3YXJwUGVyc3BlY3RpdmU6IG51bWJlcjtcclxuXHR3YXJwUGVyc3BlY3RpdmVPdGhlcjogbnVtYmVyO1xyXG5cdHdhcnBSb3RhdGU6IHN0cmluZztcclxuXHRib3VuZHM/OiB7XHJcblx0XHQnVG9wICc6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0TGVmdDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRCdG9tOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdFJnaHQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdH07XHJcblx0dU9yZGVyOiBudW1iZXI7XHJcblx0dk9yZGVyOiBudW1iZXI7XHJcblx0Y3VzdG9tRW52ZWxvcGVXYXJwPzoge1xyXG5cdFx0bWVzaFBvaW50czoge1xyXG5cdFx0XHR0eXBlOiAnSHJ6bicgfCAnVnJ0Yyc7XHJcblx0XHRcdHZhbHVlczogbnVtYmVyW107XHJcblx0XHR9W107XHJcblx0fTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBRdWlsdFdhcnBEZXNjcmlwdG9yIGV4dGVuZHMgV2FycERlc2NyaXB0b3Ige1xyXG5cdGRlZm9ybU51bVJvd3M6IG51bWJlcjtcclxuXHRkZWZvcm1OdW1Db2xzOiBudW1iZXI7XHJcblx0Y3VzdG9tRW52ZWxvcGVXYXJwOiB7XHJcblx0XHRxdWlsdFNsaWNlWDoge1xyXG5cdFx0XHR0eXBlOiAncXVpbHRTbGljZVgnO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdFx0cXVpbHRTbGljZVk6IHtcclxuXHRcdFx0dHlwZTogJ3F1aWx0U2xpY2VZJztcclxuXHRcdFx0dmFsdWVzOiBudW1iZXJbXTtcclxuXHRcdH1bXTtcclxuXHRcdG1lc2hQb2ludHM6IHtcclxuXHRcdFx0dHlwZTogJ0hyem4nIHwgJ1ZydGMnO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFuZ2xlKHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XHJcblx0aWYgKHgudW5pdHMgIT09ICdBbmdsZScpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt4LnVuaXRzfWApO1xyXG5cdHJldHVybiB4LnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQZXJjZW50KHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgdW5kZWZpbmVkKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XHJcblx0aWYgKHgudW5pdHMgIT09ICdQZXJjZW50JykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3gudW5pdHN9YCk7XHJcblx0cmV0dXJuIHgudmFsdWUgLyAxMDA7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBlcmNlbnRPckFuZ2xlKHg6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgdW5kZWZpbmVkKSB7XHJcblx0aWYgKHggPT09IHVuZGVmaW5lZCkgcmV0dXJuIDE7XHJcblx0aWYgKHgudW5pdHMgPT09ICdQZXJjZW50JykgcmV0dXJuIHgudmFsdWUgLyAxMDA7XHJcblx0aWYgKHgudW5pdHMgPT09ICdBbmdsZScpIHJldHVybiB4LnZhbHVlIC8gMzYwO1xyXG5cdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt4LnVuaXRzfWApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbml0cyh7IHVuaXRzLCB2YWx1ZSB9OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSk6IFVuaXRzVmFsdWUge1xyXG5cdGlmIChcclxuXHRcdHVuaXRzICE9PSAnUGl4ZWxzJyAmJiB1bml0cyAhPT0gJ01pbGxpbWV0ZXJzJyAmJiB1bml0cyAhPT0gJ1BvaW50cycgJiYgdW5pdHMgIT09ICdOb25lJyAmJlxyXG5cdFx0dW5pdHMgIT09ICdQaWNhcycgJiYgdW5pdHMgIT09ICdJbmNoZXMnICYmIHVuaXRzICE9PSAnQ2VudGltZXRlcnMnICYmIHVuaXRzICE9PSAnRGVuc2l0eSdcclxuXHQpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHtKU09OLnN0cmluZ2lmeSh7IHVuaXRzLCB2YWx1ZSB9KX1gKTtcclxuXHR9XHJcblx0cmV0dXJuIHsgdmFsdWUsIHVuaXRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaXRzT3JOdW1iZXIodmFsdWU6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHwgbnVtYmVyLCB1bml0czogVW5pdHMgPSAnUGl4ZWxzJyk6IFVuaXRzVmFsdWUge1xyXG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4geyB2YWx1ZSwgdW5pdHMgfTtcclxuXHRyZXR1cm4gcGFyc2VVbml0cyh2YWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaXRzVG9OdW1iZXIoeyB1bml0cywgdmFsdWUgfTogRGVzY3JpcHRvclVuaXRzVmFsdWUsIGV4cGVjdGVkVW5pdHM6IHN0cmluZyk6IG51bWJlciB7XHJcblx0aWYgKHVuaXRzICE9PSBleHBlY3RlZFVuaXRzKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7SlNPTi5zdHJpbmdpZnkoeyB1bml0cywgdmFsdWUgfSl9YCk7XHJcblx0cmV0dXJuIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNBbmdsZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogRGVzY3JpcHRvclVuaXRzVmFsdWUge1xyXG5cdHJldHVybiB7IHVuaXRzOiAnQW5nbGUnLCB2YWx1ZTogdmFsdWUgfHwgMCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNQZXJjZW50KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0cmV0dXJuIHsgdW5pdHM6ICdQZXJjZW50JywgdmFsdWU6IE1hdGgucm91bmQoKHZhbHVlIHx8IDApICogMTAwKSB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdW5pdHNWYWx1ZSh4OiBVbml0c1ZhbHVlIHwgdW5kZWZpbmVkLCBrZXk6IHN0cmluZyk6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHtcclxuXHRpZiAoeCA9PSBudWxsKSByZXR1cm4geyB1bml0czogJ1BpeGVscycsIHZhbHVlOiAwIH07XHJcblxyXG5cdGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpXHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSkgKHNob3VsZCBoYXZlIHZhbHVlIGFuZCB1bml0cylgKTtcclxuXHJcblx0Y29uc3QgeyB1bml0cywgdmFsdWUgfSA9IHg7XHJcblxyXG5cdGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKVxyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlIGluICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSlgKTtcclxuXHJcblx0aWYgKFxyXG5cdFx0dW5pdHMgIT09ICdQaXhlbHMnICYmIHVuaXRzICE9PSAnTWlsbGltZXRlcnMnICYmIHVuaXRzICE9PSAnUG9pbnRzJyAmJiB1bml0cyAhPT0gJ05vbmUnICYmXHJcblx0XHR1bml0cyAhPT0gJ1BpY2FzJyAmJiB1bml0cyAhPT0gJ0luY2hlcycgJiYgdW5pdHMgIT09ICdDZW50aW1ldGVycycgJiYgdW5pdHMgIT09ICdEZW5zaXR5J1xyXG5cdCkge1xyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzIGluICR7SlNPTi5zdHJpbmdpZnkoeCl9IChrZXk6ICR7a2V5fSlgKTtcclxuXHR9XHJcblxyXG5cdHJldHVybiB7IHVuaXRzLCB2YWx1ZSB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdGV4dEdyaWRkaW5nID0gY3JlYXRlRW51bTxUZXh0R3JpZGRpbmc+KCd0ZXh0R3JpZGRpbmcnLCAnbm9uZScsIHtcclxuXHRub25lOiAnTm9uZScsXHJcblx0cm91bmQ6ICdSbmQgJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgT3JudCA9IGNyZWF0ZUVudW08T3JpZW50YXRpb24+KCdPcm50JywgJ2hvcml6b250YWwnLCB7XHJcblx0aG9yaXpvbnRhbDogJ0hyem4nLFxyXG5cdHZlcnRpY2FsOiAnVnJ0YycsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFubnQgPSBjcmVhdGVFbnVtPEFudGlBbGlhcz4oJ0FubnQnLCAnc2hhcnAnLCB7XHJcblx0bm9uZTogJ0Fubm8nLFxyXG5cdHNoYXJwOiAnYW50aUFsaWFzU2hhcnAnLFxyXG5cdGNyaXNwOiAnQW5DcicsXHJcblx0c3Ryb25nOiAnQW5TdCcsXHJcblx0c21vb3RoOiAnQW5TbScsXHJcblx0cGxhdGZvcm06ICdhbnRpQWxpYXNQbGF0Zm9ybUdyYXknLFxyXG5cdHBsYXRmb3JtTENEOiAnYW50aUFsaWFzUGxhdGZvcm1MQ0QnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCB3YXJwU3R5bGUgPSBjcmVhdGVFbnVtPFdhcnBTdHlsZT4oJ3dhcnBTdHlsZScsICdub25lJywge1xyXG5cdG5vbmU6ICd3YXJwTm9uZScsXHJcblx0YXJjOiAnd2FycEFyYycsXHJcblx0YXJjTG93ZXI6ICd3YXJwQXJjTG93ZXInLFxyXG5cdGFyY1VwcGVyOiAnd2FycEFyY1VwcGVyJyxcclxuXHRhcmNoOiAnd2FycEFyY2gnLFxyXG5cdGJ1bGdlOiAnd2FycEJ1bGdlJyxcclxuXHRzaGVsbExvd2VyOiAnd2FycFNoZWxsTG93ZXInLFxyXG5cdHNoZWxsVXBwZXI6ICd3YXJwU2hlbGxVcHBlcicsXHJcblx0ZmxhZzogJ3dhcnBGbGFnJyxcclxuXHR3YXZlOiAnd2FycFdhdmUnLFxyXG5cdGZpc2g6ICd3YXJwRmlzaCcsXHJcblx0cmlzZTogJ3dhcnBSaXNlJyxcclxuXHRmaXNoZXllOiAnd2FycEZpc2hleWUnLFxyXG5cdGluZmxhdGU6ICd3YXJwSW5mbGF0ZScsXHJcblx0c3F1ZWV6ZTogJ3dhcnBTcXVlZXplJyxcclxuXHR0d2lzdDogJ3dhcnBUd2lzdCcsXHJcblx0Y3VzdG9tOiAnd2FycEN1c3RvbScsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJsbk0gPSBjcmVhdGVFbnVtPEJsZW5kTW9kZT4oJ0Jsbk0nLCAnbm9ybWFsJywge1xyXG5cdCdub3JtYWwnOiAnTnJtbCcsXHJcblx0J2Rpc3NvbHZlJzogJ0RzbHYnLFxyXG5cdCdkYXJrZW4nOiAnRHJrbicsXHJcblx0J211bHRpcGx5JzogJ01sdHAnLFxyXG5cdCdjb2xvciBidXJuJzogJ0NCcm4nLFxyXG5cdCdsaW5lYXIgYnVybic6ICdsaW5lYXJCdXJuJyxcclxuXHQnZGFya2VyIGNvbG9yJzogJ2RhcmtlckNvbG9yJyxcclxuXHQnbGlnaHRlbic6ICdMZ2huJyxcclxuXHQnc2NyZWVuJzogJ1Njcm4nLFxyXG5cdCdjb2xvciBkb2RnZSc6ICdDRGRnJyxcclxuXHQnbGluZWFyIGRvZGdlJzogJ2xpbmVhckRvZGdlJyxcclxuXHQnbGlnaHRlciBjb2xvcic6ICdsaWdodGVyQ29sb3InLFxyXG5cdCdvdmVybGF5JzogJ092cmwnLFxyXG5cdCdzb2Z0IGxpZ2h0JzogJ1NmdEwnLFxyXG5cdCdoYXJkIGxpZ2h0JzogJ0hyZEwnLFxyXG5cdCd2aXZpZCBsaWdodCc6ICd2aXZpZExpZ2h0JyxcclxuXHQnbGluZWFyIGxpZ2h0JzogJ2xpbmVhckxpZ2h0JyxcclxuXHQncGluIGxpZ2h0JzogJ3BpbkxpZ2h0JyxcclxuXHQnaGFyZCBtaXgnOiAnaGFyZE1peCcsXHJcblx0J2RpZmZlcmVuY2UnOiAnRGZybicsXHJcblx0J2V4Y2x1c2lvbic6ICdYY2x1JyxcclxuXHQnc3VidHJhY3QnOiAnYmxlbmRTdWJ0cmFjdGlvbicsXHJcblx0J2RpdmlkZSc6ICdibGVuZERpdmlkZScsXHJcblx0J2h1ZSc6ICdIICAgJyxcclxuXHQnc2F0dXJhdGlvbic6ICdTdHJ0JyxcclxuXHQnY29sb3InOiAnQ2xyICcsXHJcblx0J2x1bWlub3NpdHknOiAnTG1ucycsXHJcblx0Ly8gdXNlZCBpbiBBQlJcclxuXHQnbGluZWFyIGhlaWdodCc6ICdsaW5lYXJIZWlnaHQnLFxyXG5cdCdoZWlnaHQnOiAnSGdodCcsXHJcblx0J3N1YnRyYWN0aW9uJzogJ1NidHInLCAvLyAybmQgdmVyc2lvbiBvZiBzdWJ0cmFjdCA/XHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFU2wgPSBjcmVhdGVFbnVtPEJldmVsU3R5bGU+KCdCRVNsJywgJ2lubmVyIGJldmVsJywge1xyXG5cdCdpbm5lciBiZXZlbCc6ICdJbnJCJyxcclxuXHQnb3V0ZXIgYmV2ZWwnOiAnT3RyQicsXHJcblx0J2VtYm9zcyc6ICdFbWJzJyxcclxuXHQncGlsbG93IGVtYm9zcyc6ICdQbEViJyxcclxuXHQnc3Ryb2tlIGVtYm9zcyc6ICdzdHJva2VFbWJvc3MnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBidmxUID0gY3JlYXRlRW51bTxCZXZlbFRlY2huaXF1ZT4oJ2J2bFQnLCAnc21vb3RoJywge1xyXG5cdCdzbW9vdGgnOiAnU2ZCTCcsXHJcblx0J2NoaXNlbCBoYXJkJzogJ1ByQkwnLFxyXG5cdCdjaGlzZWwgc29mdCc6ICdTbG10JyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQkVTcyA9IGNyZWF0ZUVudW08QmV2ZWxEaXJlY3Rpb24+KCdCRVNzJywgJ3VwJywge1xyXG5cdHVwOiAnSW4gICcsXHJcblx0ZG93bjogJ091dCAnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBCRVRFID0gY3JlYXRlRW51bTxHbG93VGVjaG5pcXVlPignQkVURScsICdzb2Z0ZXInLCB7XHJcblx0c29mdGVyOiAnU2ZCTCcsXHJcblx0cHJlY2lzZTogJ1ByQkwnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBJR1NyID0gY3JlYXRlRW51bTxHbG93U291cmNlPignSUdTcicsICdlZGdlJywge1xyXG5cdGVkZ2U6ICdTcmNFJyxcclxuXHRjZW50ZXI6ICdTcmNDJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgR3JkVCA9IGNyZWF0ZUVudW08R3JhZGllbnRTdHlsZT4oJ0dyZFQnLCAnbGluZWFyJywge1xyXG5cdGxpbmVhcjogJ0xuciAnLFxyXG5cdHJhZGlhbDogJ1JkbCAnLFxyXG5cdGFuZ2xlOiAnQW5nbCcsXHJcblx0cmVmbGVjdGVkOiAnUmZsYycsXHJcblx0ZGlhbW9uZDogJ0RtbmQnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBncmFkaWVudEludGVycG9sYXRpb25NZXRob2RUeXBlID0gY3JlYXRlRW51bTxJbnRlcnBvbGF0aW9uTWV0aG9kPignZ3JhZGllbnRJbnRlcnBvbGF0aW9uTWV0aG9kVHlwZScsICdwZXJjZXB0dWFsJywge1xyXG5cdHBlcmNlcHR1YWw6ICdQZXJjJyxcclxuXHRsaW5lYXI6ICdMbnInLFxyXG5cdGNsYXNzaWM6ICdHY2xzJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQ2xyUyA9IGNyZWF0ZUVudW08J3JnYicgfCAnaHNiJyB8ICdsYWInPignQ2xyUycsICdyZ2InLCB7XHJcblx0cmdiOiAnUkdCQycsXHJcblx0aHNiOiAnSFNCbCcsXHJcblx0bGFiOiAnTGJDbCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZTdGwgPSBjcmVhdGVFbnVtPCdpbnNpZGUnIHwgJ2NlbnRlcicgfCAnb3V0c2lkZSc+KCdGU3RsJywgJ291dHNpZGUnLCB7XHJcblx0b3V0c2lkZTogJ091dEYnLFxyXG5cdGNlbnRlcjogJ0N0ckYnLFxyXG5cdGluc2lkZTogJ0luc0YnXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZyRmwgPSBjcmVhdGVFbnVtPCdjb2xvcicgfCAnZ3JhZGllbnQnIHwgJ3BhdHRlcm4nPignRnJGbCcsICdjb2xvcicsIHtcclxuXHRjb2xvcjogJ1NDbHInLFxyXG5cdGdyYWRpZW50OiAnR3JGbCcsXHJcblx0cGF0dGVybjogJ1B0cm4nLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVDYXBUeXBlID0gY3JlYXRlRW51bTxMaW5lQ2FwVHlwZT4oJ3N0cm9rZVN0eWxlTGluZUNhcFR5cGUnLCAnYnV0dCcsIHtcclxuXHRidXR0OiAnc3Ryb2tlU3R5bGVCdXR0Q2FwJyxcclxuXHRyb3VuZDogJ3N0cm9rZVN0eWxlUm91bmRDYXAnLFxyXG5cdHNxdWFyZTogJ3N0cm9rZVN0eWxlU3F1YXJlQ2FwJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUgPSBjcmVhdGVFbnVtPExpbmVKb2luVHlwZT4oJ3N0cm9rZVN0eWxlTGluZUpvaW5UeXBlJywgJ21pdGVyJywge1xyXG5cdG1pdGVyOiAnc3Ryb2tlU3R5bGVNaXRlckpvaW4nLFxyXG5cdHJvdW5kOiAnc3Ryb2tlU3R5bGVSb3VuZEpvaW4nLFxyXG5cdGJldmVsOiAnc3Ryb2tlU3R5bGVCZXZlbEpvaW4nLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQgPSBjcmVhdGVFbnVtPExpbmVBbGlnbm1lbnQ+KCdzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQnLCAnaW5zaWRlJywge1xyXG5cdGluc2lkZTogJ3N0cm9rZVN0eWxlQWxpZ25JbnNpZGUnLFxyXG5cdGNlbnRlcjogJ3N0cm9rZVN0eWxlQWxpZ25DZW50ZXInLFxyXG5cdG91dHNpZGU6ICdzdHJva2VTdHlsZUFsaWduT3V0c2lkZScsXHJcbn0pO1xyXG4iXSwic291cmNlUm9vdCI6IkM6XFxQcm9qZWN0c1xcZ2l0aHViXFxhZy1wc2RcXHNyYyJ9